我正在尝试动态更改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();

08-04 06:24