QQ登录

只需一步,快速开始

213上位机VC MFC使用快捷键快速完成指定功能

[ 复制链接 ]

213上位机VC MFC使用快捷键快速完成指定功能

213上位机VC MFC使用快捷键快速完成指定功能
213上位机VC MFC使用快捷键快速完成指定功能
功能展示
快捷键能够提高软件 的操作效率,比如QQ发送消息快捷键可以设置为Enter键或Ctrl+Enter键, 我们当前例程实现快捷键的使用功能,按Ctrl+Q, Ctrl+W, Ctrl+E三个快捷键可以快速调用不同对话框,效果如图;
要点提示
1一.快捷键的使用可以用函数RegisterHotKey()进行注册;
函数原型:BOOLRegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk)
参数含义:
1.hWnd:接收热键产生WM_HOTKEY消息的窗口句柄。若该参数NULL,传递给调用线程的WM_HOTKEY消息必须在消息循环中进行处理。
2.id:定义热键的标识符。调用线程中的其他热键,不能使用同样的标识符。应用程序必须定义一个0X0000-0xBFFF范围的值。一个共享的动态链接库(DLL)必须定义一个范围为0xC000-0xFFFF的值(GlobalAddAtom函数返回该范围)。为了避免与其他动态链接库定义的热键冲突,一个DLL必须使用GlobalAddAtom函数获得热键的标识符。
3.fsModifoers:定义为了产生WM_HOTKEY消息而必须与由nVirtKey参数定义的键一起按下的键。该参数可以是如下值的组合:
MOD_ALT
0x0001按下的可以是任一Alt键。
MOD_SHIFT
0x0004按下的可以是任一Shift键。
MOD_WIN
0x0008按下的可以是任一Windows徽标键。
MOD_NOREPEAT
0x4000更改热键行为,以便键盘自动重复不会产生多个热键通知。
MOD_CONTROL
0x0002按下的可以是任一Ctrl键。
4.vk:定义热键的虚拟键码。
数调用成功,返回一个非0值。若函数调用失败,则返回值为0。 可以调用GetLastError函数获取具体错误代码。
二.一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应
用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。
其中WM_HOTKEY消 息的格式为:     idHotKey   =   (int)  wParam;   //   该参数在设置系统级的热键有用,一般不予使用
fuModifiers   =  (UINT)   LOWORD(lParam);     //热键的辅助按键
uVirtKey   =  (UINT)   HIWORD(lParam);   //热键的键值   
三.在程序退出时再调用函数UnRegisterHotKey(handle,  HotKeyId); 进行注销;
实现功能
1.新建基于对话框的应用程序
2.添加三个对话资源,关联对话框类,再将三个对话框类的头文件包含到主对话框中进行热键的测试用;
3.添加三个对话框变量及三个热键ID及热键消息处理函数private:ATOM m_HotkeyID0;
ATOM m_HotkeyID1; ATOM m_HotkeyID2; void HotKey(WPARAMwParam,LPARAM lParam); CDlg1 m_Dlg1;CDlg1 m_Dlg2;CDlg1m_Dlg3; 并在主对话框初始化函数OnInitDialog()中初始化
  1. m_HotkeyID0 = GlobalAddAtom("MyHotKey0")-0XC000;
  2.         m_HotkeyID1 = GlobalAddAtom("MyHotKey1")-0XC000;
  3.         m_HotkeyID2 = GlobalAddAtom("MyHotKey2")-0XC000;
  4.         if(!RegisterHotKey(this->m_hWnd,m_HotkeyID0,MOD_CONTROL,'A') )
  5.                 MessageBox("注册热键失败");
  6.         if(!RegisterHotKey(this->m_hWnd,m_HotkeyID1,MOD_CONTROL,'S') )
  7.                 MessageBox("注册热键失败");
  8.         if(!RegisterHotKey(this->m_hWnd,m_HotkeyID2,MOD_CONTROL,'D') )
  9.                 MessageBox("注册热键失败");
  10.         m_Dlg1.Create(IDD_DIALOG1,this);
  11.         m_Dlg2.Create(IDD_DIALOG2,this);
  12.         m_Dlg3.Create(IDD_DIALOG3,this);
  13. 4.程序退出时注销热键
  14. void CGkbc8Dlg::OnDestroy()
  15. {
  16.         CDialog::OnDestroy();
  17.         ::UnregisterHotKey(this->m_hWnd,m_HotkeyID0);//注销热键
  18.         ::UnregisterHotKey(this->m_hWnd,m_HotkeyID1);
  19.         ::UnregisterHotKey(this->m_hWnd,m_HotkeyID2);
  20. }
复制代码
  1. 5。热键的处理函数为void CGkbc8Dlg::HotKey(WPARAM wParam,LPARAM lParam)
  2. {
  3.         if(m_HotkeyID0 == (int)wParam)
  4.         {
  5.                 m_Dlg1.SetWindowPos(&wndTop,300,300,400,400,SWP_NOSIZE);
  6.                 m_Dlg1.ShowWindow(SW_SHOW);
  7.                 m_Dlg2.ShowWindow(SW_HIDE);
  8.                 m_Dlg3.ShowWindow(SW_HIDE);
  9.         }
  10.         if(m_HotkeyID1 == (int)wParam)
  11.         {
  12.                 m_Dlg2.SetWindowPos(&wndTop,600,300,400,400,SWP_NOSIZE);
  13.                 m_Dlg2.ShowWindow(SW_SHOW);
  14.                 m_Dlg1.ShowWindow(SW_HIDE);
  15.                 m_Dlg3.ShowWindow(SW_HIDE);
  16.         }
  17.         if(m_HotkeyID2 == (int)wParam)
  18.         {
  19.                 m_Dlg3.SetWindowPos(&wndTop,900,300,400,400,SWP_NOSIZE);
  20.                 m_Dlg3.ShowWindow(SW_SHOW);
  21.                 m_Dlg1.ShowWindow(SW_HIDE);
  22.                 m_Dlg2.ShowWindow(SW_HIDE);
  23.         }
  24. }
复制代码
记得将热键的处理函数与消息WM_HOTKEY进行映射关联,这样用户按下热键时我们的热键处理函数才会被调用
我们来演示下功能实现的整个过程

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:213.上位机VC MFC使用快捷键快速完成指定功能.rar 
文件大小:136.07 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索