?? 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 + -