2010-03-02 25 views
1

我已創建(生成)帶有標籤文檔的MDI項目,其中包含 VS2008 Pro。 Visual Studio使用文件/類視圖 窗口,屬性窗口,輸出窗口和第一個MDI文檔/ 視圖生成應用程序。MFC對接窗口和它們對接的位置

我想控制窗口停靠的邊。我認爲這個 是在BOOL CMainFrame :: CreateDockingWindows()中完成的,我將 CBRS_TOP更改爲CBRS_BOTTOM,將CBRS_RIGHT更改爲CBRS_LEFT,但窗口 仍然在客戶區出現。它沒有區別 什麼是用於CBRS_xxxx的窗口樣式屬性。我可以在哪裏以及如何控制客戶區域中的哪些窗口停靠? 我再變:

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; 



    } 

可能有人請幫我解釋一下如何控制兩側,其中 這些窗口停靠? 謝謝。

回答

1

IIRC,CBRS_TOP等都是他們可以碼頭,不是他們當你啓動應用程序對接。這是保存在註冊表中,基本上它會顯示上次關閉應用程序時的位置。

如果您想在啓動時停靠到特定的一面,您必須將工具欄設置爲唯一允許停靠的一側(例如,在右邊),創建工具欄,停靠它(有一個SetDocked()或類似的東西),然後修改允許的碼頭邊到你想要的方向。我不確定這種行爲在當前版本中是否存在,但我認爲它確實存在,因爲這是構建在低級對接工具欄功能上的功能,這些功能包僅建立在功能上。

不是一個真正的答案,但希望它會設置你的方式...