MainFrm.h : CMainFrame 包含了
#include "FileView.h"
#include "ClassView.h"
#include "OutputWnd.h"
#include "PropertiesWnd.h"
发送消息处包含并使用(CFileView.cpp,使用CFileView类)
#include "MainFrm.h"
SendMessage(UM_SHOWCLASSLIST);
处理消息处(CClassView.cpp,使用CClassView类)
头文件
#define UM_SHOWCLASSLIST WM_USER+1
afx_msg LRESULT ShowClassList(WPARAM, LPARAM);
DECLARE_MESSAGE_MAP()
cpp文件
#include "MainFrm.h"
BEGIN_MESSAGE_MAP(CClassView, CDockablePane)
ON_MESSAGE(UM_SHOWCLASSLIST, ShowClassList)
END_MESSAGE_MAP()LRESULT CClassView::ShowClassList(WPARAM, LPARAM)
{
MessageBox(_T("显示响应"));
return 0;
}
请问CFileView发送的消息为什么CClassView没有接受到呢?要如何在CFileView发送消息,而CClassView接受到消息呢?

解决方案 »

  1.   

    SendMessage(UM_SHOWCLASSLIST);你把消息发给CFileView自己,肯定收不到了,必须获取CallView的句柄,然后::SendMessage(hWndClassView,UM_SHOWCLASSLIST,0,0)
      

  2.   


    请教,那么CallView的句柄要如何获得?
      

  3.   

    看你这个好像是vs2008 sp1的工程吧,它的FileView和ClassView都在CMainFrame中定义的,你在CMainFrame中把ClassView的句柄或者指针传给FileView就可以了啊
      

  4.   

    谢谢oyster2008,
    CMainFrame *pMain= (CMainFrame *)AfxGetMainWnd();
    ::SendMessage(pMain->m_wndClassView,UM_SHOWCLASSLIST,0,0);
    这样就行了.