面向对象的消息即使指去调用对象的相应的成员函数,但我想通过Windows操作系统的消息机制来发送消息,然后在类中自己实现相应的消息处理函数,我想这样编程更加于操作系统融合。

解决方案 »

  1.   

    非窗口对象应该不会接收消息,但可以模仿WINDOWS的消息机制。
      

  2.   

    CMyCmd 从CCmdTarget中派生出来,
    BEGIN_MESSAGE_MAP(CPmdApp, CWinApp)
    //{{AFX_MSG_MAP(CPmdApp)
    ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
    // NOTE - the ClassWizard will add and remove mapping macros here.
    //    DO NOT EDIT what you see in these blocks of generated code!
    //}}AFX_MSG_MAP
    // Standard file based document commands
    ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
    ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
    // Standard print setup command
    ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
             ON_COMMAND(ID_MYCOMMAND, CMyCmd::OnMyCommand)
    END_MESSAGE_MAP()
      

  3.   

    to ydogg(灰毛兔频频):我现在正在看msdn中 message map,正因为CCmdTarget中有消息机制,所以我从CCmdTarget中派生出我要的类。但是我到现在还没有找到答案。
      

  4.   

    to masterz():我看了Class wizard 创建的代码,和你写出来的一样,一看这条宏DECLARE_MESSAGE_MAP()就晓得可以处理消息,到时候我可以使用ON_MESSAGE()来自定义消息,但是PostMessage和SendMessage都需要一个HWND窗口句丙作为参数,问题就在这里,怎么把信息发过去。
      

  5.   

    如果实在不行我只有把相应的消息处理函数作成public,然后去手工调用了,:(
      

  6.   

    看看CMDIFrameWnd::OnCmdMsg吧
    CCmdTarget可以把命令转发给其他CCmdTarget派生类。
      

  7.   

    谢谢 ,jiangsheng(蒋晟) ,我给分了。
    我试试看。有结果就告诉你们。
    :)