DLL里面如何进行消息映射?1、先.h中消息声明:afx_msg LONG OnComm(WPARAM ch, LPARAM port); 
2、后.cpp消息映射:ON_MESSAGE(WM_COMM_RXCHAR,OnComm) 
3、最后.cpp中消息实现LONG CDLLBcvmApp::OnComm(WPARAM ch, LPARAM port) 

    return 0; 

怎么才能实现上面的代码在DLL消息映射 

解决方案 »

  1.   

    你的类从CCmdTarget派生,然后在类声明中添加:DECLARE_MESSAGE_MAP()宏
    在实现文件中添加:
    BEGIN_MESSAGE_MAP(YOUCLASSNAME, CCmdTarget)
       ON_MESSAGE(WM_COMM_RXCHAR,OnComm)
    END_MESSAGE_MAP()
      

  2.   

    根在app一樣的mfc已經封裝好了如果你在dll内沒有開闢新的消息泵那麽dll窗體與宿主共用一個消息泵。
      

  3.   

    我生成的是MFC AppWizard(DLL)
    里面自带一个XXXXXApp消息声明添加了// ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CCOM_DLL_TESTApp)
    afx_msg LRESULT OnComm(WPARAM ch, LPARAM port);
    //}}AFX_VIRTUAL
    //{{AFX_MSG(CCOM_DLL_TESTApp)
    // NOTE - the ClassWizard will add and remove member functions here.
    //    DO NOT EDIT what you see in these blocks of generated code !
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()我在里面的消息映射添加了BEGIN_MESSAGE_MAP(CCOM_DLL_TESTApp, CWinApp)
    //{{AFX_MSG_MAP(CCOM_DLL_TESTApp)
    ON_MESSAGE(WM_COMM_RXCHAR, OnComm) 
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP() 
     
    然后添加一个LONG CCOM_DLL_TESTApp::OnComm(WPARAM ch, LPARAM port) 

        return 0; 

    可是没有用。。为什么
      

  4.   


    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CCOM_DLL_TESTApp)
    afx_msg LONG OnComm(WPARAM ch, LPARAM port);
    //}}AFX_VIRTUAL
    //{{AFX_MSG(CCOM_DLL_TESTApp)
    // NOTE - the ClassWizard will add and remove member functions here.
    //    DO NOT EDIT what you see in these blocks of generated code !
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    上面那个粘贴错了。
      

  5.   

    添加消息循环
    MSG msg; 
    while(GetMessage(&msg,NULL,0,0)) 

    TranslateMessage(&msg);
     DispatchMessage(&msg); 
    }
      

  6.   

    oyljerry 添加消息循环 添加到那里
      

  7.   

    消息映射是窗口类或线程类的概念,与DLL无关。你的消息是发给哪个窗口或线程的?