关于基于FormView单文档视图分割的问题。

tht228 2009-07-21 12:45:43
我想将视图分割成“田”字形。
m_wndSplitter1.CreateStatic(this,1,2);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);

先将视图分为左右两块。然后在分别将左右两块各分为2行1列。右边的可以实现,但是左边怎么也实现不了、求高人相助。
我的代码是
m_wndSplitter1.CreateStatic(this,1,2);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);

if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,1))==NULL)
return FALSE;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CCCDView),CSize(400,300),pContext);
// m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CDRAWView),CSize(400,400),pContext);

if(m_wndSplitter3.CreateStatic(&m_wndSplitter2,1,2,WS_CHILD|WS_VISIBLE,
m_wndSplitter2.IdFromRowCol(1,0))==NULL)
return FALSE;

m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CMAPView),CSize(300,200),pContext);
m_wndSplitter3.CreateView(0,1,RUNTIME_CLASS(CCCDView),CSize(200,200),pContext);
return true;


m_wndSplitter1 ,2,3,是在头文件里定义的:
CSplitterWndEx m_wndSplitter1,m_wndSplitter2,m_wndSplitter3,m_wndSplitter4;
...全文
164 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tht228 2009-07-22
  • 打赏
  • 举报
回复
难道是个解决不了的问题吗
webing520 2009-07-22
  • 打赏
  • 举报
回复
开始分割以后就设置SetRowInfo()以及SetColumeInfo()试一试。
分隔一次就Set一次,这样应该可行。
tht228 2009-07-21
  • 打赏
  • 举报
回复
不行啊,楼上二位高手,你们的方法都不行。
我想弄成这样:

view1 view2
3 4


出来的效果都是一样的,只有右边的两个窗口,只有 2 和4,
我现在的问题就是,在分 0,0 窗口的时候,view1 和 3 无法实现:
if(m_wndSplitter3.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter2.IdFromRowCol(0,0))==NULL)
就上面这句,无法实现,
eagerle01 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tht228 的回复:]
引用 2 楼 eagerle01 的回复:
刚开始这句:
m_wndSplitter1.CreateStatic(this,1,2);
    m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);
你左边的视图不是还要分割啊,还没分割你就CreateView了!!!



那具体该怎样做呢
[/Quote]
m_wndSplitter1.CreateStatic(this,1,2);

if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,1))==NULL)
return FALSE;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CCCDView),CSize(400,300),pContext);
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CDRAWView),CSize(400,400),pContext);

if(m_wndSplitter3.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter2.IdFromRowCol(1,0))==NULL)
return FALSE;

m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CMAPView),CSize(300,200),pContext);
m_wndSplitter3.CreateView(1,0,RUNTIME_CLASS(CCCDView),CSize(200,200),pContext);
return true;

试试看
forimprove 2009-07-21
  • 打赏
  • 举报
回复

m_wndSplitter1.CreateStatic(this,1,2);
//m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);//注释掉这句
if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,1))==NULL)
return FALSE;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CCCDView),CSize(400,300),pContext);
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CDRAWView),CSize(400,400),pContext);
if(m_wndSplitter3.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,0))==NULL)
return FALSE;
m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CMAPView),CSize(300,200),pContext);
m_wndSplitter3.CreateView(1,0,RUNTIME_CLASS(CCCDView),CSize(200,200),pContext);
return true;

tht228 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eagerle01 的回复:]
刚开始这句:
m_wndSplitter1.CreateStatic(this,1,2);
    m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);
你左边的视图不是还要分割啊,还没分割你就CreateView了!!!

[/Quote]

那具体该怎样做呢
tht228 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 forimprove 的回复:]
试了一下你的代码,你那分出来的不是“田”字,稍微改了一下,可以分出“田”字来,但不知道是不是你想要的结果。
C/C++ code
m_wndSplitter1.CreateStatic(this,1,2);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,1))==NULL)return FALSE;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CCCDView),CSize(400,300),pContext);
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CDRAWView),CSize(400,400),pContext);if(m_wndSplitter3.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,0))==NULL)return FALSE;
m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CMAPView),CSize(300,200),pContext);
m_wndSplitter3.CreateView(1,0,RUNTIME_CLASS(CCCDView),CSize(200,200),pContext);returntrue;
[/Quote]

您这个也不是田字。左边没有分开嘛
forimprove 2009-07-21
  • 打赏
  • 举报
回复
试了一下你的代码,你那分出来的不是“田”字,稍微改了一下,可以分出“田”字来,但不知道是不是你想要的结果。

m_wndSplitter1.CreateStatic(this,1,2);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);
if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,1))==NULL)
return FALSE;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CCCDView),CSize(400,300),pContext);
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CDRAWView),CSize(400,400),pContext);
if(m_wndSplitter3.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,0))==NULL)
return FALSE;
m_wndSplitter3.CreateView(0,0,RUNTIME_CLASS(CMAPView),CSize(300,200),pContext);
m_wndSplitter3.CreateView(1,0,RUNTIME_CLASS(CCCDView),CSize(200,200),pContext);
return true;
eagerle01 2009-07-21
  • 打赏
  • 举报
回复
刚开始这句:
m_wndSplitter1.CreateStatic(this,1,2);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CFlyingView),CSize(400,100),pContext);
你左边的视图不是还要分割啊,还没分割你就CreateView了!!!
tht228 2009-07-21
  • 打赏
  • 举报
回复
现在主要问题就是在第二次分割窗口时候,分割 位于 0,0 的窗口,总是实现不了。

15,979

社区成员

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

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