深入GetMessage和PeekMessage[8]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 fireseed 的 blog

代码第一次在系统队列首部找到事件时,并不会马上将其删除。因为鼠标和键盘事件只是队列中的两种事件,而代码会分枝(译者注:类似于c语言中的switch语句)并单独处理每一种类型的事件。

 

处理系统队列中的鼠标事件

下面是处理鼠标事件的步骤。

1.  首先,将计算该事件屏幕坐标的相应窗体。此计算(调用窗体点击测试)以桌面窗体开始,从头至尾的扫描细统中的每一个窗体(包括子窗体),直到找到一个包含这个鼠标坐标点的窗体,并且这个窗体没有任何同样包含这个坐标点的子窗体。

2. 鼠标事件的窗体点击测试

例如:如果图2中的箭头代表当前的鼠标位置,任何的鼠标行为,像单击鼠标键,将生成一个会在b窗体中产生消息的事件。

2.  如果一个窗体使用setcapture捕获鼠标,那么“系统队列扫描”代码将通过普通的点击测试,并将所有的鼠标消息返回到捕获的窗体。例如:如果在图2 中的a窗体调用了setcapture,则在箭头所指位置的所有鼠标行为,将产生窗体a中的消息,而不是窗体b

本文关键:GetMessage; PeekMessage
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top