实验5 输入/输出管理 5
1 Windows鼠标处理 背景知识 一台计算机拥有大量的输入设备,而鼠标和键盘是其中最常用的输入设备
实际上,基本的鼠标和键盘处理就像使用Visual C++ 的Class Wizard 在MFC 程序中添加一两个消息响应函数一样简单
鼠标和键盘各自生成自己类型的消息
例如,鼠标生成类似WM_MOUSEMOVE、WM_LBUTTON 和WM_RBUTTONCLK 的Windows 消息
客户区的鼠标消息 客户区就是应用程序可在其中绘图的窗口部分
当鼠标指针滑过应用程序所拥有的窗口客户区时,Windows 将就把客户区鼠标消息传送给应用程序
使用诸如WM_MOUSEMOVE 这类鼠标事件消息,鼠标就可以与应用程序通信
例如,在用户移动鼠标经过应用程序窗口的客户区时,应用程序接收WM_MOUSEMOVE 消息流,不仅通知用户正在移动鼠标,而且通知 Windows 生成WM_MOUSEMOVE消息时鼠标的位置
在鼠标移出应用程序窗口的客户区时,应用程序停止接收客户区鼠标消息
Windows 改为把鼠标消息传送给鼠标碰巧经过的窗口 (包含桌面)
当鼠标返回窗口的客户区时,Windows 重新将鼠标消息传送给应用程序
表 5-1 描述了应用程序可以接收的18 种客户区鼠标消息
表 5-1 客户区鼠标消息 消息 描述 WM_CAPTURECHANGED 窗口失去鼠标捕获 WM_LBUTTONDBLCLK 双击鼠标左键 WM_LBUTTONDOWN 单击鼠标左键 WM_LBUTTONUP 释放鼠标左键 WM_MBUTTONDBLCLK 双击鼠标中键 WM_MBUTTONDOWN 单击鼠标中键 WM_MBUTTONUP 释放鼠标中键 WM_MOUSEACTIVATE 在用户点击鼠标按钮时,鼠标光标位于非活动窗口中 WM_MOUSEHOVER