指定坐标的直线。 5.2 非静态对话框
5.3 通用对话框
6常用控件
6.1 公共控件 6.2 容器
6.3 数据控件
7 键盘鼠标事件
7.1键盘事件
为了使用户掌握键盘消息及其处理消息,介绍一个键盘消息处理实例。 1.实例说明
本实例通过工程向导创建一个单文档工程,在其中响应键盘的WM_KEYDOWN、WM_KEYUP、WM_CHAR消息,实现下面的功能:
当用户按下了Shift键,在视图窗口中显示提示信息“用户按下了Shift键”;
当用户释放了Shift键时,在视图窗口中显示提示信息“用户释放了Shift键!”;
当用户按下了Shift键后又按下了字符“B”键,在视图窗口中显示提示信息“用户同时按下了Shift键和B键”(即输入B键或b键)。 2.开发过程 (1)创建工程。
利用MFC AppWizard[EXE]建立一个单文档的MFC工程“KeyboardDemo”。
(2)在ClassView选项卡上用鼠标右键单击该类,并从弹出的快速
菜单中选择[Add Member Variable…]
菜单命令,为KeyboardDemoView类添加一个新的成员变量bShiftdown,将此成员变量的类型设置为BOOL,并将其访问权限设置为Private,
单击[OK]按钮,完成成员变量的添加操作。按照同样的方法,再添加2个BOOL型private成员变量bShiftup和bShiftB,
接下来在KeyboardDemoView构造函数中给三个指示变量赋初值”false”。代码如下:
CKeyboardDemoView::CKeyboardDemoView() {
bShiftdown=bShiftup=bShiftB=false;//赋初值 }
(3)利用“建立类向导”添加键盘消息及处理函数,步骤如下: 在”ClassName”列表框中,选择键盘消息的处理函数”CKeyboardDemoView”,在”Object IDs”列表框中选择“CKeyboardDemoView”,
则在“Message”列表框中,列出了MFC为其预定义的消息,分别选择WM_KEYDOWN、WM_KEYUP、WM_CHAR消息, 单击“Add Function”按钮,MFC就会为其自动添加相应的消息映射宏和消息处理函数。
(4)添加实现代码:在资源文件“KeyboardDemoView.cpp”中添加各键盘消息函数的实现代码。
OnKeyDown函数的代码如下:
void CKeyboardDemoView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {
if(nChar==VK_SHIFT)//判断Shift键是否被按下 {
bShiftdown=true; bShiftup=false;
Invalidate(true); //显示信息 }
CView::OnKeyDown(nChar, nRepCnt, nFlags); }
注:Invalidate(TRUE)将整个窗口设置为需要重绘的无效区域,它会产生WM_PAINT消息,这样OnDraw将被调用。 OnKeyUp函数的代码如下:
void CKeyboardDemoView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) {
if(nChar==VK_SHIFT)//判断Shift键是否被释放 {
bShiftup=true; bShiftdown=false;
Invalidate(true);//显示信息 }
CView::OnKeyUp(nChar, nRepCnt, nFlags); }
OnChar函数的代码如下:
void CKeyboardDemoView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) {
//判断是否同时敲击了字符键B键和Shift键 if((nChar=='b')|(nChar=='B')) //if((nChar==66)|(nChar==98)) {
if(bShiftdown) {
bShiftB=true; bShiftdown=false; Invalidate(true); } }
CView::OnChar(nChar, nRepCnt, nFlags); }
在资源文件”KeyboardDemoView.cpp”的OnDraw函数中,实现在客