深度理解:关于WM_SETREDRAW消息的理解

365bet上网导航 admin 2026-01-08 06:37:34

在解决一个界面控件闪烁的问题之后,我对WM_SETREDRAW这一消息有了更深的理解。

此消息的作用:

这个消息的主要作用在于:它允许或者禁止窗口重绘。通常我们不必要通过发送消息的方式使用它,而是使用函数SetRedraw,如果指定参数FALSE,则窗口重绘被禁止,否则,窗口重绘被允许。

那么窗口重绘被禁止是什么意思?

窗口的绘制一般在WM_PAINT消息中处理,如果窗口重绘被禁止,则WM_PAINT消息不会被处理。这就是SetRedraw(FALSE)调用所起到的效果。

当调用SetRedraw(TRUE)后,窗口重绘被启用,WM_PAINT消息得到正常处理,窗口又开始得到绘制了,并且,这一绘制工作不仅仅是无效区域的重绘,而是整个窗口的重绘。

此消息的应用场景:

通常当我们对一个窗口有大量界面更新时,这个消息可以避免频繁界面更新带来的闪烁。首先调用SetRedraw(FALSE)禁止窗口更新,然后执行窗口界面更新,最后,调用SetRedraw(TRUE)完成一次性窗口重绘。

例如:

m_listCtrl.SetRedraw(FALSE);

m_listCtrl.AddItem(“1”);

m_listCtrl.AddItem(“2”);

m_listCtrl.AddItem(“n”);

m_listCtrl.SetRedraw(TRUE);

相关文章

在Windows下如何查看文件编码格式?

[求助]德鲁伊到底有多少种流派玩法,以及2.6版本有无加强的希望

网易云音乐如何调音效

重磅!中国互金协会公布首批25家银行存管白名单(附详单)

【探索】解密,世界上为什么没有两片相同的树叶?

副本和EC

裁判是瞎吹还是合理判罚?男篮违体犯规解读

金蟾为何物,活体现值如何

中華饅 (日本)