解决方案 »

  1.   

    没时间弄程序了
    你找这个人吧:http://my.csdn.net/dingxz105090
      

  2.   

    我这边写了一个测试程序是没有问题的,不知道你的程序怎么写的出了问题
    我建了一个单文档程序,在about对话框中添加热键,在其他程序界面按下热键,可以接受到class CAboutDlg : public CDialog
    {
    public:
    CAboutDlg();// 对话框数据
    enum { IDD = IDD_ABOUTBOX };protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
    protected:
    DECLARE_MESSAGE_MAP()
    public:
    //afx_msg void OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2);
    afx_msg LONG OnHotKey(WPARAM wParam,LPARAM lParam);//手动加入   
    virtual BOOL OnInitDialog();
    };CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    }void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    }BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    ON_MESSAGE(WM_HOTKEY,OnHotKey)
    END_MESSAGE_MAP()// 用于运行对话框的应用程序命令
    void ChotkeyApp::OnAppAbout()
    {
    CAboutDlg aboutDlg;
    aboutDlg.DoModal();
    }
    // ChotkeyApp 消息处理程序
    LONG  CAboutDlg::OnHotKey( WPARAM  wParam, LPARAM  lParam) 
    {
    UINT  fuModifiers = ( UINT ) LOWORD(lParam);   // key-modifier flags    
    UINT  uVirtKey = ( UINT ) HIWORD(lParam);      // virtual-key code     //判断响应了什么热键   
    if ( MOD_SHIFT == fuModifiers &&  'D'  == uVirtKey )  
    {  
    AfxMessageBox(_T("你按下了组合键 shift + d" ));    
    }  
    return  0;          
    }
    BOOL CAboutDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    WORD virtualcode = MOD_SHIFT;
    WORD modifiers = 'D';
    // TODO:  在此添加额外的初始化
    if ( !RegisterHotKey(this->m_hWnd, 100612, virtualcode, modifiers) )  //函数请参考MSDN
    {
    MessageBox(_T("热键冲突"));
    }
    return TRUE;  // return TRUE unless you set the focus to a control
    // 异常: OCX 属性页应返回 FALSE
    }
      

  3.   

    你那个不响应可能是因为你的焦点不在OnHotKey所在的类所处理的界面中吧
      

  4.   

    lis2012,这几天我试了一下,还是不能响应热键,我可以把工程发你,帮我分析一下吗?