MFC停靠窗口及其停靠位置

MFC停靠窗口及其停靠位置,mfc,Mfc,我已经创建(生成)了一个MDI项目,其中包含带有 VS2008专业版。 VisualStudio使用文件/类视图生成应用程序 窗口、属性窗口、输出窗口和第一个MDI文档/ 视图 我想控制windows停靠的侧面。我以为 是在BOOL CMainFrame::CreateDockingWindows()中完成的,我更改了 CBRS_顶部到CBRS_底部,CBRS_右侧到CBRS_左侧,但窗口 在客户区仍然是一样的。这没什么区别 CBRS_xxxx的窗口样式属性的用途。地点和方式 我可以控制这些wi

我已经创建(生成)了一个MDI项目,其中包含带有 VS2008专业版。 VisualStudio使用文件/类视图生成应用程序 窗口、属性窗口、输出窗口和第一个MDI文档/ 视图

我想控制windows停靠的侧面。我以为 是在BOOL CMainFrame::CreateDockingWindows()中完成的,我更改了 CBRS_顶部到CBRS_底部,CBRS_右侧到CBRS_左侧,但窗口 在客户区仍然是一样的。这没什么区别 CBRS_xxxx的窗口样式属性的用途。地点和方式 我可以控制这些windows停靠在客户端区域的哪个位置吗? 我当时改变了:

 BOOL CMainFrame::CreateDockingWindows() 
  { 
    BOOL bNameValid; 


    // Create class view 
    CString strClassView; 
    bNameValid = strClassView.LoadString(IDS_CLASS_VIEW); 
    ASSERT(bNameValid); 
    if (!m_wndClassView.Create(strClassView, this, CRect(0, 0, 200, 200), TRUE,ID_VIEW_CLASSVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |      
    WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) 
    { 
            TRACE0("Failed to create Class View window\n"); 
            return FALSE; // failed to create 
    } 


    // Create file view 
    CString strFileView; 
    bNameValid = strFileView.LoadString(IDS_FILE_VIEW); 
    ASSERT(bNameValid); 
       if (!m_wndFileView.Create(strFileView, this, CRect(0, 0, 200, 200),TRUE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | 
    WS_CLIPCHILDREN | CBRS_LEFT| CBRS_FLOAT_MULTI)) 
     { 
            TRACE0("Failed to create File View window\n"); 
            return FALSE; // failed to create 
    } 


    // Create output window 
    CString strOutputWnd; 
    bNameValid = strOutputWnd.LoadString(IDS_OUTPUT_WND); 
    ASSERT(bNameValid); 
    if (!m_wndOutput.Create(strOutputWnd, this, CRect(0, 0, 100, 100), 
       TRUE, ID_VIEW_OUTPUTWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | 
      WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) 
    { 
            TRACE0("Failed to create Output window\n"); 
            return FALSE; // failed to create 
    } 


    // Create properties window 
    CString strPropertiesWnd; 
    bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND); 
    ASSERT(bNameValid); 
    if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), TRUE,      ID_VIEW_PROPERTIESWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |CBRS_RIGHT | CBRS_FLOAT_MULTI)) 
    { 
            TRACE0("Failed to create Properties window\n"); 
            return FALSE; // failed to create 
    } 


    SetDockingWindowIcons(theApp.m_bHiColorIcons); 
    return TRUE; 



  } 
有人能帮我解释一下如何控制两边吗 这些窗口可以停靠吗?
谢谢

IIRC、CBRS_TOP等用于它们可以停靠的位置,而不是用于启动应用程序时停靠的位置。它保存在注册表中,基本上会显示上次关闭应用程序时它所在的位置

过去(这不是Feature Pack停靠框架),如果您想在启动时停靠到特定的一侧,必须将工具栏停靠的一侧设置为唯一允许停靠的一侧(例如,右侧),创建工具栏,将其停靠(有一个SetDocked()或类似的东西)然后将允许的停靠边修改为您希望允许的方向。我不确定这种行为在当前版本中是否仍然存在,但我认为它确实存在,因为这是构建在底层停靠工具栏功能上的东西,而功能包只是构建在这些功能上


这不是一个真正的答案,但希望它能让你走上正轨……

IIRC、CBRS\u TOP等用于它们可以停靠的位置,而不是用于启动应用程序时停靠的位置。它保存在注册表中,基本上会显示上次关闭应用程序时它所在的位置

过去(这不是Feature Pack停靠框架),如果您想在启动时停靠到特定的一侧,必须将工具栏停靠的一侧设置为唯一允许停靠的一侧(例如,右侧),创建工具栏,将其停靠(有一个SetDocked()或类似的东西)然后将允许的停靠边修改为您希望允许的方向。我不确定这种行为在当前版本中是否仍然存在,但我认为它确实存在,因为这是构建在底层停靠工具栏功能上的东西,而功能包只是构建在这些功能上

不是一个真正的答案,但希望它能让你走上正轨