Hot Key Control快捷键控件


hot key control用法:

A "hot key control" is a window that enables the user to create a hot key. 
A "hot key" is a key combination that the user can press to perform an action quickly. 
(For example, a user can create a hot key that activates a given window and brings it 
to the top of the Z order.) The hot key control displays the user's choices and ensures 
that the user selects a valid key combination.


例子1:

1)加入控件变量:

CHotKeyCtrl m_hotKeyCtrl;
DDX_Control(pDX, IDC_HOTKEY1, m_hotKeyCtrl);

2)添加一按钮和按钮处理程序,用户设置完HotKey后按此按钮即设置了新的HotKey

afx_msg void OnBnClickedButton2();
ON_BN_CLICKED(IDC_BUTTON2, &CVS_2005_DlgDlg::OnBnClickedButton2)
void CVS_2005_DlgDlg::OnBnClickedButton2()
{
//#define HOTKEYF_SHIFT           0x01
//#define HOTKEYF_CONTROL         0x02
//#define HOTKEYF_ALT             0x04
//#define HOTKEYF_EXT             0x08
 WORD VirtualKeyCode=0,fsModifiers = 0; 
 m_hotKeyCtrl.GetHotKey(VirtualKeyCode,fsModifiers);

//#define MOD_ALT         0x0001
//#define MOD_CONTROL     0x0002
//#define MOD_SHIFT       0x0004
//#define MOD_WIN         0x0008

 //GetHotKey() 与 RegisterHotKey()用的标志位不一样,需要转换
UINT fsModifiers2 = 0;
if (fsModifiers & HOTKEYF_SHIFT)
{
 fsModifiers2 |=MOD_SHIFT;
}
if (fsModifiers & HOTKEYF_CONTROL)
{
 fsModifiers2 |=MOD_CONTROL;
}
if (fsModifiers & HOTKEYF_ALT)
{
 fsModifiers2 |=MOD_ALT;
}

 RegisterHotKey(GetSafeHwnd(), 1, fsModifiers2, VirtualKeyCode); // 注册热键
}


例子2:

1)在 VC ++ 6.0 和VS2005中,大多数的窗口消息可以从 ClassWizard 中找到,但是一些不常用的消息
在 ClassWizard 中并没有封装 ,WM_HOTKEY 就是其中一个,因此用户必须手动添加
。添加代码如下:

afx_msg LRESULT OnHotKey(WPARAM wp,LPARAM lp); 
ON_MESSAGE(WM_HOTKEY,&CVS_2005_DlgDlg::OnHotKey)
LRESULT CVS_2005_DlgDlg::OnHotKey(WPARAM wp,LPARAM lp) 
{
   WinExec("notepad",1);//打开记事本
  return 1;
}

2)注册热键
BOOL CVS_2005_DlgDlg::OnInitDialog()
{
 ...
        UINT fsModifiers = 0; 
 fsModifiers |= MOD_CONTROL; 
 fsModifiers |= MOD_ALT; 
 RegisterHotKey(GetSafeHwnd(), 1, fsModifiers, VK_F8); // 注册热键
 ...
}
这样,每当按下Ctrl+Alt+F8时,就会调出Windows记事本程序。 

虚拟键码表:

虚拟键码 对应值 对应键
VK_LBUTTON 1 鼠标左键
VK_RBUTTON 2 鼠标右键
VK_CANCEL 3 Cancel
VK_MBUTTON 4 鼠标中键
VK_XBUTTON1 5  
VK_XBUTTON2 6  
VK_BACK 8 Backspace
VK_TAB 9 Tab
VK_CLEAR 12 Clear
VK_RETURN 13 Enter
VK_SHIFT 16 Shift
VK_CONTROL 17 Ctrl
VK_MENU 18 Alt
VK_PAUSE 19 Pause
VK_CAPITAL 20 Caps Lock
VK_KANA 21  
VK_HANGUL 21  
VK_JUNJA 23  
VK_FINAL 24  
VK_HANJA 25  
VK_KANJI 25*  
VK_ESCAPE 27 Esc
VK_CONVERT 28  
VK_NONCONVERT 29  
VK_ACCEPT 30  
VK_MODECHANGE 31  
VK_SPACE 32 Space
VK_PRIOR 33 Page Up
VK_NEXT 34 Page Down
VK_END 35 End
VK_HOME 36 Home
VK_LEFT 37 Left Arrow
VK_UP 38 Up Arrow
VK_RIGHT 39 Right Arrow
VK_DOWN 40 Down Arrow
VK_SELECT 41 Select
VK_PRINT 42 Print
VK_EXECUTE 43 Execute
VK_SNAPSHOT 44 Snapshot
VK_INSERT 45 Insert
VK_DELETE 46 Delete
VK_HELP 47 Help
  48 0
  49 1
  50 2
  51 3
  52 4
  53 5
  54 6
  55 7
  56 8
  57 9
  65 A
  66 B
  67 C
  68 D
  69 E
  70 F
  71 G
  72 H
  73 I
  74 J
  75 K
  76 L
  77 M
  78 N
  79 O
  80 P
  81 Q
  82 R
  83 S
  84 T
  85 U
  86 V
  87 W
  88 X
  89 Y
  90 Z
VK_LWIN 91  
VK_RWIN 92  
VK_APPS 93  
VK_SLEEP 95  
VK_NUMPAD0 96 小键盘 0
VK_NUMPAD1 97 小键盘 1
VK_NUMPAD2 98 小键盘 2
VK_NUMPAD3 99 小键盘 3
VK_NUMPAD4 100 小键盘 4
VK_NUMPAD5 101 小键盘 5
VK_NUMPAD6 102 小键盘 6
VK_NUMPAD7 103 小键盘 7
VK_NUMPAD8 104 小键盘 8
VK_NUMPAD9 105 小键盘 9
VK_MULTIPLY 106 小键盘 *
VK_ADD 107 小键盘 +
VK_SEPARATOR 108 小键盘 Enter
VK_SUBTRACT 109 小键盘 -
VK_DECIMAL 110 小键盘 .
VK_DIVIDE 111 小键盘 /
VK_F1 112 F1
VK_F2 113 F2
VK_F3 114 F3
VK_F4 115 F4
VK_F5 116 F5
VK_F6 117 F6
VK_F7 118 F7
VK_F8 119 F8
VK_F9 120 F9
VK_F10 121 F10
VK_F11 122 F11
VK_F12 123 F12
VK_F13 124  
VK_F14 125  
VK_F15 126  
VK_F16 127  
VK_F17 128  
VK_F18 129  
VK_F19 130  
VK_F20 131  
VK_F21 132  
VK_F22 133  
VK_F23 134  
VK_F24 135  
VK_NUMLOCK 144 Num Lock
VK_SCROLL 145 Scroll
VK_LSHIFT 160  
VK_RSHIFT 161  
VK_LCONTROL 162  
VK_RCONTROL 163  
VK_LMENU 164  
VK_RMENU 165  
VK_BROWSER_BACK 166  
VK_BROWSER_FORWARD 167  
VK_BROWSER_REFRESH 168  
VK_BROWSER_STOP 169  
VK_BROWSER_SEARCH 170  
VK_BROWSER_FAVORITES 171  
VK_BROWSER_HOME 172  
VK_VOLUME_MUTE 173 VolumeMute
VK_VOLUME_DOWN 174 VolumeDown
VK_VOLUME_UP 175 VolumeUp
VK_MEDIA_NEXT_TRACK 176  
VK_MEDIA_PREV_TRACK 177  
VK_MEDIA_STOP 178  
VK_MEDIA_PLAY_PAUSE 179  
VK_LAUNCH_MAIL 180  
VK_LAUNCH_MEDIA_SELECT 181  
VK_LAUNCH_APP1 182  
VK_LAUNCH_APP2 183  
VK_OEM_1 186 ; :
VK_OEM_PLUS 187 = +
VK_OEM_COMMA 188  
VK_OEM_MINUS 189 - _
VK_OEM_PERIOD 190  
VK_OEM_2 191 / ?
VK_OEM_3 192 ` ~
VK_OEM_4 219 [ {
VK_OEM_5 220 \ |
VK_OEM_6 221 ] }
VK_OEM_7 222 ' "
VK_OEM_8 223  
VK_OEM_102 226  
VK_PACKET 231  
VK_PROCESSKEY 229  
VK_ATTN 246  
VK_CRSEL 247  
VK_EXSEL 248  
VK_EREOF 249  
VK_PLAY 250  
VK_ZOOM 251  
VK_NONAME 252  
VK_PA1 253  
VK_OEM_CLEAR 254
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值