vc中如何響應鍵盤和鼠標事件

一。響應鍵盤事件:

VC 中用 KeyPress 表示鍵盤響應的所有事件,包括 OnKeyDown 事件(鍵按下)、 OnKeyUp 事件(鍵按下後彈起)和 OnKeyPress 事件(按了某個鍵)。

OnKeyuUp 事件的語法爲  void Object1:: OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags );

OnKeyDown 事件的語法爲  void Object1:: OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );

這裏參數 nChar 代表的是鍵盤上各鍵的代碼,是編寫程序時必須要寫明的,而參數 nRepCnt, nFlags 則可以使用默認值而不必編寫。

下面說明 VC KeyPress 事件中的 nChar 代碼與鍵盤中各鍵的對應關係:

VK_0 VK_9 表示鍵盤上數字“ 0 ”到“ 9 ”鍵 (ASCII 碼爲 0x30 - 0x39)

VK_A VK_Z 表示鍵盤上字母“ A ”到“ Z ”鍵 (ASCII 碼爲 0x41 - 0x5a)

VK_ADD 表示數字鍵盤上的“ + ”鍵。

VK_ALT 表示鍵盤上 ALT ”鍵。

VK_BACK_QUOTE 表示鍵盤上 ` ”鍵。

VK_BACK_SLASH 表示鍵盤上 / ”鍵。

VK_BACK_SPACE 表示鍵盤上 BACKSPACE “鍵。

VK_CAPS_LOCK 表示鍵盤上 CAPS LOCK ”鍵。

VK_CLOSE_BRACKET 表示鍵盤上 ] ”鍵。

VK_COMMA 表示鍵盤上 , ”鍵。

VK_CONTROL 表示鍵盤上 CTRL ”鍵。

VK_DECIMAL 表示數字鍵盤上 . ”鍵。

VK_DELETE 表示鍵盤上 DELETE ”鍵。

VK_DIVIDE 表示鍵盤上 / ”鍵。

VK_DOWN 表示鍵盤上 “向下箭頭”鍵。

VK_END 表示鍵盤上 END ”鍵。

VK_ENTER 表示鍵盤上 ENTER ”鍵。

VK_EQUALS 表示鍵盤上 “=”鍵。

VK_ESCAPE 表示鍵盤上 ESC ”鍵。

VK_F1 VK_F12 表示鍵盤上 F1 ”到“ F12 ”鍵。

VK_HOME 表示鍵盤上 HOME ”鍵。

VK_INSERT 表示鍵盤上 INSTERT ”鍵。

VK_LEFT 表示鍵盤上 “向左箭頭”鍵。

VK_MULTIPLY 表示鍵盤上 * ”鍵。

VK_NUMPAD0 VK_NUMPAD9 表示數字鍵盤上 0 ”到“ 9 ”鍵。

VK_OPEN_BRACKET 表示鍵盤上 [ ”鍵。

VK_PAGE_DOWN 表示鍵盤上 PAGE DOWN ”鍵。

VK_PAGE_UP 表示鍵盤上 PAGE UP ”鍵。

VK_PAUSE 表示鍵盤上 PAUSE ”鍵。

VK_PRINTSCREEN 表示鍵盤上 PRINT SCREEN ”鍵。

VK_RIGHT 表示鍵盤上 “向右箭頭”鍵。

VK_SCROLL_LOCK 表示鍵盤上 SCROLL LOCK ”鍵。

VK_SEMICOLON 表示鍵盤上 “;”鍵。

VK_SHIFT 表示鍵盤上 SHIFT ”鍵。

VK_SPACE 表示鍵盤上 SPACEBAR ”鍵。

VK_SUBTRACT 表示鍵盤上 “-”鍵。

VK_TAB 表示鍵盤上 TAB ”鍵。

VK_UP 表示鍵盤上 “向上箭頭”鍵。

用鍵盤在人機交互中完成對屏幕中物體位置移動的控制功能時常會用到上、下、左、右幾個方向鍵。下面的程序可以完成對某一可視控件 Object1 的位置進行控制(分別按下上、下、左、右鍵使其分別向上、下、左、右方向移動 5 個屏幕單位):

{

CWnd::OnKeyDown(UINT nChar, UINT nRecpCnt, UNIT nFlages);

Switch(nChar)

{

case VK_LEFT;

    Object1.left=Object1.left-5;      // 按下左鍵控件左移 5 個單位

    break;

case VK_RIGHT;

    Object1.left=Object1.left+5;      // 按下右鍵控件右移 5 個單位

    break;

case VK_UP;

    Object1.top=Object1.top-5;      // 按下上鍵控件上移 5 個單位

    break;

case VK_DOWN;

    Object1.top=Object1.top+5;      // 按下下鍵控件下移 5 個單位

    break;

defult:

    break;

}

二. 對鼠標的響應

VC 中對鼠標的響應常用的有以下事件:

    a. OnLButtonDblClk :語法爲 void Object1 Wnd :: OnLButtonDblClk( UINT nFlags, CPoint point ){} ,表示控件對雙擊鼠標左鍵時的響應。

    b. OnLButtonDown :語法爲 void Object1 Wnd :: OnLButtonDown( UINT nFlags, CPoint point ){} ,表示控件對按下鼠標左鍵時的響應。

    c. OnLButtonUp :語法爲 void Object1 Wnd :: OnLButtonUp( UINT nFlags, CPoint point ){} ,表示控件對按下的鼠標左鍵放開後的響應。

    d. OnRButtonDblClk :語法爲 void Object1 Wnd :: OnRButtonDblClk( UINT nFlags, CPoint point ){} ,表示控件對雙擊鼠標右鍵時的響應。

    e. OnRButtonDown :語法爲 void Object1 Wnd :: OnRButtonDown( UINT nFlags, CPoint point ){} ,表示控件對按下鼠標右鍵時的響應。

f. OnRButtonUp :語法爲 void Object1 Wnd :: OnRButtonUp( UINT nFlags, CPoint point ){} ,表示控件對按下的鼠標右鍵放開後的響應。

其中的參數 nFlags 用於指示按下的鍵的代碼,它可以是下面的幾個值或它們的組合:

    MK_CONTROL   表示按下 CTRL

    MK_LBUTTON   表示按下鼠標左鍵;

    MK_MBUTTON   表示按下鼠標中鍵;

    MK_RBUTTON   表示按下鼠標右鍵;

    MK_SHIFT        表示按下 SHIFT 鍵;

Point 參數表示鼠標的光標位置相對於所在窗口的左上角的水平和垂直座標值。

VC 中用鼠標響應事件來完成人機交互中的控制功能是比較容易的。例如把一個控件 Object1 的位置移動到鼠標光標的位置,下面簡單的程序就可完成:

void Object1::OnLButtonDown(UINT nFlags, CPoint point)

{

CPoint Position

Position = point;

Object1->left=Position.x;

Object1->top=Position.y; // 按下鼠標左鍵後控件的水平和垂直方向的值分別與鼠標的光標位置一致

 

}     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章