
怎么用win32的消息处理函数实现快捷键的功能
1个回答
2017-09-15
展开全部
Win32程序主消息循环的标准写法是:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
首先使用 GetMessage() 函数获取消息,然后用TranslateMessage()函数转化消息,这样做的目的是,获取一些按键消息(虚拟键如ESC、Ctrl、Atl、箭头等等)转化为ASCll字符的键产生WM_CHAR消息(这样系统才可以识别),DispatchMessage再将消息转发给系统。
比如:VK_RETURN 回车键对应的ASCll字符为0x0D
VK_RETURN 就是虚拟键消息,0x0D就是字符消息
连续调用的目的就是使你的程序一直在消息循环中,因为Windows程序运行的机制就是基于消息循环的,没有了消息循环程序就不能相应对它的操作了。
补充:
WNDCLASS结构的第一个成员style表示窗口类的风格,它往往是由一些基本的风格通过位的“或”操作(操作符位“|”)组合而成。以下列出了一些常用的基本窗口风格:
CS_HREDRAW 如果窗口客户区宽度发生改变,重绘整个窗口
CS_VREDRAW 如果窗口客户区高度发生改变,重绘整个窗口
CS_DBLCLKS 能感受用户在窗口中的双击消息
CS_NOCLOSE 禁用系统菜单中的“关闭”命令
CS_OWNDC 为该窗口类的各窗口分配各自独立的设备环境
CS_CLASSDC 为该窗口类的各窗口分配一个共享的设备环境
CS_PARENTDC 指定子窗口继承其父窗口的设备环境
CS_SAVEBITS 把被窗口遮掩的屏幕图象部分作为位图保存起来。当该窗口被移动时,Windows使用被保存的位图来重建屏幕图象
CS_CLASSDC就表示为该窗口类的各窗口分配一个共享的设备环境
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
首先使用 GetMessage() 函数获取消息,然后用TranslateMessage()函数转化消息,这样做的目的是,获取一些按键消息(虚拟键如ESC、Ctrl、Atl、箭头等等)转化为ASCll字符的键产生WM_CHAR消息(这样系统才可以识别),DispatchMessage再将消息转发给系统。
比如:VK_RETURN 回车键对应的ASCll字符为0x0D
VK_RETURN 就是虚拟键消息,0x0D就是字符消息
连续调用的目的就是使你的程序一直在消息循环中,因为Windows程序运行的机制就是基于消息循环的,没有了消息循环程序就不能相应对它的操作了。
补充:
WNDCLASS结构的第一个成员style表示窗口类的风格,它往往是由一些基本的风格通过位的“或”操作(操作符位“|”)组合而成。以下列出了一些常用的基本窗口风格:
CS_HREDRAW 如果窗口客户区宽度发生改变,重绘整个窗口
CS_VREDRAW 如果窗口客户区高度发生改变,重绘整个窗口
CS_DBLCLKS 能感受用户在窗口中的双击消息
CS_NOCLOSE 禁用系统菜单中的“关闭”命令
CS_OWNDC 为该窗口类的各窗口分配各自独立的设备环境
CS_CLASSDC 为该窗口类的各窗口分配一个共享的设备环境
CS_PARENTDC 指定子窗口继承其父窗口的设备环境
CS_SAVEBITS 把被窗口遮掩的屏幕图象部分作为位图保存起来。当该窗口被移动时,Windows使用被保存的位图来重建屏幕图象
CS_CLASSDC就表示为该窗口类的各窗口分配一个共享的设备环境
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询