首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

100分,请教建立分割视图后,如何实现主框架类与多个视图之间的通讯

2012-02-01 
100分求助,请问建立分割视图后,怎么实现主框架类与多个视图之间的通讯?我用CSplitterWnd将视图分割为左右

100分求助,请问建立分割视图后,怎么实现主框架类与多个视图之间的通讯?
我用CSplitterWnd将视图分割为左右两个,一个是原工程的视图类,一个是新建的Formview派生的视图,如下,
if   (!m_wndSplitter.CreateView(0,   0,   pContext-> m_pNewViewClass,   paneSize1,   pContext))
return   FALSE;
if   (!m_wndSplitter.CreateView(0,   1,   RUNTIME_CLASS(CPatientView),   paneSize,   pContext))
            return   FALSE;
请问我怎么实现:
1、主框架和其中一个视图的通讯,包括在主框架中发出要求更新视图的命令。
2、两个视图类之间如何通讯,请高手指点,多谢了!


[解决办法]
全局变量, 或者传递指针过去
[解决办法]
框架拥有视图,在框架中定义两个获取视图指针的函数,比如:GetPatientView

而框架指针随时可以获得——AfxGetMainWnd();

CPatientView* pView = ((CFrameWnd*)AfxGetMainWnd())-> GetPatientView();
[解决办法]
在主框架中可以用:CPatientView* pView=(CPatientView*)m_wndSplitter.GetPane(0,1);
得到CPatientView类的指针,同样用m_wndSplitter.GetPane(0,0)得到另一个视图的指针吧;
关于视图类之间的通讯可以通过在视图类得到主框加的指针,再调用上面的函数得到
在NewView类中:
CMainFrame *pFrame=(CMainFrame*)GetParentFrame();//从视图类得到主框架指针
CPatientView * pview=(CPatientView*)pFrame-> m_wndSplitter.GetPane(0,1);//通过主框架得到另一个视图类的指针
[解决办法]
CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainFrame();
获取pMainFrame指针后,就可以获取wndSplitter变量,然后获取
CPatientView *pPatientView = (CPatientView *)wndSplitter.GetPane(0, 1);
[解决办法]
改正一下是AfxGetMainWnd

热点排行