设为首页 加入收藏

TOP

功能表及其他资源(五十九)
2010-12-30 21:13:27 来源: 作者: 【 】 浏览:35948
Tags:功能 及其他 资源

如果加速键与一个功能表项对应,那么视窗讯息处理程式还会收到WM_INITMENU、WM_INITMENUPOPUP和WM_MENUSELECT讯息,就好像选中了功能表选项一样。在处理WM_INITMENUPOPUP时,程式往往启用和禁用突现式功能表中的功能表项,因此,在使用加速键时,您仍然能够实作这类功能。如果加速键与一个禁用或者无效化的功能表项相对应,那么,TranslateAccelerator函式就不会向视窗讯息处理程式发送WM_COMMAND或WM_SYSCOMMAND讯息。

如果活动视窗已经被最小化,那么TranslateAccelerator将为与启用的系统功能表项相对应的加速键向视窗讯息处理

的第二个参数为NULL时,函式会找寻应用程式所有视窗的讯息。当GetMessage传回时,msg结构的hwnd是将要获得讯息之视窗的视窗代号。然而,当TranslateAccelerator把键盘讯息转换为WM_COMMAND或WM_SYSCOMMAND讯息时,它使用函式的第一个参数指定的视窗代号hwnd来代替视窗代号msg.hwnd。Windows就是这样把所有加速键讯息发送给同一视窗讯息处理程式的,即使另一个应用视窗目前拥有输入焦点。当系统模态对话方块或者讯息方块拥有输入焦点时,TranslateAccelerator不会转换键盘讯息,因为这些视窗的讯息是不经过程式的讯息回圈的。

在某些情况下,当您程式的另一个视窗(比如一个非系统模态对话方块)拥有输入焦点时,您也许不想转换加速键。您将在下一章中看到如何处理这种情况。

接收加速键讯息
 

当加速键与系统功能表中的功能表项相对应时,TranslateAccelerator给视窗讯息处理程式发送一个WM_SYSCOMMAND讯息,否则,TranslateAccelerator给视窗讯息处理程式发送一个WM_COMMAND讯息。下表所示为几种可能接收到的WM_COMMAND讯息,这些讯息用於加速键、功能表命令以及子视窗控制项:

表10-3
加速键功能表控制项
 
LOWORD (wParam) 加速键ID 功能表ID 控制项ID
HIWORD (wParam) 1 0 通知码
lParam 0 0 子视窗代号
首页 上一页 56 57 58 59 60 61 62 下一页 尾页 59/69/69
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇对话方块 下一篇子视窗控制项

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: