回 帖 发 新 帖 刷新版面

主题:RegisterHotKey注册热键的一个问题

最近看了一篇文章《Visual C#弹出窗口杀手》,里面有关热键的定义有个问题。里面有个语句为
RegisterHotKey(Handle,100,1|2,Keys.J),用它来加入了一个Ctrl+Alt+J的热键。
然后又重载了WndProc函数,如下:
protected override void WndProc( ref Message m ) 

  const int WM_HOTKEY = 0x0312; 
  switch(m.Msg) 
  { 
    case WM_HOTKEY: 
     MessageBox.Show("Hotkey pressed"); 
     break; 
  } 
  base.WndProc(ref m ); 

我想问一下,这个WM_HOTKEY的值是怎么算出来的。还有RegisterHotKey函数中的第二个参数(那个100)是什么意思
请高手指教!多谢

回复列表 (共2个回复)

沙发

MSDN,MSDN

板凳

100 是定义热键的标识符,VC中的CLASSWIZARD中没有对消息WM_HOTKEY进行封装,我们只有通过编程实现对该消息的映射及处理

RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT,′A′); 登记热键:Ctrl+Shift+A
RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_SHIFT,′a′); 登记热键:Ctrl+Shift+a

 LRESULT CExampleView::OnHotKey(WPARAM wParam,LPARAM lParam) 
{
     if (wParam== 1001||wParam= =1002) 
      CWnd::SetForegroundWindow();//使得被激活窗口出现在前景 
      MessageBox(″Hello,How do you do!″); 
      //用户可在此添加代码 
      return 0; 
}

程序运行完毕后解除热键释放系统资源: 
      UnRegisterHotKey(m_hWnd, 1001); 
      UnRegisterHotKey(m_hWnd, 1002); 



我来回复

您尚未登录,请登录后再回复。点此登录或注册