windows编程中击键消息、字符消息分别是什么
发布网友
发布时间:2022-04-25 15:44
我来回答
共1个回答
热心网友
时间:2023-10-14 03:55
1.焦点
程序用于从消息队列中读取消息的MSG结构中包含一个hwnd字段。此字段指出了接收消息的窗口句柄。消息循环中的DispatchMessage函数传送消息给需要该消息的窗口过程。
接收到这个键盘事件的窗口称为有输入焦点的窗口。
有时没有窗口具有输入焦点。这种情况发生在所以程序都最小化时。
窗口过程通过捕获WM_SETFOCUS和WM_KILLFOCUS消息来确定自己的窗口是否具有输入焦点。
2.队列和同步
当用户按下和释放键盘上的一个键时,Windows和键盘设备驱动程序将硬件扫描码转换为格式化后的消息。但是这些消息并不立即被放入应用程序消息队列,而是由Windows把这些消息存储在系统消息队列中。系统消息队列是一个单独的消息队列,它被Windows用来初步存储用户从键盘和鼠标输入的消息。仅当Windows应用程序完成了对当前一个用户输入消息的处理后,Windows才从系统消息队列中取出下一条消息,并把它放入应用程序消息队列。
3.击键消息
当用户按下一个键时,Windows将WM_KEYDOWN或WM_SYSKEYDOWN消息放入具有输入焦点的消息队列中。当该键被释放时,Windows把WM_KEYUP或WM_SYSKEYUP消息放入相应的消息队列中。
4.字符消息
通过转义状态信息可把击键消息转换为字符消息。
GetMessage从消息队列中取出下一条消息;
TranslateMessage负责把击键消息转换为字符消息;