📄 untitled-04.txt
字号:
的窗口会接收到快速报告光标最近位置的*M.*0仍**0*E消息。悄nd。ws用一种有趣的
方法来投递WM—MOUSEMOVE消息,以防止运行缓慢的应用程序被光标移动时产生的大量
报告位置的消息淹没。Windows并没有把每次移动鼠标产生的WM.MOUSEMOVE消息装填
在消息队列中,而是仅仅在一个内部数据结构中设置了一个标志。下一次应用程序检索消
息时,Windows由于设置了标志,将产生报告当前光标坐标的WM_MOUSEMOVE消息。这
样,应用程序接收到的*M.*0*钮*0*E消息数量正好适合它们处理。如果光标很慢地移
动,除非应用程序忙于执行其他任务,否则会报告光标轨迹上的所有点位置。但是如果光标
飞快地划过屏幕,大多数应用程序只会接收到少数几个WM—MOUSEMOVE消息。
在MFC程序中,消息映射表的输人项将鼠标消息传递给处理这些消息的类成员函数。
表3.2列出了客户区鼠标消息的消息映射宏和消息处理程序名称。
来3.2客户区鼠标消息的消息映射宏和消息处理程序
消息消息映射宏处理函数
WM.LBUrtONDOWN ON.WM.LBUry0NDOWN onLButtonDown
WM.LBUfltl?f)NUP ON.WM.LBUTFONUP onLButtonUp
WM.LBU171?ONDBLCLK ON.WM.LBUrlTI70NDBLCLK onLButtonDblClk
WM.MBUrITI:T)NDOWN ON.WM.MBUrl7lt)NDOWN onMButtonDown
WM.MBUrI7lX)NUP ON.WM.MBUrITIT)NUP onMButtonUp
WM.MBUNONDBLCLK ON.WM.MBUNONDBLCLK onMButtonDblClk
WM.RBUrtONDOWN ON.WM.RBUTh0NDOWN OnRButtonDown
WM.RBUfl71?(:)NU ON.WM.RBUNONUP onRButtonUp
WM.RBUrt0NDBLCLK ON.WM.RBUTI,,xNDBLCLK OnRButtonDblClk
WM.MOUSEMOVE ON.WM.MOUSEMOVE onMouseMove
onLButtonDown和其他客户区鼠标消息处理函数的原型如下:
afx。sg void onNSgName(UINT "FlagS, CPOint point)
其中Point指出光标位置。在WM—xBUNONDOWN和WM.xBUTh0NDBLCLK消息中,当键被
按下时,point指出光标此时的位置。WM.xBUTYONUP消息中,point指出键被释放时光标的
位置。在WM.MOUSEMOVE消息中,point指出最近的光标位置。在所有情况下,位置坐标
都是以相对于窗口客户区左上角的设备坐标而报告的。如果一个WM_LBUTft)NDOWN消
息中point.x的值是32而point.y的值为64则说明鼠标键单击的位置在客户区左上角往右
32像素往下 64像素的地方。如果有必要,可以使用 MFC的 CDC:: DPt。LP函数将这些坐标
转换为逻辑坐标。
"Flags参数指出了消息生成时鼠标键以及Shift键和Ctrl键的状态。通过测试表3-3列
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -