设为首页 加入收藏

TOP

14.4.1 鼠标发出的消息
2013-10-07 16:12:38 来源: 作者: 【 】 浏览:79
Tags:14.4.1 鼠标 发出 消息

14.4.1  鼠标发出的消息

当程序用户绘制某个形状时,他们将与特定的文档视图发生交互作用。因此,视图类明显是存放鼠标消息处理程序的地方。在Class View窗格中右击类名CSketcherView,然后从上下文菜单中选择Properties菜单项,显示它的属性窗口。然后,如果单击消息按钮(如果不知道哪个按钮是消息按钮,可以等待出现按钮工具提示),则出现一个消息ID的列表。这些消息ID是发送到视图类的标准Windows消息的ID,它们的前缀是WM_(见图14-10)。

目前需要了解如下所示的3种鼠标消息(见表14-4)。

表  14-4

   
   
WM_LBUTTONDOWN
按下鼠标左键时产生的消息
WM_LBUTTONUP
释放鼠标左键时产生的消息
WM_MOUSEMOVE
移动鼠标时产生的消息

这些消息彼此完全无关,它们都将发送到程序的文档视图中,即使程序没有提供它们的处理程序。窗口很有可能在以前没有接收到WM_LBUTTONDOWN消息的情况下接收到WM_LBUTTONUP消息。如果键按下时光标在另一个窗口上,而在释放之前移动到视图窗口,就会发生这种情况。编写这些消息的处理程序时必须牢记这一点。

如果观察一下这个属性窗口中的列表,就可以发现还可能出现其他鼠标消息。根据应用程序的需要,可以选择处理任何一种或者所有消息。概括地说,应当根据以前介绍的绘制直线、矩形、圆和曲线的过程,定义如何处理目前感兴趣的这3种消息。

1. WM_LBUTTONDOWN

这种消息将启动绘制元素的过程。所以需要:

(1) 注意元素绘制过程已经开始。

(2) 把光标当前位置作为定义元素的第一个点记录下来。

2. WM_MOUSEMOVE

这是一个中间阶段,其中将创建和绘制当前元素的临时版本,但是鼠标左键必须处于按下状态,所以需要完成如下步骤:

(1) 检查左键是否已经按下。

(2) 如果已经按下,则删除已经绘制的当前元素的前一个版本。

(3) 如果没有按下,则退出元素创建操作。

(4) 把光标的当前位置记录为当前元素的第二个定义点。

(5) 使用这两个定义点绘制当前元素。

3. WM_LBUTTONUP

这种消息表示绘制元素的过程已经完成,所以需要:

(1) 存储由记录的第一个点定义的元素的最终版本,同时存储鼠标键在第二个点释放时的光标位置。

(2) 记录元素绘制过程的结束。

下面将生成这3种鼠标消息的处理程序。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇14.4 对鼠标进行编程 下一篇14.4.2 鼠标消息处理程序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)