关于 ::SetWindowLong(m_hWnd, GWL_WNDPROC, (INT_PTR)CWinMsgProc::WindowProc);的问题

yushengl 2016-05-26 08:56:11
我想用::SetWindowLong(m_hWnd, GWL_WNDPROC, (INT_PTR)CWinMsgProc::WindowProc);来获取消息对界面进行重绘,在WindowProc函数中对WM_PAINT进行处理,绘制界面,但是会出现不断的循环触发WM_PAINT消息,界面一直会刷新闪烁,请问这是怎么回事呢?
...全文
263 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2016-05-27
  • 打赏
  • 举报
回复
“但是会出现不断的循环触发WM_PAINT消息” 是因为 窗口 区 一直无效。 要 叫 窗口 有效 , 必须调用 BeginPaint(); 或者 BOOL ValidateRect()
yushengl 2016-05-26
  • 打赏
  • 举报
回复
引用 3 楼 dustpg 的回复:
[quote=引用 2 楼 yushengl 的回复:] [quote=引用 1 楼 dustpg 的回复:] 查看微软的详细说明WM_PAINT 主要看两项: Return value An application returns zero if it processes this message. Remarks
我返回0了,但是还是不停的循环[/quote] 我说了看两项,下面那项太长了,没复制而已[/quote] 我看了,只是看不太明白,兄弟有什么好办法能在响应WM_PAINT之后终止这个消息循环呢?
dustpg 2016-05-26
  • 打赏
  • 举报
回复
引用 2 楼 yushengl 的回复:
[quote=引用 1 楼 dustpg 的回复:] 查看微软的详细说明WM_PAINT 主要看两项: Return value An application returns zero if it processes this message. Remarks
我返回0了,但是还是不停的循环[/quote] 我说了看两项,下面那项太长了,没复制而已
yushengl 2016-05-26
  • 打赏
  • 举报
回复
引用 1 楼 dustpg 的回复:
查看微软的详细说明WM_PAINT 主要看两项: Return value An application returns zero if it processes this message. Remarks
我返回0了,但是还是不停的循环
dustpg 2016-05-26
  • 打赏
  • 举报
回复
查看微软的详细说明WM_PAINT 主要看两项: Return value An application returns zero if it processes this message. Remarks

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧