• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

在应用程序中使用热键

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 56次 | 进入软件测试论坛讨论

领测软件测试网

在应用程序中使用热键

 

摘要:   本文通过一个实例,详细讲述了Visual C++的Hot Key控件(CHotKeyCtrl类)的使用方法

关键词:热键 CHotKeyCtrl  RegisterHotKey UnregisterHotKey

 

Windows操作系统提供了许多热键,比如常用的热键:Win+E打开资源管理器,Win+F打开查找对话框,F1打开帮助等等。使用这些热键可以使我们的操作更加方便。那么,怎样在自己的应用程序中添加和使用热键呢?下面以VC++为例来说明。

MFC提供了CHotKeyCtrl类,由 CHotKeyCtrl 类表示的热键控件是一个窗口,显示用户键入的组合键(如 CTRL +S)的文本表示形式。它还维护此键的内部表示形式和一组表示转换状态的标志。热键控件实际上并不设置热键,要靠程序员自己来实现。

 

应用程序可以按下列两种方法来使用CHotKeyCtrl控件设置热键:

1通过向将要激活的窗口发送 WM_SETHOTKEY 消息,设置一个用于激活非子窗口的全局热键。

全局热键与特定的非子窗口关联。它使用户得以从系统的任何部分激活窗口。应用程序通过向特定的窗口发送 WM_SETHOTKEY 消息来设置该窗口的全局热键。例如,假如 m_hotkey 是 CHotKeyCtrl 的对象,则可以使用下列代码将控件中指定的热键和主窗口关联起来。

WORD wKey = m_ hotkey.GetHotKey( );

 

AfxGetMainWnd()->SendMessage( WM_SETHOTKEY,

 

 

wKey);

这样,每当用户按全局热键时,指定的窗口就会接收 WM_SYSCOMMAND 消息,该消息将 SC_HOTKEY 指定为命令类型。该消息还激活接收它的窗口。由于该消息不包括按下的确切键的任何信息,使用此方法不能区分可能附加到同一窗口的不同热键。在发送 WM_SETHOTKEY 的应用程序退出之前,热键一直保持有效。

 

2通过调用 API 函数 RegisterHotKey() 来设置线程特定的热键。

应用程序使用 RegisterHotKey() 函数设置线程特定的热键。用户按线程特定的热键后,Windows 将 WM_HOTKEY 消息发送到特定线程的消息队列的开始处。WM_HOTKEY消息的结构如下:

idHotKey = (int) wParam;            

fuModifiers = (UINT) LOWORD(lParam);

uVirtKey = (UINT) HIWORD(lParam);    

下面是两个关键的函数:

BOOL RegisterHotKey( HWND hWnd, int id, UINT fsModifiers, UINT vk );

该函数用于在系统中注册热键。参数hWnd用于指定注册热键的窗口,如果为NULL的话将使热键被注册到该函数的调用线程;id用于指定该热键的标识,在热键消息相应的时候,我们将通过该ID来对不同的热键消息作区分;fsModifiers用于指定修改键,它可以是下面值的组合:

描述

MOD_ALT

任一Alt键按下

MOD_CONTROL

任一Control键按下

MOD_SHIFT

任一Shift键按下

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网