深度理解:关于WM_SETREDRAW消息的理解
作者:BlogUpdater |
时间:2017-08-30 |
浏览:7020 |
评论已关闭 条评论
在解决一个界面控件闪烁的问题之后,我对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);
如需转载,请注明来自:拓扑梅尔智慧办公平台 | TopomelBox 官方站点
- 下一篇: 参考:Visual Studio 各版本对应关系
- 上一篇: 小技巧:解决C4996警告的一种方法
相关推荐
- 实战经验:避免在组件接口中使用unsigned
- Posted on 07月15日
- 用上Visual Studio后,我的世界游戏的构建时间减少了一半
- Posted on 02月16日
- 实战经验:Linux Source NAT在Ping场景下的应用
- Posted on 06月28日
- 错误信息:操作被 SCardCancel 请求所取消
- Posted on 08月18日
评论已关闭。