怎么实现下面这个界面设计?

leodream 2010-08-12 09:30:47
大家都知道,当建立一个多文档程序,最大化副窗体的时候看到副窗体会充满主窗体的用户区。

现在的问题是我想把主窗体静态拆分成3个子窗体(左边上下两部分,右边一大部分),然后当最大化副窗体的时候我希望副窗体充满的是主窗体的右边那个子窗体,换句话说将主窗体拆分出来的右边那个子窗体作为所有副窗体的容器。


该怎么实现?
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leodream 2010-08-12
  • 打赏
  • 举报
回复
楼上的,您的意思是指先随便拆分出来,然后在控制MDICLIENT这个控件的起始坐标和长宽大小到我要的子窗口的位置上去?

我现在已经实现了对主窗口的静态拆分,代码如下:(其中dlg2是一个基于cformview的view类)
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
Splitter1.CreateStatic(this,1,2);
Splitter1.SetColumnInfo(0, 200, 100);
Splitter2.CreateStatic(&Splitter1,2,1,WS_CHILD|WS_VISIBLE,Splitter1.IdFromRowCol(0,0));
Splitter2.CreateView(0,0,RUNTIME_CLASS(dlg2),CSize(0,280),pContext);
Splitter2.CreateView(1,0,RUNTIME_CLASS(dlg2),CSize(0,0),pContext);
Splitter1.CreateView(0,1,RUNTIME_CLASS(dlg2),CSize(0,0),pContext);
return CMDIFrameWnd::OnCreateClient(lpcs, pContext);
}
执行上面的代码,主窗口被拆分成了左边上下两部分,右边一大部分的横的“品”字形结构。但是原来程序初始化完成后的那个浮动的副窗体(childframe)不见了。

那我该怎么在WM_SIZE里获得MDICLIENT这个控件的句柄,并调整位置到Splitter1的(0,1)号子窗体中去啊啊?
我是新手,现在还只能做些照葫芦画瓢的工作,请多包含。
ringphone 2010-08-12
  • 打赏
  • 举报
回复
你所说的多文档程序的用户区其实是一个叫MDICLIENT的控件,只要把这个窗口作为主窗口的右半部分就可以了。在主窗口的WM_SIZE里面获取到这个窗口的句柄或对象,重新调整一下其位置就可以了。
leodream 2010-08-12
  • 打赏
  • 举报
回复
没人知道吗?我按照单文档程序的拆分方法,将主窗体拆分后发现,原来浮动在面上显示的副窗体不见了...这是怎么回事啊?

15,979

社区成员

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

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