首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CDialogBar类的窗口停靠有关问题,求高手~

2012-05-08 
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改变对话条,使它撑满。

[解决办法]
我程序中一个片段

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);            // 停靠在右边    ……} 

热点排行