VC中添加快捷键代码实现

简介: VC中添加快捷键代码实现

方法一:主菜单快捷键


BOOL CExampleDlg::PreTranslateMessage(MSG* pMsg)

{

// TODO: 在此添加专用代码和/或调用基类

if (pMsg->message == WM_KEYDOWN)

{

switch (pMsg->wParam)

{

case 'F':

if(::GetKeyState(VK_MENU) < 0 )

MessageBox("hello");

}

}

return CDialog::PreTranslateMessage(pMsg);

}

上面代码是用alt+F响应"文件"主菜单项,该主菜单的captain设为“文件(&F)”



非主菜单快捷键


1 插入一个新的Accelerator到资源里,把加速键和对应的响应控件(如一个按钮)关联


2 在对话框头文件中声明:

HACCEL m_hAccel;


3 在对话框的构造函数里初始化m_hAccel

m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));


4 然后重载对话框的PreTranslateMessage函数,在

BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg)

{

  if (m_hAccel)

  {

     if (::TranslateAccelerator(m_hWnd, m_hAccel, pMsg))

     {

        return(TRUE);

     }

  }

  return CDialog::PreTranslateMessage(pMsg);

}


//

//


方法二


1   声明热键消息处理函数原型    

 在.h中消息映射声明处(AFX_mSG字样之后)加入如下语句:    

 LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);    


2. 消息与相应处理函数相关联    

 在.Cpp中加入消息映射宏,使消息与相应处理函数发生关系,

   ON_MESSAGE(WM_HOTKEY,OnHotKey);    


3. 为方便以后的操作

   预先在类中创建一个响应WM_CREATE和WM_DESTROY消息的函数

    OnCreate()与OnDestroy()的框架


4.向系统登记热键    

 在OnCreate()函数中加入如下代码以向系统登记热键,本例子的热键设为

      Ctrl+Shift+A.    

 RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT,'A');    

 RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_SHIFT,'a');    


5.处理热键

   在消息处理函数OnHotKey()中对热键进行处理,并可加入用户希望运行的程序代码

   LRESULT CScrewView::OnHotKey(WPARAM wParam,LPARAM lParam)

   {

if(wParam == 1001||wParam == 1002)

{

     OnFun();

            //CWnd::SetForegroundWindow(); //使得被激活窗口出现在前景  

}


       return 0;  

  }    


6.程序运行完毕后解除热键    

 在OnDestroy()中通过UnRegisterHotKey()解除热键登记,释放系统资源.    

 UnregisterHotKey(m_hWnd, 1001); //销毁快捷键

   UnregisterHotKey(m_hWnd, 1002);


相关文章
|
人工智能 Java API
Google Gemini API 接口调用方法
Google 最近发布的 Gemini 1.0 AI 模型通过其升级版,Gemini,标志着公司迄今为止最为强大和多功能的人工智能技术的突破。
|
消息中间件 Java 中间件
MQ四兄弟:如何保证消息可靠性
本文介绍了RabbitMQ、RocketMQ、Kafka和Pulsar四种消息中间件的可靠性机制。这些中间件通过以下几种方式确保消息的可靠传输:1. 消息持久化,确保消息在重启后不会丢失;2. 确认机制,保证消息从生产者到消费者都被成功处理;3. 重试机制,处理失败后的重试;4. 死信队列,处理无法消费的消息。每种中间件的具体实现略有不同,但核心思想相似,都是从生产者、中间件本身和消费者三个角度来保障消息的可靠性。
1044 0
|
人工智能 自然语言处理 小程序
【工具】Excel竟然也能搞AI,快来玩转chatexcel
ChatExcel是由北京大学团队开发的一款人工智能办公辅助工具,用户可通过自然语言与Excel表格互动,简化数据处理任务,如排序、求和等,无需手动编写公式或函数。本文介绍了ChatExcel的功能特点、使用方法及实操步骤,展示了如何通过简单指令完成复杂操作,提高工作效率。此外,还提供了新手指南帮助快速上手。
2962 0
【工具】Excel竟然也能搞AI,快来玩转chatexcel
|
SQL 分布式计算 Hadoop
配置开启Hive远程连接
使用IDEA工具远程连接Hive,首先需要配置开启Hive远程连接支持,主要有2种方式来配置开启Hive远程连接。
780 0
配置开启Hive远程连接
|
监控 API Docker
Docker之compose使用【附实用案例】(不建议收藏)
Docker之compose使用【附实用案例】(不建议收藏)
666 0
|
缓存 小程序 数据库
微信小游戏开发系列教程
嗨!大家好,我是小蚂蚁。这里整理了一下公众号中写过的一些教程文章,它们已经帮助过很多人做出了自己的第一款游戏,希望还能够继续帮助更多想要做游戏的朋友,进入游戏开发世界的大门。
437 0
|
编译器 C语言 C++
使用vs建立C/C++项目
使用vs建立C/C++项目
579 0
使用vs建立C/C++项目
|
移动开发 前端开发 HTML5
第18/90步《前端篇》第3章 编写一个简单的HTML5小游戏:完成交互功能 第9课
今天学习《前端篇》第3章完成交互功能的第9课,实现游戏的重启功能。
305 0