void CQuickRunDlg::OnBnClickedAddBtn()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
GetDlgItemText(IDC_HOTKEY1,str);
WORD virtualcode,modifiers;
m_HotKey.GetHotKey(modifiers,virtualcode); if (!RegisterHotKey(m_hWnd,1005,modifiers,virtualcode))
MessageBox(_T("热键设置错误,可能重复了!"));
else
MessageBox(_T("热键设置成功!"));
// m_HotKey.
}void CQuickRunDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{ //自定义消息 WM_HOTKEY
if (wParam==1005)
{
UpdateData(TRUE); //执行
ShellExecute(this->m_hWnd,_T("open"),_T("notepad"),NULL,NULL,SW_SHOW);
}
}不知道哪错了,求教,以前用BCB好像也是这么写的,是不是那几个键值的错? 

解决方案 »

  1.   


    void CQuickRunDlg::OnBnClickedAddBtn() 

    // TODO: 在此添加控件通知处理程序代码 
    CString str; 
    GetDlgItemText(IDC_HOTKEY1,str); 
    WORD virtualcode,modifiers; 
    m_HotKey.GetHotKey(virtualcode,modifiers); if (!RegisterHotKey(m_hWnd,1005,modifiers,virtualcode)) //你这里写反了
    MessageBox(_T("热键设置错误,可能重复了!")); 
    else 
    MessageBox(_T("热键设置成功!")); 
    // m_HotKey. 
      

  2.   

     在OnInitDialog()里添加   
      ::RegisterHotKey(m_hWnd,9999,MOD_CONTROL   |   MOD_WIN,   'K');       //注册   ctrl   +   win   +   k   
        
      然后   
      LRESULT   CAaaaDlg::WindowProc(UINT   message,   WPARAM   wParam,   LPARAM   lParam)     
      {   
      //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class   
      if   (message==WM_HOTKEY)   
      {   
      if   (wParam==9999)   
      {   
      MessageBox("ok");   
      }   
        
      }   
      return   CDialog::WindowProc(message,   wParam,   lParam);   
      }