CDialogBar类的窗口停靠有关问题,求高手~
CDialogBar类的窗口停靠问题,求高手~~
在单文档试图的左边添加一个对话框资源,让其可以再整个界面可以任意停靠,我是利用CDialogBar类来实现的,代码如下
EnableDocking(CBRS_ALIGN_ANY); //允许控件停靠任意一边
if (!m_dialogbar.Create(this,IDD_PREVIEW,CBRS_LEFT,IDD_PREVIEW))
{
TRACE0("初始化失败!");
return -1;
}
m_dialogbar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_dialogbar);
但是却出现了如下图情况,别没有达到我的要求
对话框没有充满这个框架窗口
在框架窗口中用鼠标移动对话框就这样了
我想实现类似于VC中对话框编辑器中的工具箱,可以任意拖动,也可以停靠,不知要怎么修改?
------解决方案--------------------
首相我的说明一下,用dialog模板创建的对话框大小创建时是和模板一样大小的。所以它不会自动改变大小填充整个左边。再次实现VC界面,网上有现成的例子。做的非常好,用了若干派生类。不是只用CDialogBar这么简单。
------解决方案--------------------
用CDialogBar的成员m_pDockbar获取对话栏背景的区域大小
再用MoveWindow改变对话条,使它撑满。
如果有两个以上的对话条停靠在一个DockBar中,是不是得先确定哪个撑满哪个保持原来尺寸
不太懂,胡乱说下
------解决方案--------------------
用CDialogBar的成员m_pDockbar获取对话栏背景的区域大小
再用MoveWindow改变对话条,使它撑满。
------解决方案--------------------
我程序中一个片段
在单文档试图的左边添加一个对话框资源,让其可以再整个界面可以任意停靠,我是利用CDialogBar类来实现的,代码如下
EnableDocking(CBRS_ALIGN_ANY); //允许控件停靠任意一边
if (!m_dialogbar.Create(this,IDD_PREVIEW,CBRS_LEFT,IDD_PREVIEW))
{
TRACE0("初始化失败!");
return -1;
}
m_dialogbar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_dialogbar);
但是却出现了如下图情况,别没有达到我的要求
对话框没有充满这个框架窗口
在框架窗口中用鼠标移动对话框就这样了
我想实现类似于VC中对话框编辑器中的工具箱,可以任意拖动,也可以停靠,不知要怎么修改?
------解决方案--------------------
首相我的说明一下,用dialog模板创建的对话框大小创建时是和模板一样大小的。所以它不会自动改变大小填充整个左边。再次实现VC界面,网上有现成的例子。做的非常好,用了若干派生类。不是只用CDialogBar这么简单。
------解决方案--------------------
用CDialogBar的成员m_pDockbar获取对话栏背景的区域大小
再用MoveWindow改变对话条,使它撑满。
如果有两个以上的对话条停靠在一个DockBar中,是不是得先确定哪个撑满哪个保持原来尺寸
不太懂,胡乱说下
------解决方案--------------------
用CDialogBar的成员m_pDockbar获取对话栏背景的区域大小
再用MoveWindow改变对话条,使它撑满。
------解决方案--------------------
我程序中一个片段
- C/C++ code
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { …… // 创建属性窗口 if(!m_wndMyProperty.Create(_T("属性"),this,122)) { TRACE0("未能创建状态栏\n"); return -1; // 未能创建 } // 将定义好的Dialog属性窗口连接进来 m_proDlg.Create(IDD_PROPERTYDLG,&m_wndMyProperty); m_proDlg.ShowWindow(SW_SHOW); // TODO: 如果不需要可停靠工具栏,则删除这三行 …… // 对话框工具条可停靠 m_myDialogBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_myDialogBar); // 属性窗口停靠 m_wndMyProperty.SetBarStyle( m_wndMyProperty.GetBarStyle() // 取窗口风格 | CBRS_TOOLTIPS // 显示工具提示 | CBRS_FLYBY // 消息文本和工具条提示同时更新 | CBRS_SIZE_DYNAMIC); // 可自定义窗口尺寸 m_wndMyProperty.EnableDocking(CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT); // 只允许左、右停靠 DockControlBar(&m_wndMyProperty, AFX_IDW_DOCKBAR_RIGHT); // 停靠在右边 …… }