出错提示:
CrLineXCDlg.cpp
D:\MyWorks\CrLineXC\CrLineXCDlg.cpp(116) : error C2601: 'OnHotKey' : local function definitions are illegal
D:\MyWorks\CrLineXC\CrLineXCDlg.cpp(126) : error C2601: 'OnDestroy' : local function definitions are illegal
Error executing cl.exe.CrLineXC.exe - 2 error(s), 0 warning(s)================================
代码:
在头文件里:
HICON m_hIcon; // Generated message map functions
//{{AFX_MSG(CCrLineXCDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButtonToRunCR();
virtual void OnOK();
//}}AFX_MSG
afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam); DECLARE_MESSAGE_MAP()///////////////////////////////////////////////////////BEGIN_MESSAGE_MAP(CCrLineXCDlg, CDialog)
//{{AFX_MSG_MAP(CCrLineXCDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButtonToRunCR)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_HOTKEY,OnHotKey)
END_MESSAGE_MAP()
///////////////////////////////////////////////////////
void CCrLineXCDlg::OnButtonToRunCR() 
{
//设置快捷键
RegisterHotKey(CCrLineXCDlg::m_hWnd,1001,MOD_CONTROL|MOD_ALT,'C');
RegisterHotKey(CCrLineXCDlg::m_hWnd,1002,MOD_CONTROL|MOD_ALT,'c');


LRESULT CCrLineXCDlg::OnHotKey(WPARAM wParam,LPARAM lParam) 
{
if(wParam == 1001 || wParam == 1002)
{
MessageBox("12345678987"); //Do ...
}
return(0);
}
void CCrLineXCDlg::OnDestroy() 
{
CDialog::OnDestroy();

// 解除热键
UnregisterHotKey(m_hWnd,10001);
UnregisterHotKey(m_hWnd,10002);
}
}

解决方案 »

  1.   

    LRESULT CCrLineXCDlg::OnHotKey(WPARAM wParam,LPARAM lParam) 
    {
    if(wParam == 1001 || wParam == 1002)
    {
    MessageBox("12345678987"); //Do ...
    }
    return(0);
    }

    void CCrLineXCDlg::OnDestroy() 
    {
    CDialog::OnDestroy();

    // 解除热键
    UnregisterHotKey(m_hWnd,10001);
    UnregisterHotKey(m_hWnd,10002);
    }
    把这两个函数的定义放在void CCrLineXCDlg::OnButtonToRunCR()函数的外边
      

  2.   

    谢谢楼上的,把那两个函数拿出来后,问题解决了一部分。
    仍然存在2个问题:
    第一:
    Compiling...
    CrLineXCDlg.cpp
    D:\MyWorks\CrLineXC\CrLineXCDlg.cpp(219) : error C2509: 'OnDestroy' : member function not declared in 'CCrLineXCDlg'
            d:\myworks\crlinexc\crlinexcdlg.h(14) : see declaration of 'CCrLineXCDlg'
    Error executing cl.exe.CrLineXC.exe - 1 error(s), 0 warning(s)
    ================================
    第二,我尝试着把出错的OnDestroy函数部分删掉,可以正常编译。
    但是运行程序后,按ALT + c,没有任何响应。
    这是什么原因呢?
    新手问题,请多多包涵,再次感谢。
      

  3.   

    不好意思,上面的第二个问题是我疏忽了。热键定义的是Ctrl + Alt +C请高手帮忙看看第一个OnDestroy出错是因为什么呢。谢谢,问题解决马上送份结贴。
      

  4.   

    头文件中没定义OnDestroy因为你没用dll,所以热键只能在窗口激活时才有效