MDI怎么切分啊???1-N

csdnchen 2004-01-21 12:15:17
SDI中做切分没问题,,但在MDI的MAINFRAME中切分执行就报错,
但在CHILD中切分,每个里面都被分为两个VIEW了,
我想做成1-N的,,象VC开发环境那样,,怎么做啊???
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonowhy 2004-08-16
  • 打赏
  • 举报
回复
mark
nonocast 2004-01-22
  • 打赏
  • 举报
回复
英文资料
http://www.codeproject.com/docking/sizecbar.asp
www.datamekanix.com

中文资料
http://www.vckbase.com/document/viewdoc.asp?id=257

May you succeed!
蒋晟 2004-01-22
  • 打赏
  • 举报
回复
dock的view在focus,keyboard和active上面有各种问题,建议还是dock一般的窗口算了,反正view和窗口的区别只是文档支持而已
yuxiaojie 2004-01-22
  • 打赏
  • 举报
回复
这是我做的一个项目中的切分窗体函数,希望对你有用

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
CRect r;
GetClientRect(&r);
//创建一个静态分栏窗口,分为连两行一列
if(m_wndSplitter1.CreateStatic(this,2,1)==NULL)
return FALSE;
//将CLeftView连接到0行0列窗格上
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CBottomView),CSize(0,0),pContext);

if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,2,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0, 0))==NULL)
return FALSE; //将第0行0列再分开1行2列
//将CRightView类连接到第二个分栏对象的0行1列
m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CRightView),CSize(0,0),pContext);

////////////////////////////////////////////////////////
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DWORD dwf = CGfxOutBarCtrl::fDragItems|CGfxOutBarCtrl::fEditGroups|CGfxOutBarCtrl::fEditItems|CGfxOutBarCtrl::fRemoveGroups|
CGfxOutBarCtrl::fRemoveItems|CGfxOutBarCtrl::fAddGroups|CGfxOutBarCtrl::fAnimation;

wndBar.Create(WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), &m_wndSplitter2, m_wndSplitter2.IdFromRowCol(0, 0), dwf);
wndBar.SetOwner(this);


//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

imaLarge.Create(IDB_IMAGELIST, 32, 0, RGB(128,128,128));//创建大图标图象序列
imaSmall.Create(IDB_SMALL_IMAGELIST, 16, 0, RGB(0,128,128));//创建小图标图象序列

wndBar.SetImageList(&imaLarge, CGfxOutBarCtrl::fLargeIcon);//建立联系
wndBar.SetImageList(&imaSmall, CGfxOutBarCtrl::fSmallIcon);//建立联系

wndBar.SetAnimationTickCount(20);//动画

wndBar.SetAnimSelHighlight(200);//动画

wndBar.AddFolder("监控", 0);//初始化 Folder
wndBar.AddFolder("监控", 1);
wndBar.AddFolder("监控", 2);

wndBar.InsertItem(0, 0, "日志", 0, 0);//Item 1
wndBar.InsertItem(0, 1, "日志", 1, 0);//
wndBar.InsertItem(0, 2, "日志", 2, 0);//Item 3
wndBar.InsertItem(0, 3, "日志", 3, 0);//Item 4

wndBar.InsertItem(1, 0, "", 0, 0);
wndBar.InsertItem(1, 1, "", 1, 0);//(CPU,内存)

wndBar.InsertItem(2, 0, "", 0, 0);

wndBar.SetSelFolder(0);
//////////////////////////////


//设置 各个窗体的大小

m_wndSplitter1.SetRowInfo(0,r.Height()*2/3,0);
m_wndSplitter1.SetRowInfo(1,r.Height()*1/3,0);
m_wndSplitter2.SetColumnInfo(0,r.Width()/6,0);

pbView=(CBottomView*)this->m_wndSplitter1.GetPane(1,0);
prView=(CRightView*)this->m_wndSplitter2.GetPane(0,1);
prView->pBottomView=pbView;
return TRUE;

}
fingerfox 2004-01-21
  • 打赏
  • 举报
回复
你可以DOCK你的DIALOGBAR在MAINFRAME里,就可以实现1-N
fingerfox 2004-01-21
  • 打赏
  • 举报
回复
VC里没有切分,是DOCK了DIALOGBAR.

16,472

社区成员

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

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

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