我想在程序里面某个地方发送自定义消息,然后执行某些操作,但是SendMessage的用法不熟悉,编译通过不了,下面是我用的步骤,大家帮忙看看
第一步
#define WM_SUCCESSACCEPTREG WM_USER+101
第二步
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)后面加入
    ON_MESSAGE(WM_SUCCESSACCEPTREG,OnSuccessAcceptReg)            这个是报错的那个第80行
END_MESSAGE_MAP()
第三步
afx_msg LRESULT OnSuccessAcceptReg(WPARAM wParam,LPARAM lParam); 
第四步
SendMessage(WM_SUCCESSACCEPTREG,(WPARAM)0,(LPARAM)0);
第五步
这个是那个执行的函数
LRESULT C0506Dlg::OnSuccessAcceptReg(WPARAM wParam,LPARAM lParam)
{
AfxMessageBox("获取自定义消息!");
return 0;
}编译通过不了
0506Dlg.cpp(80) : error C2065: 'OnSuccessAcceptReg' : undeclared identifier
0506Dlg.cpp(80) : error C2440: 'type cast' : cannot convert from 'int *' to 'long (__thiscall CWnd::*)(unsigned int,long)'
上面是按照网上介绍的写的,后来看了别人程序,把把第三步和第5步改了下
第三步
void OnSuccessAcceptReg(WPARAM wParam,LPARAM lParam);
第五步
void C0506Dlg::OnSuccessAcceptReg(WPARAM wParam,LPARAM lParam)
{
AfxMessageBox("获取自定义消息!");
}
但是还是不行,不知道是哪里错了。

解决方案 »

  1.   

    加到CAboutDlg对话框去了  
    应该加到C0506Dlg  这个里面的消息映射   还是用上面的LRESULT 方式  不要用void  
      

  2.   

    给你个示例:
    声明消息#define WM_HIDE WM_USER+110
    在回调函数中做对消息的处理
    我用DLGBOX示例:BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    HDC hdc;
    PAINTSTRUCT ps;
    HINSTANCE hi;
        switch(uMsg)
        {
            HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
            HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
    HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    //HANDLE_MSG(hWnd,WM_CTLCOLOR, Main_OnCtlColor);
    HANDLE_MSG(hWnd,WM_TIMER, Main_OnTimer);

    case WM_HIDE:
    {
    MessageBox(hWnd,"HIDE","",0);
    ShowWindow(hWnd,SW_HIDE);
    }break;
        }

        return FALSE;
    }然后调用就可以了
    例如按下BUTTON
     case IDC_OK:
    SendMessage(hwnd,WM_HIDE,0,0);
            break;