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);


相关文章
|
1月前
|
C# Windows
C#通过代码实现快捷键编辑
C#通过代码实现快捷键编辑
|
8月前
[MFC][bug记录]MFC移植对话框属性
[MFC][bug记录]MFC移植对话框属性
|
C++ Python
VS Code按住ctrl不能跳转到定义/函数(Python)
VS Code按住ctrl不能跳转到定义/函数(Python)
1907 0
VS Code按住ctrl不能跳转到定义/函数(Python)
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
|
1月前
|
索引
win32编程 -- 菜单使用
win32编程 -- 菜单使用
16 1
|
1月前
|
IDE 开发工具
QT案例IDE编写 -- 新建和保存文件及退出程序
QT案例IDE编写 -- 新建和保存文件及退出程序
39 0
|
1月前
MFC编写DLL窗口功能代码
MFC编写DLL窗口功能代码
14 0
MDK5 代码折叠功能
MDK5 代码折叠功能
204 0
MDK5 代码折叠功能
x11/xwindow GUI窗口代码范例
x11/xwindow GUI窗口代码范例
153 0
VC如何打开代码对应的界面编辑窗口
VC如何打开代码对应的界面编辑窗口
137 0
VC如何打开代码对应的界面编辑窗口