📄 untitled-32.txt
字号:
它还可以使用静态**nd::h0。。us函数找到当前拥有输人焦点的窗口:
CWnd。 pFocuswnd= CW。d::GetFocus();
在Win32环境下,如果拥有焦点的窗口还没有被调用线程创建,GetFocus将返回NULL。虽
然无法使用GetFo。SS得到指向由其他应用程序所创建窗口的指针,但可以使用它标识属于
自己应用程序的窗口。
3.2.2击键消息
Windows通过给拥有输人焦点的窗口发送WM_KEYDOWN和WM_KEYUP消息来报告
键被按下还是被释放事件。这些消息通常称作击键消息。当一个键被按下时,有输人焦点
的窗口会接收到WM.KEYDOWN消息以及一个标识键的虚拟键代码。当键被释放时,窗口
接收到WM.KEYUP消息。当一个键被接着时,如果另外的键被按下并释放,那么刚产生的
WM_KEYDOWN和WM.KEYUP消息将会把按着的键产生的WM.KEYDOWN和WM.
KEYUP消息分开。Windows按照发生的顺序报告键盘事件,因此只要检查进人应用程序的
击键消息流,就可以知道在何时有什么输人。
除了两个键以外所有的键都产生WM—KEYDOWN和WM_KEYUP消息。两个例外的键
是Aft和F10,它们是“系统”键,对Windows有特殊的意义。它们中任何一个键被按下和释
放,窗口都会接收到由WM.SYSKEYUP消息跟着的WM_SYSKEYDOWN消息。如果在Aft键
被按着时,别的键被按下了,它们也会产生WM_SYSKEYDOWN和WM_SYSKEYUP消息,而
不是WM—KEYDOWN和WM—KEYUP消息。按下F10键使Windows处于特殊模态下,它将
把下一次击键当作菜单选择的快捷方式。例如:在按了F10之后再按F键,在大多数应用
程序中会拉下“文件”菜单。
应用程序对感兴趣的击键消息提供了消息映射表输入项以及消息处理函数来处理它
们。WM.KEYDOWN、WM.KEYUP、WM.SYSKEYDOWN以及WM—SYSKEYUP消息分别由类
的ollKeyDOWll、OllKeyUp、ollsy8KeyDOwll以及OfisySKeyUp成员函数处理。相应的消息映射宏
是 ON.WM.KEYDOWN、 ON.WM_KEYUP、 ON_WM.SYSKEYDOWN以及 ON_WM.
SYSKEYUP。如果被激活,一个击键处理程序会接收到许多有关击键的信息,其中包括一个
代码用来标识被按下或释放的键。
击键消息处理程序的原型如下:
afx-。sg void OnMsgName(UINT "Char, UINT nRepCnt, UINT "Flags)
"Char是被接下或释放的键的虚拟键代码。nRepCnt是重复数,就是消息中击键次数编码。
对于WM.KEYDOWN或WM.SYSKEYDOWN消息,nRepCnt通常等于1,对于WM.KEYUP或
WM.SYSKEYUP消息也是1。但如果击键消息来的很快,以致应用程序无法跟上,Windows
就将两个或更多的WM_KEYDOWN或WM_SYSKEYDOWN消息合并为一个,并相应增加重
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -