您的位置:首页 > 其它

如何在一个FormView里获得另一个FormView的指针

2007-07-13 10:06 232 查看
我的目标是: 想从FormView A 向FormView B 发送自定义消息。
我的程序的窗口结构是: 有一个视图类CMyView, 和两个FormView:A和B
我遇到的问题是: 在FormView A里调用CMyDoc遍历视图类以找到FormView B取
得的文档类指针却为0x00000000
我是这样做的: 1.在CMyDoc中创建GetView函数,内容如下:
CView* CMyDoc::GetView()
{
CView *pView ;
POSITION pos=GetFirstViewPosition();
while(pos!=NULL)
{
pView = GetNextView(pos);
if(pView->IsKindOf(RUNTIME_CLASS CFormViewB)))
break;
}
return pView;
}
2. 在FormViewA的按钮响应函数中,写了如下代码:
void CFormViewA::OnButtonTest()
{
CMainFrame *Frm = (CMainFrame*)AfxGetMainWnd();
CMyDoc* pDoc=(CMyDoc*)Frm->GetActiveDocument();
CView *pView=pDoc->GetView();
pView->PostMessage(WM_USRMSG,0,0);
}

问题出在: 语句CMyDoc* pDoc=(CMyDoc*)Frm->GetActiveDocument();调
试到这里,查看pDoc的值为0x00000000,请问这是什么问题,
该怎么解决

----------------------------------------------------------------------------------------------------------------------------------------------------

解决方法: 1.(modaoshi3002)定义两个全局的视图变量 pA,pB,在各自的构造函数里写好:

pA = this;pB= this;在要用到的文件里extern一下,搞定!

2.我又找到了个办法,因为我的formViewB是由MainFrm的OnCreateClient分割而成的,于是:
CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
CFormViewB *pView = (CFormViewB*)pFrame- >m_wndSplitter.GetPane(1,0);
pView- >PostMessage(WM_USRMSG,0,0);

3.题目中我的那个办法为什么不行,为啥不能获得文档指针呢?还没有解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: