在单文档中窗口分割的问题,分割为一个视图,一个对话框

huaxiawp 2014-04-22 07:20:16
我是mfc初学者,在mfc单文档工程中,遇到问题,不知道怎样才能实现左边显示对话框,右边显示视图。我的代码如下:
在CMainFrame定义一个类CSplitterWnd的对象m_Spwnd
创建一个对话框CCtrlDlg,继承CFormView;并且在CMainFrame.cpp加上头文件#include “CtrlDlg .h”
创建一个视图类CLeftView,继承CFormView;并且在CMainFrame.cpp加上头文件#include “LeftView .h"

下面是实现窗口分类的代码:
编译没问题 但是就是运行出现问题如下:
求大神解决
...全文
295 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yishuihanmeinanzi 2016-06-06
  • 打赏
  • 举报
回复
想问下版主,我也遇到了一样的问题,我也是想实现左边显示对话框,右边显示视图,但是现在我不知道那个对话框类怎么继承CFormView??能说一下你是怎么做的吗?
schlafenhamster 2014-04-24
  • 打赏
  • 举报
回复
m_spwnd.CreateView(0,0,RUNTIME_CLASS(CCtrlDlg), CSize(200,500), pContext);//确定新的分割窗口左边的对话框类 m_spwnd.CreateView(0,1,RUNTIME_CLASS(CLeftView), CSize(100,500), pContext); //确定新的分割窗口右边的视图类 CCtrlDlg 派生至 CFormView (即对话框的 view) 下面不能再有 CreateView()
huaxiawp 2014-04-24
  • 打赏
  • 举报
回复
就是表明一个窗口是水平分割还是垂直分割是吧,但是我没用到这些函数就左右分割了,直接使用BOOL ret=m_spwnd.CreateStatic(this,1,2);一分为二了呀
schlafenhamster 2014-04-23
  • 打赏
  • 举报
回复
2个 view 左右, 是把 右边 由 分割 成 上下 2个 //创建接收数据显示窗口 pContext->m_pCurrentFrame=this; ret=m_spwnd.CreateView( 0,0, RUNTIME_CLASS(LanList), czPane, pContext); if(!ret) { TRACE("SplitCreateView Failed(1)...\n"); return ret; } 那么 一个 m_spwnd 是 不够的, 还要一个 m_spwnd1 把 右边 再分割为 2个, 然后 在 m_spwnd1 中 create 2个 view。 这样 共 3个 view, 左 一个, 右 2个。.
huaxiawp 2014-04-23
  • 打赏
  • 举报
回复
前两个参数分别是新视的分隔器窗口行,新视的分隔器窗口列
我是这样解决的:在(VC++6.0)菜单里把选项改一下就能运行"Project"->"settin**击c/c++"->"Category选项中选择Preprocessor"
->"在Undefined symbols:填写_DEBUG" 重新编译运行即可,但是出现下面的情况
Eleven 2014-04-23
  • 打赏
  • 举报
回复
你两处调用CreateView的地方,传递的前两个参数都是0,0
huaxiawp 2014-04-23
  • 打赏
  • 举报
回复
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: Add your specialized code here and/or call the base class BOOL ret=m_spwnd.CreateStatic(this,1,2); if(!ret) { TRACE("SplitCreate Failed...\n");//debug时在调试窗口显示字符串,release下无用 return ret; } m_spwnd.CreateView(0,0,RUNTIME_CLASS(CCtrlDlg), CSize(200,500), pContext);//确定新的分割窗口左边的对话框类 m_spwnd.CreateView(0,1,RUNTIME_CLASS(CLeftView), CSize(100,500), pContext); //确定新的分割窗口右边的视图类 //计算窗口尺寸 CRect rt; GetClientRect(&rt); CSize czPane(rt.Width()/4, rt.Height()),czPane1(rt.Width()*3/4, rt.Height());//矩形的宽he高 //创建接收数据显示窗口 pContext->m_pCurrentFrame=this; ret=m_spwnd.CreateView( 0,0, RUNTIME_CLASS(LanList), czPane, pContext); if(!ret) { TRACE("SplitCreateView Failed(1)...\n"); return ret; } //创建发送数据显示窗口 pContext->m_pCurrentFrame=this; ret=m_spwnd.CreateView( 0,1, RUNTIME_CLASS(abc), czPane1, pContext); if(!ret) { TRACE("Split CreateView Failed(2)...\n"); return ret; } //初始化窗口 m_spwnd.RecalcLayout(); m_spwnd.SetActivePane(0,0); return ret; // return CFrameWnd::OnCreateClient(lpcs, pContext); } 不是创建3次m_spwnd,第1个Bool ret= m_spwnd 是切分窗口,下面两个是确定切分的两个窗口的类
schlafenhamster 2014-04-23
  • 打赏
  • 举报
回复
或者 m_Splitter.MoveWindow(0,0, rc.Width(), rc.Height());
schlafenhamster 2014-04-23
  • 打赏
  • 举报
回复
m_Splitter.SplitRow(Hei); m_Splitter.SplitColumn(Wid);
schlafenhamster 2014-04-23
  • 打赏
  • 举报
回复
m_spwnd 创建3次 ? 请不要用图片给代码, (不能复制的)
schlafenhamster 2014-04-23
  • 打赏
  • 举报
回复
不是 这样的 m_spwnd.SetCol... ( 记不清了)
huaxiawp 2014-04-23
  • 打赏
  • 举报
回复
soga 明白了 谢谢大神 追问:为什么我加载视图的时候出现error C2064: term does not evaluate to a function,是这样的我定义分割的矩形窗口CSize czPane(rt.Width()/4, rt.Height()),czPane1(rt.Width()*3/4, rt.Height());//矩形的宽和高 然后我左边对话框类改写成与分割的左边窗口相应的大小, 代码m_spwnd.CreateView(0,0,RUNTIME_CLASS(CCtrlDlg), CSize(rt.Width()/4,rt.Height()), pContext);//确定新的分割窗口左边的对话框类 然后我右边视图类改写成与分割的右边窗口相应的大小 代码d.CreateView(0,1,RUNTIME_CLASS(LeftView), CSize(czPane1(rt.Width()*3/4),rt.Height()), pContext); //确定新的分割窗口右边的视图类 然后编译出现出现error C2064: term does not evaluate to a function,如何在右边加载视图?
schlafenhamster 2014-04-23
  • 打赏
  • 举报
回复
m_spwnd.CreateView(0,0,RUNTIME_CLASS(CCtrlDlg), CSize(200,500), pContext);//确定新的分割窗口左边的对话框类 m_spwnd.CreateView(0,1,RUNTIME_CLASS(CLeftView), CSize(100,500), pContext); //确定新的分割窗口右边的视图类 已经 2个 //创建发送数据显示窗口 pContext->m_pCurrentFrame=this; ret=m_spwnd.CreateView( 0,1, RUNTIME_CLASS(abc), czPane1, pContext); 第3个 了
huaxiawp 2014-04-23
  • 打赏
  • 举报
回复
我只要切分两个窗口,上面的那个白色区域是我建立的对话框类将切分的窗口覆盖掉了,我要的是建立左边对话框,右边视图这种效果如图:
huaxiawp 2014-04-22
  • 打赏
  • 举报
回复
就算下面第二个是0,1 但是我注释掉的话,窗口左边应该有对话框窗口出现右边没类视图出现吧,但是事实上不行
schlafenhamster 2014-04-22
  • 打赏
  • 举报
回复
第一个0,0 第2个 0,1 不是,0,0

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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