高分请教。基于对话框的应用程序,如何设置快捷键,谢谢!
我现在搞毕业设计,急用,谢谢指教

解决方案 »

  1.   

    还是不明,具体点,假设我要设置一个button的热键,如何做。谢谢!
      

  2.   

    button->properties->caption->&Test
    当按下alt+t时就触发单击按钮事件
      

  3.   

    to:kongyunzhongque(云雀)
    但我是不要按alt键的, 好比我设置一个button,当我按数字键时它就执行。
      

  4.   

    哈哈...这样好了:
    1.在 OnInitDialog 里
      ::RegisterHotKey(m_hWnd,0xa009,MOD_CONTROL,0x57);
      ::SetFocus(m_hWnd);2.添加消息
    BOOL CMyMFCDlg::PreTranslateMessage(MSG* pMsg) 
    {
      if (pMsg->message==WM_HOTKEY && pMsg->wParam==0xa009)
      {
        AfxMessageBox("Hello, This is hot key :-)");
      }
    return CDialog::PreTranslateMessage(pMsg);
    }LRESULT CMyMFCDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
      if(message == WM_CLOSE)
      {
        ::UnregisterHotKey(m_hWnd,0xa009);
      }
      return CDialog::WindowProc(message, wParam, lParam);
    }好了,现在运行程序,请按 Ctrl + w ,:-)
      

  5.   

    必需是一个组合键,与下面其中之一的功能键组合:
    MOD_ALT
    MOD_CONTROL
    MOD_SHIFT
    MOD_WIN更多详情,查看 RegisterHotKey
      

  6.   

    还有就是批量的
    设计时添加Accelerator资源IDR_ACCELERATOR1,选定button的ID,选定快捷键,等等在OninitDialog加载Accelerator资源:
    m_hAccel =LoadAccelerators(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
    在PreTranslateMessage处理快捷键消息
    BOOL C***Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(pMsg->message ==WM_HOTKEY && pMsg->wParam ==0x3222)
    {
    SetWindowPos(&CWnd::wndTopMost, 0,0,0,0,SWP_NOMOVE |SWP_NOSIZE |SWP_SHOWWINDOW);
    SetForegroundWindow();
    ShowWindow(SW_SHOWNORMAL);
    return TRUE;
    }
    ::TranslateAccelerator(this->m_hWnd,m_hAccel,pMsg);
    return CDialog::PreTranslateMessage(pMsg);
    }