在視中接收鼠標輸入:
鼠標消息是我們常需要處理的消息,消息分為:鼠標移動,按鈕按下/松開,雙擊。利用ClassWizard可以輕松的添加這幾種消息映射,下面分別講解每種消息的處理。
WM_MOUSEMOVE對應的函數為OnMouseMove( UINT nFlags, CPoint point ),nFlags表明了當前一些按鍵的消息,你可以通過“位與”操作進行檢測。
MK_CONTROL Ctrl鍵是否被按下 Set if the CTRL key is down.
MK_LBUTTON 鼠標左鍵是否被按下 Set if the left mouse button is down.
MK_MBUTTON 鼠標中間鍵是否被按下 Set if the middle mouse button is down.
MK_RBUTTON 鼠標右鍵是否被按下 Set if the right mouse button is down.
MK_SHIFT Shift鍵是否被按下 Set if the SHIFT key is down.
point表示當前鼠標的設備坐標,坐標原點對應視左上角。
WM_LBUTTONDOWN/WM_RBUTTONDOWN(鼠標左/右鍵按下)對應的函數為OnLButtonDown/OnRButtonDown( UINT nFlags, CPoint point )參數意義和OnMouseMove相同。
WM_LBUTTONUP/WM_RBUTTONUP(鼠標左/右鍵松開)對應的函數為OnLButtonUp/OnRButtonUp( UINT nFlags, CPoint point )參數意義和OnMouseMove相同。
WM_LBUTTONDBLCLK/WM_RBUTTONDBLCLK(鼠標左/右鍵雙擊)對應的函數為OnLButtonDblClk/OnRButtonDblClk( UINT nFlags, CPoint point )參數意義和OnMouseMove相同。
下面我用一段偽代碼來講解一下這些消息的用法:
代碼的作用是用鼠標拉出一個矩形
global BOOL fDowned;//是否在拉動
global CPoint ptDown;//按下位置
global CPoint ptUp;//松開位置
OnLButtonDown(UINT nFlags, CPoint point)
{
fDowned=TRUE;
ptUp=ptDown=point;
DrawRect();
...
}
OnMouseMove(UINT nFlags, CPoint point)
{
if(fDowned)<