MFC 热键设置 OnHotKey方法和Accelerator方法的设置

作者: admin 分类: win32 发布时间: 2014-01-21 13:10 ė2,891 浏览数 61条评论
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
在写MFC程序时,如果想自定义热键比如ALT+S可以采用下面两种方法:
方法一:定义热键的消息响应函数:OnHotKey
定义系统全局热键:

1、首先在.h文件中添加消息响应函数声明
 afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);
2、关联消息及响应函数
     BEGIN_MESSAGE_MAP()
  ON_MESSAGE(WM_HOTKEY,OnHotKey)
END_MESSAGE_MAP()
 
3、在初始化函数里注册热键
RegisterHotKey(m_hWnd,ID_HOTKEY,MOD_ALT,‘s’);  
//ID_HOTKEY是自己定义的一个ID宏
‘s’可以写成ASCII码
 
4、在消息响应函数里添加操作
LRESULT CMyTest::OnHotKey(WPARAM wParam,LPARAM lParam) 
 
 UINT Mod = (UINT) LOWORD(lParam); // key-modifier flags 
 UINT uVirtKey = (UINT) HIWORD(lParam); // virtual-key code 
 //判断响应了什么热键 
 if( MOD_CONTROL == Mod && ‘s’ == uVirtKey ) 
 
 AfxMessageBox(_T(“你按下了组合键 ALT+ S”));
 
 else 
 AfxMessageBox(_T(“你按下了未知热键”)); 
 return 0; 
 }

方法二: 

Accelerator方法只在本应用程序内有效
http://support.microsoft.com/?kbid=222829 
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); 

然后重载 OnCommand();函数;
BOOL CFreeChatDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (ID_ALT_S == LOWORD(wParam))//ID_ALT_S是在Accelerator中注册快捷键的ID
{
//加入响应的快捷键的操作
}
return CDialog::OnCommand(wParam,lParam);
}


只回答业务咨询点击这里给我发消息 点击这里给我发消息

王牌软件,兼职软件设计,软件修改,毕业设计。

本文出自 王牌软件,转载时请注明出处及相应链接。

本文永久链接: http://www.softwareace.cn/?p=688

0

一条评论

  1. Pingback: gafas ray ban aviator tienda online

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">


Ɣ回顶部

无觅相关文章插件,快速提升流量