关于切分窗口的指针?

zhdleo 2002-12-04 12:44:10
一个窗口被 切分成两个,
那么CWnd* pParentWnd,
应该指的是整体的 窗口指针。

那么这2个被切分的部分,是否有各自的CWnd*的指针?
...全文
77 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewFree 2002-12-05
  • 打赏
  • 举报
回复
agree
GZCompiler 2002-12-05
  • 打赏
  • 举报
回复
你要在其他类中获得窗口指针,要经过这两步:
1. 获得MainFrame的指针
2. 通过SplitterWnd.GetPane获得右边视图的指针

方法:
1. 在要使用的文件包含MainFrm.h文件
获得MainFrame指针:
CMainFrame* pMF=(CMainFrame*)AfxGetApp()->GetMainWnd();
2. 获取右边视图的指针,要在文件头部包含该视图类头文件,如:
#include "RightView.h"
获取指针时:
CRightView* pRV=(CRightView*)pMF->m_SplitterWnd->GetPane(0,1);
另外要注意一点:
必须保证调用这行代码时,m_SplitterWnd已经创建,否则会出错!
ExitWin 2002-12-05
  • 打赏
  • 举报
回复
一行两列的窗口:
-----------------------
|
窗口1 | 窗口2
|

CLeftView *pLeftView = (CLeftView *)m_Splitter.GetPane(0,1);
GZCompiler 2002-12-05
  • 打赏
  • 举报
回复
to : zhdleo(叮东)

一行两列的窗口:
-----------------------
|
窗口1 | 窗口2
|
-----------------------

(中间的竖线表示SplitterWnd)
则要获得“窗口2”的指针:
CWnd *pWnd=m_Splitter.GetPane(0,1);
mietian 2002-12-05
  • 打赏
  • 举报
回复
觉得你应该用GetPane(0,1);

不过怎么用,我也不清楚!
zhdleo 2002-12-04
  • 打赏
  • 举报
回复
由于我不是在CMainFrame类中使用CWnd *pWnd=m_Splitter.GetPane(0,1);

而是在一个自定义的新类中使用。

所以,我在要使用的cpp文件的前面,加入了#include "MainFrm.h"

然后在我要使用的地方写成: //其中m_wndSplitter是CMainFrame类中的CSplitterWnd类型的变量---public.
CWnd* m_pHexWnd = CMainFrame::m_wndSplitter.GetActiveView(0,1);
或CWnd* m_pHexWnd = CMainFrame::m_wndSplitter.GetPane(0,1);
或CWnd* m_pHexWnd = CMainFrame::m_wndSplitter.GetActivePane(0,1);

都回报错: error C2228: left of '.GetActiveView' must have class/struct/union type
或: error C2228: left of '.GetPane' must have class/struct/union type
或: error C2228: left of '.GetActivePane' must have class/struct/union type

这是怎么回事?
zhdleo 2002-12-04
  • 打赏
  • 举报
回复
怎么没人解答了?

急呀。
zhdleo 2002-12-04
  • 打赏
  • 举报
回复
to GZCompiler(编译器)

非常感谢,不过我还是有点不明白:
你说的
如一行两列的窗口,想要得到第二列的指针:
CWnd *pWnd=m_Splitter.GetPane(0,1);
这 ----- 一行两列的窗口

是不是指 左右呢??

还有:
GetPane()
virtual CWnd* GetActivePane()
GetActiveView()
可能都是返回:CWnd*
那么有什么区别,都可以用吗?
Phourm 2002-12-04
  • 打赏
  • 举报
回复
CFrameWnd的儿子就是CSplitterWnd CSplitterWnd的儿子就是你的VIEW你的两个VIEW是弟兄关系
CDcolor 2002-12-04
  • 打赏
  • 举报
回复
mark
free_card 2002-12-04
  • 打赏
  • 举报
回复
up
GZCompiler 2002-12-04
  • 打赏
  • 举报
回复
如一行两列的窗口,想要得到第二列的指针:
CWnd *pWnd=m_Splitter.GetPane(0,1);
GZCompiler 2002-12-04
  • 打赏
  • 举报
回复
每个View都有自己的指针,
可使用CSplitterWnd::GetPane()函数得到。
zhdleo 2002-12-04
  • 打赏
  • 举报
回复
怎么没回音了?
zhdleo 2002-12-04
  • 打赏
  • 举报
回复
怎么写?

我再把我的问题说清楚点!

就是一个:document被分为2个View!
那么这两个view是否都有自己的CWnd* 指针?

如果有,怎么得到?
isdong 2002-12-04
  • 打赏
  • 举报
回复

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧