页数:41页文件大小:280.0 KB来源: VisualC++ppt课件
本课件对应课程第4章键盘和鼠标,先区分扫描码与虚拟码并列出常用虚拟键码,说明输入焦点、按键消息与字符消息的分类及字参数长字参数含义,随后给出键盘消息处理的程序示例,再系统讲解光标的加载、鼠标消息的参数取值、组合键监测、鼠标双击与鼠标捕获,最后介绍定时器消息WM_TIMER与SetTimer、KillTimer的用法并给出实例。
4.1键盘消息编程---扫描码和虚拟码扫描码:键盘上的键的唯一标识值,设备相关。
它的值存放在键盘消息的wParam参数中,用以标识哪一个键被按下或释放。
常用虚拟码(一)
| 键名 | 符号常量 |
|---|---|
| 退格键 | VK_BACK |
| 鼠标左按钮 | VK_LBUTTON |
| 制表键 | VK_TAB |
| 鼠标右按钮 | VK_RBUTTON |
| 回车键 | VK_RETURN |
| 鼠标中按钮 | VK_MBUTTON |
| Ctrl键 | VK_CONTROL |
| Shift键 | VK_SHIFT |
| Pause键 | VK_PAUSE |
| Alt键 | VK_MENU |
4.1键盘消息编程---常用的虚拟码说明符号常量名称说明符号常量名称退格键VK_BACK鼠标左按钮VK_LBUTTON制表键VK_TAB鼠标右按钮VK_RBUTTON回车键VK_RETURN鼠标中按钮VK_MBUTTONCtrl键VK_CONTROLShift键VK_SHIFTPause键VK_PAUSEAlt键VK_MENU
常用虚拟码(二)
| 键名 | 符号常量 |
|---|---|
| Esc键 | VK_ESCAPE |
| Caps Lock键 | VK_CAPITAL |
| PageDown键 | VK_NEXT |
| Page Up键 | VK_PRIOR |
| Home键 | VK_HOME |
| End键 | VK_END |
| 右箭头键 | VK_RIGHT |
| 左箭头键 | VK_LEFT |
| 下箭头键 | VK_DOWN |
| 上箭头键 | VK_UP |
| A~Z键 | VK_A~VK_Z |
| 0~9键 | VK_0~VK_9 |
4.1键盘消息编程---常用的虚拟码说明符号常量名称说明符号常量名称Esc键VK_ESCAPECaps Lock键VK_CAPITALPageDown键VK_NEXTPage Up键VK_PRIORHome键VK_HOMEEnd键VK_END右箭头键VK_RIGHT左键头键VK_LEFT下箭头键VK_DOWN上箭头键VK_UPA~Z键VK_A~VK_Z0~9键VK_0~VK_9
4.1键盘消息编程---键盘消息处理过程
本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。
4.1键盘消息编程---输入焦点能够接收键盘消息的窗口称为有“输入焦点”的窗口,这种窗口应是活动窗口及其子窗口。
4.1键盘消息编程---按键消息非系统按键消息:不使用Alt键组合的按键消息。
按键消息对照表
| 含义 | 类型 | 消息 |
|---|---|---|
| 按下了非系统键消息 | 非系统 | WM_KEYDOWN |
| 松开了非系统键消息 | 非系统 | WM_KEYUP |
| 按下了系统键消息 | 系统 | WM_SYSKEYDOWN |
| 松开了系统键消息 | 系统 | WM_SYSKEYUP |
4.1键盘消息编程---按键消息含义类型消息按下了非系统键消息非系统WM_KEYDOWN松开了非系统键消息非系统WM_KEYUP按下了系统键消息系统WM_SYSKEYDOWN松开了系统键消息系统WM_SYSKEYUP
4.1键盘消息编程---按键消息参数wParam:包含了识别按下的键的虚键码。
4.1键盘消息编程---字符消息系统字符消息WM_SYSKEYDOWN、WM_SYSKEYUP产生非系统字符消息WM_KEYDOWN和WM_KEYUP产生
字符消息对照表
| 含义 | 类型 | 消息 |
|---|---|---|
| 非系统字符 | 非系统 | WM_CHAR |
| 非系统死字符 | 非系统 | WM_DEADCHAR |
| 系统字符 | 系统 | WM_SYSCHAR |
| 系统死字符 | 系统 | WM_SYSDEADCHAR |
4.1键盘消息编程---字符消息含义类型消息非系统字符非系统WM_CHAR非系统死字符非系统WM_DEADCHAR系统字符系统WM_SYSCHAR系统死字符系统WM_SYSDEADCHAR
4.2键盘操作程序举例---字符消息处理键盘消息的一般格式如下:case WM_CHAR:}
4.2键盘操作程序举例---字符消息
if(wParam == VK_ESCAPE)……}} 第14页:按键消息处理(一)
4.2键盘操作程序举例---按键消息case WM_KEYDOWN://case WM_KEYUP:{
switch(wParam){ case VK_END:……break;
第15页:按键消息处理(二)
4.2键盘操作程序举例---按键消息case VK_HOME:break; case VK_DELETE:……break; }} 第16页:4.3 鼠标消息编程
4.3鼠标消息编程鼠标:定位输入设备操作:单击、双击和拖动,etc1、光标的使用
- 系统预定义光标Windows中通过光标来指示当前鼠标的位置,在Windows操作系统中预定义了几种光标,并在Windows.h头文件中加以定义。
第17页:预定义光标(一)
预定义光标(一)
系统预定义光标对照表(一) 光标属性描述 符号常量 箭头光标 IDC_ARROW 十字光标 IDC_CROSS I形文本光标 IDC_IBEAM 空图标 IDC_ICON 十字箭头光标 IDC_SIZEALL
4.3鼠标消息编程---预定义光标光标属性描述符号常量箭头光标IDC_ARROW十字光标IDC_CROSSI形文本光标IDC_IBEAM空图标IDC_ICON十字箭头光标IDC_SIZEALL
第18页:预定义光标(二)
预定义光标(二)
系统预定义光标对照表(二) 光标属性描述 符号常量 带有指向东北方和西南方箭头的光标 IDC_SIZENESW 带有指向北方和南方箭头的光标 IDC_SIZENS 带有指向西北方和东南方箭头的光标 IDC_SIZENWSE 带有指向东方和西方箭头的光标 IDC_SIZEWE 垂直箭头光标 IDC_UPARROW 计时光标(也称沙漏光标) IDC_WAIT
4.3鼠标消息编程---预定义光标光标属性描述常量符号带有指向东北方和西南方箭头的光标IDC_SIZENESW带有指向北方和南方箭头的光标IDC_SIZENS带有指向西北方和东南方箭头的光标IDC_SIZENWSE带有指向东方和西方箭头的光标ISC_SIZEWE垂直箭头光标IDC_UPARROW计时光标(也称沙漏光标)IDC_WAIT
原文「带有指向东方和西方箭头的光标」对应常量写作ISC_SIZEWE,按Windows标准应为IDC_SIZEWE,已校正。
第19页:窗口类中加载光标
4.3鼠标消息编程---光标的加载定义窗口类时加载光标WNDCLASS ws;
ws.hCursor = LoadCursor(NULL,IDC_WAIT);
第20页:LoadCursor函数
4.3鼠标消息编程---光标的加载在应用程序中加载光标
HCURSOR LoadCursor(HINSTANCE hInstance, 第21页:SetCursor函数
4.3鼠标消息编程---光标的加载在应用程序中加载光标
HCURSOR SetCursor(HCURSOR hCursor 第22页:加载光标示例
4.3鼠标消息编程---光标的加载程序举例(加载光标):HCURSOR hCursor;
hCursor = LoadCursor(NULL,IDC_CROSS); SetCursor(hCursor);
第23页:鼠标消息(左键)
4.3鼠标消息编程---鼠标消息WM_LBUTTONDOWN:单击鼠标左键时产生WM_LBUTTONUP:放开鼠标左键时产生WM_LBUTTONDBLCLK:双击鼠标左键产生WM_MOUSEMOVE:移动鼠标时产生
第24页:鼠标消息(右键)
4.3鼠标消息编程---鼠标消息WM_RBUTTONDOWN:单击鼠标右键时产生WM_RBUTTONUP:放开鼠标右键时产生WM_RBUTTONDBLCLK:双击鼠标右键产生
第25页:鼠标消息wParam
鼠标消息wParam
鼠标消息字参数wParam取值对照表 含义 值 按下了Ctrl键 MK_CONTROL 按下了鼠标左键 MK_LBUTTON 按下了鼠标中键 MK_MBUTTON 按下了鼠标右键 MK_RBUTTON 按下了键盘上的Shift键 MK_SHIFT
4.3鼠标消息编程---鼠标消息参数wParam:包含了指示各种虚键状态的值。含义值按下键按上的Ctrl键MK_CONTROL按下了鼠标左键MK_LBUTTON按下了鼠标中键MK_MBUTTON按下了鼠标右键MK_RBUTTON按下键盘上的Shift键MK_SHIFT
第26页:鼠标消息lParam
4.3鼠标消息编程---鼠标消息参数lParam:包含了鼠标的位置信息(相当于窗口的左上角为原点的坐标值),低位包含鼠标位置的x坐标值,高位包含鼠标位置的y坐标值。
WORD LOWORD(DWORD dwValue); WORD HIWORD(DWORD dwValue); 程序举例:x = LOWORD(lParam); y = HIWORD(lParam);
第27页:Shift与Ctrl监测
4.3鼠标消息编程---鼠标消息处理对Shift和Ctrl键进行监测case WM_LBUTTONDOWN
if( ( wParam &MK_CONTROL )&&( wParam &MK_SHIFT ))……break;
第28页:鼠标双击
4.3鼠标消息编程---鼠标双击Windows系统默认的时间间隔为0.5秒,也可以调用SetDoubleClickTime()重新设定间隔值。
BOOL SetDoubleClickTime(UINT uInterval 第29页:双击与CS_DBLCLKS
4.3鼠标消息编程---鼠标双击要使窗口函数能接收鼠标双击产生的消息,在注册窗口类时必须具有CS_DBLCLKS属性。 wndclass.style = CS_HEADRAW|CS_VERDRAW|CS_DBLCLKS; 若窗口不包含上述属性的定义,即使进行了双击操作,该窗口也只能接收到两条单击消息。
第30页:鼠标捕获
4.3鼠标消息编程---鼠标捕获捕获鼠标消息可调用SetCapture()函数,一旦从窗口捕获了鼠标,系统的键盘功能就暂时失效,其它窗口也无法得到鼠标消息。
HWND SetCapture( HWND hWnd ); 当该窗口不再需要捕获鼠标消息时,应及时调用ReleaseCapture()以释放鼠标。BOOL ReleaseCapture(VOID);
第31页:sprintf函数
4.3鼠标消息编程---常用函数sprintf
int sprintf(char* buffer,const char* format[,argument]…); 程序举例:char buffer[30]; int x,y; sprintf(buffer,”x=%d,y=%d”,x,y);
第32页:MessageBox函数
4.3鼠标消息编程---常用函数MessageBox
int MessageBox(HWND hWnd, 第33页:MessageBox样式(一)
MessageBox样式(一)
MessageBox消息框样式取值(一) 说明 标识符 三个按钮:Abort, Retry, Ignore. MB_ABORTRETRYIGNORE 一个按钮:OK. MB_OK 二个按钮:OK,Cancel. MB_OKCANCEL
4.3鼠标消息编程---常用函数MessageBoxUINT uType说明标识符三个按钮: Abort, Retry, Ignore.MB_ABORTRETRYIGNORE一个按钮: OK.MB_OK二个按钮: OK,Cancel.MB_OKCANCEL
第34页:MessageBox样式(二)
MessageBox样式(二)
MessageBox消息框样式取值(二) 说明 标识符 二个按钮:Retry,Cancel. MB_RETRYCANCEL 二个按钮:Yes,No. MB_YESNO 三个按钮:Yes, No, Cancel. MB_YESNOCANCEL
4.3鼠标消息编程---常用函数MessageBoxUINT uType说明标识符二个按钮: Retry,Cancel.MB_RETRYCANCEL二个按钮: Yes,No.MB_YESNO三个按钮: Yes, No, Cancel.MB_YESNOCANCEL
第35页:鼠标绘图实例
4.4鼠标应用程序实例程序功能:用户按住Ctrl键同时拖动鼠标可以画一个矩形,用户按住Shift键同时拖动鼠标可以画一个椭圆,与此同时在左上角显示鼠标坐标。
第36页:WM_TIMER消息
- 4.5定时器消息编程WM_TIMER消息消息号
- WM_TIMER字参数:wParam ==》定时器标识长字参数:(TIMERPROC *) lParam==》定时器回调函数地址
第37页:SetTimer函数
4.5定时器消息编程---SetTimer函数功能:启动定时器
UINT SetTimer(HWND hWnd, 第38页:KillTimer函数
4.5定时器消息编程---KillTimer函数功能:销毁定时器
BOOL KillTimer(HWND hWnd, 第39页:定时器回调函数
4.5定时器消息编程---回调函数VOID CALLBACK
TimerProc(HWND hwnd, 第40页:定时器实例要求
4.5定时器消息编程---程序举例设计API应用程序,通过定时器消息实现正弦曲线的动态显示。
- 设计要求
- 1、绘制网格线以确定显示区域;
- 窗口显示一个周期T的正弦曲线,曲线占满窗口时动态曲线左移显示新数据点;
- 按下CTRL键,单击鼠标左键启动定时器;
- 按下SHIFT键,单击鼠标左键停止定时器;
第41页:定时器实例效果
4.5定时器消息编程---程序举例
本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}