MFC中多视图之间的通信
小弟最近在写一个程序,单文档,有三个view,甲view中我创建了派生的CTreeCtrl控件,乙view中我创建了派生的CListCtrl控件(之所以不采用CTreeView和CListView是因为我想封装这两个控件),现在的问题是:我在CTreeCtrl中获得一个消息,必须调用在CListCtrl中的自定义函数,小弟试过以下几种方法,都不能得到正确结果,所以还请高手帮忙:
1 定义关于派生的CListCtrl的全局变量,在.h文件中使用extern修饰符,在.cpp中直接定义指针,编译通过,但运行时执行非法操作。可以确定不是其他方面的问题,因为小弟把这几行代码注释掉,程序可以正常运行,只是在CTreeCtrl接受消息以后不会调用CListCtrl中的自定义函数;
2 消息发送。CTreeCtrl接受消息以后发送自定义消息::PostMessage(NULL,MM_DISKSELCHANGED,(UINT)currentDir,0),在乙view中接受该消息并调用消息处理函数,单步跟踪发现消息被正确发出,但是乙view不知为何并没有接受该消息,因此也没有执行消息处理函数,程序编译通过,运行正常,就是在CListCtrl中没有正常显示;
3 直接取控件的指针。我在CTreeList中调用AfxGetMainWnd(),再使用GetNextWindow(),但是我不知道何时才能取到我所需要的CListCtrl的指针。
如果能有例程,小弟万分感谢。