如果一个DLL调用SendMessage向调用这个DLL的MFC发送消息,这个MFC该怎样接收并且处理消息呢?这个消息循环该怎么写?可不可以给出一个简单的例子?

解决方案 »

  1.   

    MFC是利用各种宏来处理消息循环的,如果是自定义消息写作ON_MESSAGE(....)即可,然后加上消息处理函数
      

  2.   

    在DLL某函数中
    #define IDC_NEED_SEND_MESSAGE 300
    void function(HWND hwnd,...) {
    ...
    ::SendMessage(hwnd,WM_COMMAND,IDC_NEED_SEND_MESSAGE,(LPARAM *)0);
    ...
    }在主程序中
    #define IDC_NEED_SEND_MESSAGE 300
    ... //消息声明中,可以使用向导生成
      ON_COMMAND(IDC_NEED_SEND_MESSAGE,OnNeedSendMessage)
    ...CXXXView::OnNeedSendMessage() {
    }
      

  3.   

    不知道你在说什么。通常说的消息循环是这样的代码:
    MSG msg;
    BOOL bRet;
    while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)

        if (bRet == -1)
        {
            // handle the error and possibly exit
        }
        else
        {
            TranslateMessage(&msg); 
            DispatchMessage(&msg); 
        }
    }
    另外MFC是微软基础类库的意思,SendMessage是给窗口发消息,不是给MFC发消息。
      

  4.   

    同意cnzdgs
    基本上都是这种处理的
      

  5.   

    来晚了。。
    支持 oo_v_ooON_COMMAND(消息ID,消息函数) 
      

  6.   

    AfxGetApp()->PumpMessage(); 就是启动一个消息循环
      

  7.   

    这个是深入浅出MFC中讲的windows消息循环的基本构架。。
    楼主建议你去卡看《深入浅出MFC》
      

  8.   

    《深入浅出mfc》里面详细讲述了消息在mfc里面是如何循环的。具体到你的问题,发给cXXXapp吧,然后再在mfc里面循环,那就自己控制了。