SDK编程中有效区域与无效区域的盲区WM_PAINT消息何时发送的。。。
2011-10-15 17:27
302 查看
相信学过MFC或者写过 用MFC写过windows应用程序的人都知道 我们可以很简单的创建一个windows应用程序但是却 不知道其中的原理
利用SDK写windows程序的人 对内部原理比较了解但是对于上来就用MFC写程序的人来说 似乎 MFC底层不可触摸 ,因为微软对windows API 封装的太厉害了
我曾经就 WM_PAINT 消息何时发送的以及 Valid Area(有效区域) Invalid Area(无效区域 ) 很模糊
比如说我们打开2个窗体 一个位于另一个的上面 遮住上层窗体的一部分 、、 那么上层窗体被遮住的地方就叫做 Invald Area 无效区域 那么windows 系统会通知应用程序 进行重回这个区域
但是我们发现在 Client Area 客户区域 中只有被遮住的那部分进行了重绘。 有些人会有些不解 。。其实 windows 系统只要求应用程序对 被遮住的无效区域 进行重绘
当遮住的窗体移动的时候 那么操作系统就会发出 WM_PAINT 消息 对应 MFC中的就是 OnDraw()函数 、、、进行重回操作 。 这就是无效区域的重绘
另外 MFC CWnd类中的 Invalidate函数会使Client Area变得无效从而进行重绘
利用SDK写windows程序的人 对内部原理比较了解但是对于上来就用MFC写程序的人来说 似乎 MFC底层不可触摸 ,因为微软对windows API 封装的太厉害了
我曾经就 WM_PAINT 消息何时发送的以及 Valid Area(有效区域) Invalid Area(无效区域 ) 很模糊
比如说我们打开2个窗体 一个位于另一个的上面 遮住上层窗体的一部分 、、 那么上层窗体被遮住的地方就叫做 Invald Area 无效区域 那么windows 系统会通知应用程序 进行重回这个区域
但是我们发现在 Client Area 客户区域 中只有被遮住的那部分进行了重绘。 有些人会有些不解 。。其实 windows 系统只要求应用程序对 被遮住的无效区域 进行重绘
当遮住的窗体移动的时候 那么操作系统就会发出 WM_PAINT 消息 对应 MFC中的就是 OnDraw()函数 、、、进行重回操作 。 这就是无效区域的重绘
另外 MFC CWnd类中的 Invalidate函数会使Client Area变得无效从而进行重绘
相关文章推荐
- SDK编程中有效区域与无效区域的盲区WM_PAINT消息何时发送的。。。
- SDK编程中有效区域与无效区域的盲区WM_PAINT消息何时发送的。。。
- windows 编程随笔——输出文本>>WM_PAINT消息|有效矩形和无效矩形
- 系统何时发送WM_PAINT消息?
- 系统何时发送WM_PAINT消息
- mfc编程之发送wm_paint消息时绘图界面只出现一瞬间
- WM_PAINT中应该用BeginPaint与EndPaint这两个api,它们的功能正是使无效区域恢复(所以WM_PAINT里即使什么都不做,也必须写上BeginPaint与EndPaint)——Delphi里WM_PAINT消息的三个走向都做到了这一点
- Invalidate(TRUE)与Invalidate(FALSE)区别(前者会发送WM_ERASEBKGND消息全部刷新,然后使用WM_PAINT消息绘制,而后者只发送WM_PAINT消息)
- MFC与SDK中的重画问题 。。WM_PAINT消息的处理
- Windows编程入门-WM_PAINT消息
- Windows编程入门-无效区域和有效区域
- Windows GUI WM_PAINT消息一直发送的问题
- 使用SendMessage方法对窗体上的控件进行截图,该方法的思想就是把控件的句柄拿到,对控件发送WM_PAINT消息,并且把希望得到图形对象的句柄当作wParam参数传过去,这样就可以在图形对象得到想要得图形。
- DoModal 的调用会发送 WM_INITDIALOG 消息 WM_ERASEBKG 先于WM_PAINT
- 关于WM_PAINT消息中只重绘无效区的问题
- 无效区域 更新区域 重画 WM_PAINT 的关系和机制
- OnTimer无效(WM_PAINT消息过多)
- Windows程序设计零基础自学_3_Windows程序的显示和更新_之获取设备内容句柄_非WM_PAINT消息期间绘制显示区域
- 无效区域 更新区域 重画 WM_PAINT 的关系和机制(转载总结)
- Win32 SDK基础(12)—— WM_PAINT消息的处理