我正在尝试动态更改CStatic
控件的文本。我的成员变量称为mStatic
类型的CStatic
。我已经将ID更改为IDC_MYSTATIC
而不是IDC_STATIC
。
我想更改控件的文本时正在调用mStatic.SetWindowText("asdfasdf")
。我定期在计时器中执行此操作。
现在,我遇到的问题是,在我调用SetWindowText()
之后,先前的文本不会被擦除。它只会不断堆积,直到我在屏幕上弄乱为止。
父窗口具有带有位图背景的layered属性。我还设置了color_key属性,以便将位图的某种颜色视为透明的(即,将不会绘制它并使鼠标消息通过)。 mStatic控件绘制在不透明的具有位图背景的部分上。
为什么窗口没有失效?
最佳答案
有同样的问题。以下code修复了该问题:
mStatic.SetWindowText("New text");
CRect rect;
mStatic.GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect);
UpdateWindow();