4. 一般情况下,所有的键盘消息(如wm_keydown、wm_char等等)前往具有输入焦点的窗体。如果这个具有输入焦点的窗体与另一个当前执行的任务相关联,那么该事件会被留在系统队列中,并且那个拥有“有焦点的窗体”的任务会被唤醒(如果休眠了)。“系统队列扫描”代码会像没要发现任何要处理的事件一样,返回到主getmessage/peekmessage代码。请参阅下面的“让步与休眠的不同”和“应用程序如何被唤醒”以获得更多的信息。
5. 如果遇到了没有任何一个窗体具有输入焦点的情形,键盘消息会直接前往当前激活的窗体,而不会被翻译成为系统键消息(如wm_syskeydow,wm_syschar,等等)。
6. 与所有指定的消息过滤器进行对照,核查此消息。(请参阅下面的“消息范围过滤和窗体句柄过滤”)如果该消息不匹配过滤器,则重新从头开始“系统队列扫描”代码,查看队列中的下一个消息。
7. 如果事件被返到了当前的任务,它将从系统队列中被删除掉,除非peekmessage被指定为pm_noremove标记。请参阅下面的“peekmessage的pm_noremove标记”以了解更多的关于不从队列中删除事件的信息。
8. 如果安装有键盘钩子,将在此刻被调用。如果事件从系统队列中被删除了,钩子的调用将伴随hc_action属性;如果事件未被从系统队列中删除,钩子的调用将具有hc_norem属性。