Win32学习04

键盘消息

键盘消息分类
1.WM_KEYDOWN - 按键被按下时产生
2.WM_KEYUP - 按键被放开时产生
附带信息:WPARAM - 按键的Virtual Key
    LPARAM - 按键的参数,例如按下次数
3.WM_SYSKEYDOWN - 系统键按下时产生 比如ALT、F10
4.WM_SYSKEYUIP - 系统键放开时产生

字符消息
TranslateMessage在转换WM_KEYDOWN消息时,对于可见字符可以产生WM_CHAR,不可见字符无此消息
附带信息:
    WPARAM - 输入的字符的ASCII字符编码值
    LPARAM - 按键的相关参数

TranslateMessage(&nMsg){
    if(nMsg.message!=WM_KEYDOWN)
        return;
    判断nMsg.wParam(键码值)可以获知哪个按键被按下
    if(不可见字符按键)
        return;
    查看CapsLock(大写锁定键)是否处于打开状态
    if(打开)
        PostMessage(nMsg.hwnd,WM_CHAR,大写字符编码值,...);
    else
        PostMessage(nMsg.hwnd,WM_CHAR,小写字符编码值,...);

}

鼠标消息

鼠标消息的分类
基本鼠标消息
    WM_LBUTTONDOWN - 鼠标左键按下
    WM_LBUTTONUP - 鼠标左键抬起
    WM_RBUTTONDOWN - 鼠标邮件按下
    WM_RBUTTONUP - 鼠标右键抬起
    WM_MOUSEMOVE - 鼠标移动消息
附带信息:
    wPARAM:其他按键的状态,例如Ctrl/Shift等
    IPARAM:鼠标的位置,窗口客户区坐标系
        LOWORD X坐标位置
        HIWORD Y坐标位置
一般情况鼠标按下/抬起成对出现。在鼠标移动过程中,会根据移动速度产生一系列的WM_MOUSEMOVE消息

双击消息
    WM_LBUTTONDBLCLK- 鼠标左键双击
    WM_RBUTTONDBLCLK- - 鼠标右键双击
附带信息:
    wPARAM:其他按键的状态,例如Ctrl/Shift等
    IPARAM:鼠标的位置,窗口客户区坐标系
        LOWORD X坐标位置
        HIWORD Y坐标位置
消息产生顺序
    以左键为例:
        WM_LBUTTONDOWN
        WM_LBUTTONUP
        WM_LBUTTONDBLCLK
        WM_LBUTTONUP
    使用时需要在注册窗口类的时候添加CS_DBLCLKS风格

滚轮消息
    WM_MOUSEWHEEL - 鼠标滚轮消息
附带信息:
    wPARAM:
        LOWORD - 其他按键的状态
        HIWORD - 滚轮的偏移量,通过正负值表示滚轮的滚动方向
            正:向前滚动    负:向后滚动
    IPARAM:鼠标的位置,屏幕坐标系
        LOWORD X坐标位置
        HIWORD Y坐标位置
使用:通过偏移量,获取滚动的方向和距离

 定时器消息

定时器消息介绍
产生时间:在程序中创建定时器,当达到时间间隔时,定时器会向程序发送一个WM_TIMER消息。定时器的精度是毫秒,但是准确度很低。例如设置时间间隔为1000ms,但是会在非1000毫秒到达消息。
附带信息:
    WPARAM:定时器ID
    LPARAM:定时器处理函数的指针

创建销毁定时器
创建定时器
UINT_PTR SetTimer{
    HWND hWnd,//定时器窗口句柄
    UINT_PTR nIDEvent,//定时器ID
    UINT uElapse,//时间间隔
    TIMERPROC lpTimerFunc//定时器处理函数指针(一般不用,为Null)
};创建成功,返回非0。
关闭定时器
BOOL KillTimer(
    HWND hWnd,//定时器窗口句柄
    UINT_PTR uIDEvent//定时器ID
)

菜单资源

1.菜单分类
窗口的顶层菜单    //标题栏下
弹出式菜单
系统菜单
HMENU类型表示菜单,ID表示菜单项。

2.资源相关
资源脚本文件:*.rc文件
编译器:RC.EXE

3.菜单资源的使用
添加菜单资源
加载菜单资源(3种方法)
    1>注册窗口类时设置菜单
    2>创建窗口传参设置菜单
    3>在主窗口WM_CREATE消息中利用SetMenu函数设置菜单
    加载菜单资源
    HMENU LoadMenu(
        HINSTANCE hInstance,
        LPCTSTR lpMenuName
)

4.命令消息的处理
WM_COMMAND
附带信息:
    wPARAM:
        HIWORD - 对于菜单为0
        LOWORD - 菜单项的ID
    IPARAM - 对于菜单为0

//上下文菜单
显示上下文菜单
    BOOL TrackPopupMenu(
        HMENU hMenu,//菜单句柄
        UINT uFlags,//显示方式
        int x,//水平位置,屏幕坐标系
        int y,//垂直位置,屏幕坐标系
        int nReserved,//保留,必须为0
        HWND hWnd,//处理菜单消息的窗口句柄
        CONST RECT *prcRect//NULL,忽略
    )TrackPopupMenu是阻塞函数

WM_RBUTTONUP
    鼠标右键弹起消息为窗口坐标系坐标,要使用需将其转换成屏幕坐标系坐标
WM_CONTETMENU
    wParam:右键点击的窗口句柄
    lPARAM:LOWORD  X坐标,屏幕坐标系
        HIWORD  Y坐标,屏幕坐标系
    WM_CONTETMENU消息是在WM_RBUTTONUP消息之后产生

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值