最近在看《Windows程序设计》,看到键盘那一章,有些事情想不明白,所以想请教一下。先说明一下《Windows程序设计》中的两个定义:
活动窗口:当前顶级窗口,标题栏高亮显示的那一个。
具有输入焦点的窗口:活动窗口,或是活动窗口下的某个子窗口(控件)。我的问题是:
按键信息(WM_(SYS)KEYDOWN, WM_(SYS)CHAR 等)只会被发送到具有输入焦点的窗口过程,
如果具有输入焦点的窗口是一个子窗口控件,那如果在这时按下顶级窗口的菜单快捷键Ctrl+某个键,顶级窗口是怎么得到通知的?
同样道理,如果按下Alt+F4,顶级窗口又是怎么得到通知要关闭窗口的?另外一个问题就是,怎么监听所有窗口的键盘事情?好像不少程序都有这个功能,可以设置所谓的“全局快捷键”。

解决方案 »

  1.   

    按键信息(WM_(SYS)KEYDOWN, WM_(SYS)CHAR 等)只会被发送到具有输入焦点的窗口过程, 
    如果具有输入焦点的窗口是一个子窗口控件,那如果在这时按下顶级窗口的菜单快捷键Ctrl+某个键,顶级窗口是怎么得到通知的? 
    同样道理,如果按下Alt+F4,顶级窗口又是怎么得到通知要关闭窗口的? 
    是不是这样. 如果全有焦点的窗口过程没有处理该热键,就会调用父类的事件, 这个东东是不是个虚函数呀?
    时间长不在win32编程了,有些东西都忘记了,期待高手回答.3q