VS2008 Feature Package 中提供了CDockablePane 这样一个Pane 类,实现面板功能,效果非常好,可是貌似只能在SDI 或者MDI 里使用,有没有办法在CDialog 中使用呢??我想,为了在CDialog 中使用,在CDialog 中还必须添加CDockingManager 对象,在成功创建CDockingManager 实例和 CDockablePane 实例后,m_wndMgr.DockPane(&m_wndLengendPane) 时失败下面代码中:m_wndMgr 是CDockingManager 的实例,m_wndLengendPane 是CDockablePane 的实例int CDlgMap::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (__super::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO:  在此添加您专用的创建代码
if (!m_wndMgr.Create((CFrameWnd*)this))
{
TRACE0("Failed to create m_wndMgr\n");
return -1;
} if (!m_wndLengendPane.Create(_T("面板"), this, CRect(0, 0, 200, 200), TRUE, 1001, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
{
TRACE0("Failed to create LeftPane\n");
return -1;
} m_wndLengendPane.EnableDocking(CBRS_ALIGN_ANY);
m_wndMgr.EnableDocking(CBRS_ALIGN_ANY);
m_wndMgr.DockPane(&m_wndLengendPane);
return 0;
}
请问该怎么做??请给出简单的示例代码

解决方案 »

  1.   

      // TODO:  在此添加您专用的创建代码
        if (!m_wndMgr.Create((CFrameWnd*)this))
        {
            TRACE0("Failed to create m_wndMgr\n");
            return -1;
        }你这是干啥,偏要把对话框强制转换成框架窗口,这能达到效果吗?
    建议你看看那个Pane类的源代码,以它为基础新写一个类,看能不能移到对话框中来用