当按下非系统键时(系统键一般指的是Alt没有被按下时产生的键盘消息),消息被派发至键盘焦点的窗口。
一个窗口通过 WindowProc 函数接收该消息.
```c
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_KEYDOWN
WPARAM wParam, // virtual-key code
LPARAM lParam // key data
);
```
## 参数

### wParam
指定非系统键的虚拟键码。
### lParam
指定重复次数,扫描码,扩展键标志,内容码,之前键状态标志,改变状态标志,如下表所示。
## 返回值
如果处理了该消息,返回值则为0.
## 备注
如果按了F10,DefWindowProc函数会设置一个内部标志。当DefWindowProc收到WM_KEYUP消息时,该函数会检查是否设置了内部标志,如果是,就会发送一个WM_SYSCOMMAND消息给顶层窗口。该消息的wParam参数会被设置为SC_KEYMENU。
由于自动重复的特性,在WM_KEYUP被派发出去之前,WM_KEYDOWN可能已经被派发好几次了。那么30位上的标志位则可以用于决定哪个WM_KEYDOWN是第一次发送过来的。
对于101-102键键盘,扩展键在主区域部分的只有Alt和Ctrl;INS,DEL,HOME,END,PAGE UP,PAGE DOWN;在数字小键盘上的方向键;除号(/),数字小键盘上的回车;其他的键盘可能支持lParam参数的扩展键盘位(24位)。
Windows 2000/XP: 程序必须按原样传递wParam参数给TranslateMessage中。
没有评论:
发表评论