当前位置:首页 > 技术实录 > 正文内容

第二节_系统热键

心光日记2010-01-24 00:00:01技术实录95

  我们在使用G中,经常会先开G,然后开游戏,在进入游戏后按下某一个键,此时G界面就会显现出来,而且无论我们在干什么,只要我们按下那个键,界面就会出来,然后进行设置自动补血,打怪范围等等。被按下的那个键,就是热键,这就是本节要介绍的,系统热键及其使用

  系统热键,通常是几个控制键的组合,或控制和字符键的组合,也可以是单独的某个键。当用户按下热键后,系统向预订的程序窗口发送预定的消息,该程序不论前台、后台都可以接受并处理该消息。例如QQ消息的提取就是一个典型的例子。

  系统热键的使用必须要以先注册为前提,即先注册,再使用。注册热键的Windows API函数定义如下:
  BOOL RegisterHorKey(HWND hWnd,int id,UNIT fsModifiers,UNIT vk);
  参数hWnd为接受该热键消息的窗口句柄(下节介绍窗口及句柄)。参数id是在一个窗口可能注册多个热键的情况下用来区分不同热键消息的一个整数,取值范围是0x0000~0xBFFF(0x为十六进制的前缀)。第三个参数代表用户需要按下的几个控制键,取值如下:
  MOD_ALT               ALT键被按下
  MOD_CONTROL    CONTROL键被按下
  MOD_SHIFT            SHIFT被按下
  MOD_WIN               WIN键被按下
参数vk为热钱组合中使用的按键虚拟键码,可参看……(呃,晕4,摄像头有问题了,明了发图)


  下面代码向系统注册了两个热键“CTRL+ALT+F3”和“CTRL+ALT+F4“:
  RegisterHotKey(GetSafeHwnd(),1000,MOD_ALT|MOD_CONTROL,VK_F3);
  RegisterHotKey(GetSafeHwnd(),1001,MOD_ALT|MOD_CONTROL,VK_F4);

  注册之后,我们就要考虑接收问题。首先要在准备接受热键消息的窗口类中添加OnHotKey成员函数声明:
  afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam)
声明之后,就要添加消息映射,建立与窗口函数之间的连接:
  BEGIN_MESSAGE_MAP(CHKDemo1View,CView)
                   ON_MESSAGE(WM_HOTKEY,OnHotKey)
  END_MESSAGE_MAP()
然后就是处理,需要编写消息处理成员函数OnHotKey,其参数wParam就是注册热键消息时使用的ID,可以用来判断是哪一组热键。

  下面的代码,是接收前面注册的两个热键消息:
  #01. LRESULT CHKDemo1View::OnHotKey(WPARAM wParam,LPARAM lParam)
  #02. {
  #03.        if(wParam==(UNIT)m_HKID1)
  #04.               AfxMessageBox("Hello ALT+CTRL+F3!");
  #05.        else if(wParam==(UNIT)m_HKID2)
  #06.               AfxMessageBox("Hello ALT+CTRL+F4!");
  #07.         return 1;
  #08. }

  前面介绍了热键的注册与热键消息的接收处理,貌似已经结束,但是我们要注意,当热键不再需要使用时,就应释放热键,可通过的下面API函数释放已注册的热键:
  BOOL UnregisterHotKey(
               HWND hWnd                   //热键相关窗口
               int id                                //热键ID
            )

  下面的代码释放前面注册的两个热键:
        UnregisterHotKey(GetSafeHwnd)(),m_HKID1);
       UnregisterHotKey(GetSafeHwnd)(),m_HKID2);

  好,到这里,基本上关于窗口类热键的各方面已经介绍完毕。本来这一节是准备介绍系统热键和窗口句柄两个内容的,但现在看来,内容有点偏多,就分开了。而且由于本人也是初学,不敢说多了,也说不了那么多,哪么快。还有这一节的一个实例,也由于时间原因,没有亲身实际编辑运行,本着对大家负责的态度,便没有放上来。在我实际运行,确定与预期结果没有偏差后,就会将实例发上来。另外,很抱歉,鉴于时间分配,再加上我也是初学,所以以后就两天一篇了,但我会尽量保证准时的。

  最后给大家的一个建议,要是真正想学这方面的话,最好还是买几本相关的书,毕竟实体书有它的优势,那就是方便,随身,还不收地点限制,知识面也比较广、比较全,能随时翻阅。因为我在这空间不可能将书籍上的所有东西都搬上来,这样一是量大,二来也没什么大的意义了,只是把一些重点和自己的理解写在这儿,为了尽量能让更多朋友看得懂,再把涉及到的但不宜明白的东西的简明得连带解释一下。可以先买两本,一本关于C++语言学习的,一本关于WINDOWS编程的。希望我的这些文字能对大家有所帮助!

扫描二维码推送至手机访问。

版权声明:本文由心光日记发布,如需转载请注明出处。

本文链接:https://www.mindlight.cn/post/99.html

标签: 百度空间
分享给朋友:

“第二节_系统热键” 的相关文章

驱动版本与硬件对应至关重要

驱动版本与硬件对应至关重要

一天,启惠 说机子不还原了,我一看,是上次做系统忘装还原卡驱动了。于是关机卸载还原卡,记得D盘里好像有个驱动,找了半天,才找到个,上面写的是“FOR3.0及以后”,也没太注意,就双击安装了。(还原卡是4.2的)然后重启安装还原卡。满以为好了,可是重启后,却发现还是提示要安装,不过版本先是变成了4.0...

*.mid转*.mp3——hap_miditomp3.exe

*.mid转*.mp3——hap_miditomp3.exe

  今天向大家推荐一款很不错的软件,顾名思义"midtomp3",即可以将mid格式转换为mp3格式。可以说是极品呀,因为mid转mp3格式的软件本来就少,而且这款各方面都很不错,界面简洁、操作简单,大小却还不到1M。界面如下图:  下载地址:http://www.rayfile...

第一次封包分析

  今天中午宿舍都去上网了,再加上最近在小研究WG方面的知识、顺便留意一下万象2008的免费,所以实在是忍不住了,然后就来了。  首先,一不小心,又让我征服了一个Netbar,而且极具里程碑式,因为校园附近网吧所有的计费系统那个都是这个。  第二,今天第一次真正的分析了数据包,也许算不上分析,在高人...

序言

  从今天起,将正式开始学习WG方面知识。  为了和大家共同进步,方便大家学习,所以会在每次学习之后详略得当地记录下过程、细节,并在空间(http://hi.baidu.com/_炎_炎)WG/XF分类同步更新,以及“WG研究院”(http://hack.gameres.com/showforum....

Visual C++ 2008 Express Edition下载(微软学生中心官网)

为了防止盗链检测,所以没加跳转,请直接将下列地址复制到“迅雷-新建”。  http://www.msuniversity.edu.cn/m_AdvancedMembers/downloadfile.aspx?username=cuiyi0@mscampus.cn&type=6  如果不能下载...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。