最近发现CStatic控件有一个奇怪的闪烁问题。
如果一个界面上有两个CStatic控件,同时动态给改变他们的显示内容。当用别的的窗口挡住其中的一个,则另外一个的显示内容每改变一次就闪一下。移开窗口后现象也不消失。
并且有如下的规律:
m_static1.SetWindowText("...");
m_static2.SetWindowText("...");
则m_static1会闪,,m_static2不闪。也就是那个先赋值,那个会闪。
用解决屏幕闪烁的标准方法,在重新响应其PAINT消息后,使用二次缓冲输入也不起作用。
怀疑是DrawText函数有问题,用TextOut函数替换,果然闪烁消除了。但是DrawText的一些的功能,TextOut函数无法做到。
总的来说,DrawText函数中似乎处理了其他的消息,会受界面其他刷新消息的影响;
或者有什么参数可以避免这个问题,没心情细究了。