MFC不同视图之间的信息传递

weixin_35837760 2016-08-19 11:34:35
建立了一个基于单文档的MFC程序
将视图分割成两个两个视图,然后套上了FormView1和FormView2
FormView1插入了一个TreeList树形控件,FormView2插入了一个ListCtrl列表控件
现在问题是我想通过双击树形控件的节点,然后响应FormView2的ListCtrl控件,弹出需要的数据
现在已经实现了双击树形控件获取节点的信息,但是不会响应FormView2的ListCtrl,应该怎样去做呢
谢谢大神们。
...全文
134 点赞 收藏 6
写回复
6 条回复
笨笨仔 2016年08月19日
在同一个线程中可以使用指针直接控制。 关于获得MFC窗口其它类指针的方法(CSDN) 访问应用程序的其它类 获得CWinApp: -在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp -在其它类中只能用AfxGetApp() 获得CMainFrame: -在CMinApp中用AfxGetMainWnd()或者m_pMainWnd -在CChildFrame中可用GetParentFrame() -在其它类中用AfxGetMainWnd() 获得CChildFrame: -在CView中用GetParentFrame() -在CMainFrame中用MDIGetActive()或GetActiveFrame() -在其它类中用AfxGetMainWnd()->MDIGetActive()或AfxGetMainWnd()->GetActiveFrame() 获得CDocument: -在CView中用GetDocument() -在CChildFrame中用GetActiveView()->GetDocument() -在CMainFrame中用 -if SDI:GetActiveView()->GetDocument() -if MDI:MDIGetActive()->GetActiveView()->GetDocument() -在其它类中 -if SDI:AfxGetMainWnd()->GetActiveView()->GetDocument() -if MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument() 获得CView: -在CDocument中 POSITION pos = GetFirstViewPosition();GetNextView(pos) -在CChildFrame中 GetActiveView() -在CMainFrame中 -if SDI:GetActiveView() -if MDI:MDIGetActive()->GetActiveView() -在其它类中 -if SDI:AfxGetMainWnd()->GetActiveView() -if MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView() 不过要注意在doc中要取得view的指针C*View要注意类C*View声明的问题, 因为默认情况下,mfc在*View.h中已经包含了*Doc.h,如果在*Doc.h中包含 *View.h,就会引起嵌套包含问题,这样要在*Doc.h中加入 class C*View; 而在*Doc.cpp中加入 #include "*View.h"
回复 点赞
Eleven 2016年08月19日
你的FormView1和FormView2类中不是都可以调用AfxGetMainWnd()获取CMainFrame主框架窗口指针吗?这样不就可以通过CMainFrame来中转信息了吗? 另外你应该是用CSplitterWnd来拆分视图的吧,在主框架CMainFrame类中利用CSplitterWnd::GetPane()来获取对应的View类指针
回复 点赞
weixin_35837760 2016年08月19日
引用 1 楼 VisualEleven 的回复:
可以通过主框架窗口CMainFrame类来中转。AfxGetMainWnd()
大哥,能给点详细的步骤吗,我是初学MFC,不甚感激
回复 点赞
Eleven 2016年08月19日
可以通过主框架窗口CMainFrame类来中转。AfxGetMainWnd()
回复 点赞
weixin_35837760 2016年08月19日
我如今的思路是在双击Fromview1中的TREELIST获取字符串STR1,然后再FORMVIEW1中调用DOC指针,然后在DOC设置一个同类型变量将STR1传递到FORMVIEW2中,然后尝试过可以成果传递str1了,但是不知道在FormView2中运用哪个函数可以响应FromVIEW1的双击才执行LISTCTRL上面的数据显示
回复 点赞
weixin_35837760 2016年08月19日
引用 3 楼 VisualEleven 的回复:
你的FormView1和FormView2类中不是都可以调用AfxGetMainWnd()获取CMainFrame主框架窗口指针吗?这样不就可以通过CMainFrame来中转信息了吗? 另外你应该是用CSplitterWnd来拆分视图的吧,在主框架CMainFrame类中利用CSplitterWnd::GetPane()来获取对应的View类指针
大哥,再给点详细步骤可以吗,谢谢你了,我刚上路学习的。求你咯
回复 点赞
发动态
发帖子
数据库
创建于2007-09-28

3443

社区成员

3.9w+

社区内容

VC/MFC 数据库
社区公告
暂无公告