我相信

要让未来的自己,喜欢自己的模样。

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 表示键盘上数字“ ”到“ ”键 (ASCII 码为 0x30 - 0x39) 

VK_A  VK_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 表示数字键盘上  ”到“ ”键。

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 的位置进行控制(分别按下上、下、左、右键使其分别向上、下、左、右方向移动 个屏幕单位):

{

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

Switch(nChar)

{

case VK_LEFT;

    Object1.left=Object1.left-5;      // 按下左键控件左移 个单位

    break;

case VK_RIGHT;

    Object1.left=Object1.left+5;      // 按下右键控件右移 个单位

    break;

case VK_UP;

    Object1.top=Object1.top-5;      // 按下上键控件上移 个单位

    break;

case VK_DOWN;

    Object1.top=Object1.top+5;      // 按下下键控件下移 个单位

    break;

defult:

    break;

}

2. 对鼠标的响应

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; // 按下鼠标左键后控件的水平和垂直方向的值分别与鼠标的光标位置一致

 

    

文章转帖自:http://www.cppblog.com/jxliu02/articles/4473.html

posted on 2012-04-19 22:45 sarah 阅读(350) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


My Links

Blog Stats

常用链接

留言簿

随笔档案(5)

文章分类(7)

文章档案(8)

BLOG

最新随笔

搜索

最新评论

阅读排行榜

评论排行榜