MFC 中使用CDockablePane 窗口布局不整齐问题

SuperCoderJz 2015-10-25 04:51:11

想用CDockablePane 做出上边的可停靠窗体,其中1,2,3,位CDockablePane包装的Dialog 工程为单文档应用程序,代码如下
CDockablePane 的派生类

int CTradeDockDetail::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;


m_dlg.Create(m_id,this);
m_dlg.ShowWindow(SW_SHOW);
return 0;
}


void CTradeDockDetail::SetId(int id)
{

m_id = id;
}
void CTradeDockDetail::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy);
if(m_dlg.GetSafeHwnd())
{

CRect rct;
GetClientRect(rct);
m_dlg.MoveWindow(rct);
}


}


在MainFrame中代码如下
bool CMainFrame::InitDockView()
{

this->GetDockingManager()->DisableRestoreDockState(TRUE);//
m_dock.SetId(IDD_DIALOG_DETAIL);
m_dock2.SetId(IDD_DIALOG_OPER);
m_dock4.SetId(IDD_DIALOG_TOP);
if(!m_dock4.Create(L"顶部",this,CRect(0,0,400,400),true,10011,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP
| CBRS_FLOAT_MULTI))
{

return false;
}
if(!m_dock2.Create(L"左",this,CRect(0,0,200,200),true,1007,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM
| CBRS_FLOAT_MULTI))
{

return false;
}

if (!m_dock.Create(L"右", this, CRect(0, 0, 400, 400), true, 1001, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM
| CBRS_FLOAT_MULTI))
{

return false;
}

m_dock4.EnableWindow(CBRS_ALIGN_ANY);
DockPane(&m_dock4);
m_dock2.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_dock2);
m_dock.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_dock);
m_dock.DockToWindow(&m_dock2, CBRS_LEFT);
RecalcLayout(true);
}

m_dock4,m_dock2,m_dock3 分别对应1,2,3 窗体 可为什么显示的时候,中间有一大片的空白
如图

感觉布局很乱的样子
请各位用过的大神教教小弟怎么用 纠结一天了 在做不出来 就要被辞职滚蛋了 毕业第一份工作 求帮助啊 啊啊
...全文
1024 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 u010442009 的回复:
[quote=引用 5 楼 weixin_32333395 的回复:] 同病相怜,楼主,我最近也在搞这个,用dockablepane,搞了3天了,我也是刚毕业的,因为那个是view的客户区,你没有把它去掉!!明天给你一个函数你看看。
引用 5 楼 weixin_32333395 的回复:
同病相怜,楼主,我最近也在搞这个,用dockablepane,搞了3天了,我也是刚毕业的,因为那个是view的客户区,你没有把它去掉!!明天给你一个函数你看看。
亲什么函数啊 江湖救急啊 最后一天了 [/quote] 楼主这个问题最后解决了吗,可否告知一下具体方法?
mtOS1573 2015-11-04
  • 打赏
  • 举报
回复
能不能给份代码
SuperCoderJz 2015-10-27
  • 打赏
  • 举报
回复
引用 5 楼 weixin_32333395 的回复:
同病相怜,楼主,我最近也在搞这个,用dockablepane,搞了3天了,我也是刚毕业的,因为那个是view的客户区,你没有把它去掉!!明天给你一个函数你看看。
引用 5 楼 weixin_32333395 的回复:
同病相怜,楼主,我最近也在搞这个,用dockablepane,搞了3天了,我也是刚毕业的,因为那个是view的客户区,你没有把它去掉!!明天给你一个函数你看看。
亲什么函数啊 江湖救急啊 最后一天了
qq_20556693 2015-10-27
  • 打赏
  • 举报
回复
建立多文档,在app里这样改 // 分析标准外壳命令、DDE、打开文件操作的命令行
CCommandLineInfo cmdInfo;
//ParseCommandLine(cmdInfo);
cmdInfo.m_nShellCommand=CCommandLineInfo::FileNothing;
qq_20556693 2015-10-27
  • 打赏
  • 举报
回复
好像没发上去,重发,你试试
qq_20556693 2015-10-27
  • 打赏
  • 举报
回复
我是5楼的那个,我建议你用多文档,去掉一句话就可以了
等 风 来 2015-10-27
  • 打赏
  • 举报
回复
引用 6 楼 sunrui2的回复:
[quote=引用 5 楼 weixin_32333395 的回复:] 同病相怜,楼主,我最近也在搞这个,用dockablepane,搞了3天了,我也是刚毕业的,因为那个是view的客户区,你没有把它去掉!!明天给你一个函数你看看。
引用 5 楼 weixin_32333395 的回复:
同病相怜,楼主,我最近也在搞这个,用dockablepane,搞了3天了,我也是刚毕业的,因为那个是view的客户区,你没有把它去掉!!明天给你一个函数你看看。
亲什么函数啊 江湖救急啊 最后一天了 [/quote] 不好意思啊,我今天上班没带手机,我的帐号用微信登的,你现在解决了吗?
等 风 来 2015-10-26
  • 打赏
  • 举报
回复
同病相怜,楼主,我最近也在搞这个,用dockablepane,搞了3天了,我也是刚毕业的,因为那个是view的客户区,你没有把它去掉!!明天给你一个函数你看看。
洗洗睡去 2015-10-26
  • 打赏
  • 举报
回复
引用 3 楼 u010442009 的回复:
[quote=引用 2 楼 sunnyloves 的回复:] 没仔细看代码 感觉是像把1分割视图了 然后又加了2个dockablepane在下面 所以像是有5个小窗口 PS 没必须在dockablepane里再套对话框,直接把dockablepane当对话框用 PPS dockablepane生成之后的初始化位置是有注册表决定的,代码里好像不能直接设定,我也为此苦恼了很久
那请问了你是怎么做出这种停靠窗体的呢 纠结好久了 没搞出来[/quote] 主视图不用拆分,mainfrm里新建2个dockablepane类派生的变量,dockablepane类里的OnCreate里初始化控件,其他操作和对话框一样,不用在dockablepane里搞个对话框 再再这个对话框里搞控件
SuperCoderJz 2015-10-26
  • 打赏
  • 举报
回复
引用 2 楼 sunnyloves 的回复:
没仔细看代码 感觉是像把1分割视图了 然后又加了2个dockablepane在下面 所以像是有5个小窗口 PS 没必须在dockablepane里再套对话框,直接把dockablepane当对话框用 PPS dockablepane生成之后的初始化位置是有注册表决定的,代码里好像不能直接设定,我也为此苦恼了很久
那请问了你是怎么做出这种停靠窗体的呢 纠结好久了 没搞出来
洗洗睡去 2015-10-25
  • 打赏
  • 举报
回复
没仔细看代码 感觉是像把1分割视图了 然后又加了2个dockablepane在下面 所以像是有5个小窗口 PS 没必须在dockablepane里再套对话框,直接把dockablepane当对话框用 PPS dockablepane生成之后的初始化位置是有注册表决定的,代码里好像不能直接设定,我也为此苦恼了很久
SuperCoderJz 2015-10-25
  • 打赏
  • 举报
回复
没人用过啊吗 帮帮忙啊

15,980

社区成员

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

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