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

第二节_系统热键

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

  我们在使用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

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

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

小析MBR、boot、GRUB

相信大家在不少地方都看到了与MBR、boot、GRUB有关的东西,而有的人对它们的概念并不是多清楚,甚至有点模糊,今天我就为大家讲讲,他们到底都是干什么的,有什么联系,又有什么相同点和不同点。  MBR(Master Boot Record)——主引导记录,存在于硬盘第一扇区,用于计算机开机启动后,...

VB脚本刷百度空间访问量

  大家有没有为少得可怜的访问量感到不爽呢?或者为自己辛辛苦苦写的心血文章显示的浏览数总是“零”觉得无奈呢?我相信是有的。所以,今天我就教大家巧用VB脚本刷空间访问量,全自动。原理就是自动打开页面,产生访问量,然后关闭,并重复操作,且不影响当前正在做的任何工作。要是哪天访问少了,起码小小安慰一下受伤...

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

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

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

彩虹(原51挂挂)评测

  超大的网盘和方便的网盘操作是最大的优点,而可更改的数字账号在有QQ铺垫的当前社会极具吸引性。  这是一个巧合,今天在“360软件管家”里面无意间发现了一个软件,叫“彩虹”,突然使我响起了前一阵子和 腾讯 闹得很凶的“彩虹显IP”。下意识间点开了简介,心里想着这个“彩虹”和“彩虹显IP”有关系吗?...

第一章_第一节_外挂分类

  本章节我们介绍当下WG的大致分类,按我目前水平看来,主要分为以下几种:  一、模拟式  这类WG的优点是制作与实现简单,周期短,涉及技术面小,很适合从未接触过外挂方面的人员入门学习用,缺点是功能不多,较为单一,按键精灵是之中代表。   其以先得到目标游戏的一些程序窗口特征,然后模拟用户的鼠标键盘...

发表评论

访客

看不清,换一张

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