VC++如何使用其他窗口中的变量

大师,请问您,我在一个窗口下静态分割了3个窗口,分别是:1view.cpp、2view.cpp、3view.cpp请问您,如果想在3view.cpp中调用1view.cpp的变量a,这个怎么操作?
仅仅在3view.h的public中定义一个C1view * m_pView;,然后在3view.cpp里面m_pView->a就可以了么?
请明示,非常感谢!
之前有个朋友回答了,但是用的伪代码回答的,没解释清楚。还是得麻烦您看一下。谢谢!

直接定义视图指针,如果之前没有指针赋值,得不到实际窗口的数据。

如果是SDI单文档,根据窗口分隔位置,比较靠谱:

CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd;
C1View* m_pView=(C1View*)pMF->m_wndSplitter.GetPane(0,0);

这样之后,就可以m_pView->a访问了。

追问

这几句加在哪里?
另外有人说,
在Mainframe中切分3个View。
每个View在Mainframe中都定义一个指针变量,然后3个View就可以互相访问。
这个怎么弄?

追答

加在访问a之前。

你的基础知识实在是需要加强啊,这样的基础问题,确实有多种代码可以实现,但你的“有人说”,就是我这个办法的“啰嗦版”,看不出来么?

追问

您教导的对。
其他的没问题,就是加进去提示说,在MainFrm.h中的m_wndSplitter不可访问。

追答

m_pView=(C1view*)GetParent();
这个可以?拆分的话,这个在一个View中可获取不到另一个View。

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-17
现在3view.h的public中定义一个C1view * m_pView;,然后在3view.cpp里面m_pView->a这个应该可以,你试试就知道啊?追问

调试可以通过,但是一运行程序就出错了!应该是不能这么简单的干!
您还得帮忙看看。

追答

就是这样设置的,出错时debug模式还是RELEASE?
做一次rebuilt all,看看你比这个变量是不是保护成员。

追问

怎么rebuilt all?您教教我。
我的是vc2012版的。

相似回答