键盘消息
Windows有8种不同的键盘消息
键盘输入以消息的形式传递
Windows使用了8种不同的消息来表示各种键盘事件。这看起来可能多了一些,但是(就像我们将要看到的)你的程序忽略掉至少一半的消息是完全可能的。同样,在大多数情况下,你的程序所需要的键盘信息很可能少于这些消息中所编码的信息。处理键盘工作的一部分内容就是要知道哪些消息是重要的,哪些是不必要的。
当用户按下一个键时触发的消息
当用户按下一个键时,Windows 将WM_ KEYDOWN或WM_ SYSKEYDOWN消息放入具有输入焦点的窗口的消息队列中。当该键被释放时,Windows 把WM_ KEYUP或WM_ SYSKEYUP消息放入相应的消息队列中。
按住键不松开会发送一连串的消息
通常键按下消息和键释放消息是成对出现的。但是如果你按下一个键不放时,则被认为发生了一次连续按键(自动重复)行为,Windows 将发送给窗口过程一连串的WM_ KEYDOWN(或WM SYSKEYDOWN)消息。当此键最终被释放时,Windows 发送给窗口过程一个WM_ KEYUP(或WM_ SYSKEYUP)消息。 像所有的队列消息一-样,击键消息是可被实时追踪。你能通过调用GetMessageTime函数,得到键被按下或释放的相对时间。
WM_CAHR 消息
当TranslateMessage函数翻译WM_ KEYDOWN消息时,发布到具
有键盘焦点的窗口。WM_ CHAR 消息包含按下的键的字符代码。
代码示例
//第二步定义消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT msgId,WPARAM wParam,LPARAM lParam)
{
//第七步 处理消息
switch (msgId)
{
case WM_CHAR:
switch(wParam)
{
case 'A':
MessageBox