共用方式為


CMDIFrameWndEx 類別

擴充 的功能 CMDIFrameWnd ,即 Windows Multiple Document Interface (MDI) 框架視窗。

語法

class CMDIFrameWndEx : public CMDIFrameWnd

成員

公用方法

名稱 描述
CMDIFrameWndEx::ActiveItemRecalcLayout 重新計算使用中專案的版面配置。
CMDIFrameWndEx::AddDockSite 未使用這個方法。
CMDIFrameWndEx::AddPane 向停駐管理員註冊窗格。
CMDIFrameWndEx::AdjustClientArea 減少允許框線的工作區。
CMDIFrameWndEx::AdjustDockingLayout 重新計算所有停駐窗格的配置。
CMDIFrameWndEx::AreMDITabs 判斷是否啟用 MDI 索引標籤功能或 MDI 索引標籤式群組功能。
CMDIFrameWndEx::CanConvertControlBarToMDIChild 由架構呼叫,以判斷框架視窗是否可以將停駐窗格轉換成索引標籤式檔。
CMDIFrameWndEx::ControlBarToTabbedDocument 將指定的停駐窗格轉換為索引標籤式檔。
CMDIFrameWndEx::CreateDocumentWindow 建立子文件視窗。
CMDIFrameWndEx::CreateNewWindow 由架構呼叫以建立新的視窗。
CMDIFrameWndEx::CreateObject 由建立此類別類型的動態執行個體架構所使用。
CMDIFrameWndEx::DockPane 將指定的窗格停駐到框架視窗。
CMDIFrameWndEx::DockPaneLeftOf 將窗格停駐在另一個窗格的左邊。
CMDIFrameWndEx::EnableAutoHidePanes 當窗格停駐在主框架視窗的指定側邊時,啟用窗格的自動隱藏模式。
CMDIFrameWndEx::EnableDocking 啟用屬於 MDI 框架視窗之窗格的停駐。
CMDIFrameWndEx::EnableFullScreenMainMenu 以全螢幕模式顯示或隱藏主功能表。
CMDIFrameWndEx::EnableFullScreenMode 啟用框架視窗的全螢幕模式。
CMDIFrameWndEx::EnableLoadDockState 啟用或停用停駐狀態的載入。
CMDIFrameWndEx::EnableMDITabbedGroups 啟用或停用 MDI 索引標籤式群組功能。
CMDIFrameWndEx::EnableMDITabs 啟用或停用 MDI 索引標籤功能。 啟用時,框架視窗會顯示每個 MDI 子視窗的索引標籤。
CMDIFrameWndEx::EnableMDITabsLastActiveActivation 指定當使用者關閉目前索引標籤時,是否應該啟用最後一個使用中索引標籤。
CMDIFrameWndEx::EnablePaneMenu 啟用或停用快顯視窗功能表的自動建立和管理,以顯示應用程式窗格的清單。
CMDIFrameWndEx::EnableWindowsDialog 插入命令識別碼呼叫 CMFCWindowsManagerDialog 對話方塊的功能表項目。
CMDIFrameWndEx::GetActivePopup 將指標傳回到目前顯示的快顯功能表。
CMDIFrameWndEx::GetPane 傳回具有指定控制項識別碼之窗格的指標。
CMDIFrameWndEx::GetDefaultResId 傳回 MDI 框架視窗共用資源的識別碼。
CMDIFrameWndEx::GetMDITabGroups 傳回 MDI 索引標籤式視窗的清單。
CMDIFrameWndEx::GetMDITabs 傳回底線索引標籤式視窗的參考。
CMDIFrameWndEx::GetMDITabsContextMenuAllowedItems 傳回旗標的組合,決定啟用 MDI 索引標籤式群組功能時,哪些操作功能表項目有效。
CMDIFrameWndEx::GetMenuBar 傳回附加至框架視窗之功能表列物件的指標。
CMDIFrameWndEx::GetRibbonBar 擷取框架的功能區列控制項。
CMDIFrameWndEx::GetTearOffBars 傳回處於卸載狀態的 CPane 衍生物件清單。
CMDIFrameWndEx::GetThisClass 由架構呼叫,以取得與這個類別類型相關聯之物件的指標 CRuntimeClass
CMDIFrameWndEx::GetToolbarButtonToolTipText 當應用程式顯示工具列按鈕的工具提示時,由架構呼叫。
CMDIFrameWndEx::InsertPane 向停駐管理員註冊指定的窗格。
CMDIFrameWndEx::IsFullScreen 判斷框架視窗是否處於全螢幕模式。
CMDIFrameWndEx::IsMDITabbedGroup 判斷是否啟用 MDI 索引標籤式群組功能。
CMDIFrameWndEx::IsMemberOfMDITabGroup 判斷指定的索引標籤式視窗是否位於 MDI 索引標籤式群組中的視窗清單中。
CMDIFrameWndEx::IsMenuBarAvailable 判斷框架視窗是否有功能表列。
CMDIFrameWndEx::IsPointNearDockSite 判斷指定的點是否靠近停駐月臺。
CMDIFrameWndEx::IsPrintPreview 判斷框架視窗是否處於預覽列印模式。
CMDIFrameWndEx::LoadFrame 從資源資訊建立框架視窗。 (覆寫 CMDIFrameWnd::LoadFrame。)
CMDIFrameWndEx::LoadMDIState 載入 MDI 索引標籤式群組的指定版面配置,以及先前開啟的檔案清單。
CMDIFrameWndEx::MDITabMoveToNextGroup 將現用索引標籤從目前使用中的索引標籤視窗移至下一個或上一個索引標籤式群組。
CMDIFrameWndEx::MDITabNewGroup 建立具有單一視窗的新索引標籤式群組。
CMDIFrameWndEx::NegotiateBorderSpace 在 OLE 就地啟用期間交涉框架視窗中的框線空間。
CMDIFrameWndEx::OnCloseDockingPane 當使用者按一下 可停駐窗格上的 [關閉 ] 按鈕時,由架構呼叫。
CMDIFrameWndEx::OnCloseMiniFrame 當使用者按一下 浮動迷你框架視窗上的 [關閉 ] 按鈕時,由架構呼叫。
CMDIFrameWndEx::OnClosePopupMenu 當作用中的快顯功能表處理 WM_DESTROY 訊息時,由架構呼叫。
CMDIFrameWndEx::OnCmdMsg 由架構呼叫以路由和分派命令訊息,以及更新命令使用者介面物件。
CMDIFrameWndEx::OnDrawMenuImage 架構在繪製與功能表項目相關聯的映像時所呼叫。
CMDIFrameWndEx::OnDrawMenuLogo 由架構在處理 WM_PAINT 訊息時 CMFCPopupMenu 呼叫。
CMDIFrameWndEx::OnEraseMDIClientBackground 當 MDI 框架視窗處理 WM_ERASEBKGND 訊息時,由架構呼叫。
CMDIFrameWndEx::OnMenuButtonToolHitTest 當物件處理 WM_NCHITTEST 訊息時 CMFCToolBarButton ,由架構呼叫。
CMDIFrameWndEx::OnMoveMiniFrame 由架構呼叫以移動迷你框架視窗。
CMDIFrameWndEx::OnSetPreviewMode 設定應用程式的主框架視窗預覽列印模式。 (覆寫 CFrameWnd::OnSetPreviewMode。)
CMDIFrameWndEx::OnShowCustomizePane 啟動 [快速自訂] 窗格時,由架構呼叫。
CMDIFrameWndEx::OnShowMDITabContextMenu 當操作功能表應該顯示在其中一個索引標籤時,由架構呼叫。 (僅適用于 MDI 索引標籤式群組。
CMDIFrameWndEx::OnShowPanes 由架構呼叫以顯示或隱藏窗格。
CMDIFrameWndEx::OnShowPopupMenu 架構在啟動快顯功能表時所呼叫。
CMDIFrameWndEx::OnSizeMDIClient 當用戶端 MDI 視窗的大小變更時,由架構呼叫。
CMDIFrameWndEx::OnTearOffMenu 架構在啟動有分割列的功能表時所呼叫。
CMDIFrameWndEx::OnUpdateFrameMenu 由架構呼叫以更新框架功能表。 (覆寫 CMDIFrameWnd::OnUpdateFrameMenu。)
CMDIFrameWndEx::PaneFromPoint 傳回包含指定點的停駐窗格。
CMDIFrameWndEx::PreTranslateMessage 類別 CWinApp 用來轉譯視窗訊息,再將其分派至 TranslateMessageDispatchMessage Windows 函式。 (覆寫 CMDIFrameWnd::PreTranslateMessage。)
CMDIFrameWndEx::RecalcLayout 架構呼叫以重新計算框架視窗的配置。 (覆寫 CFrameWnd::RecalcLayout。)
CMDIFrameWndEx::RemovePaneFromDockManager 取消註冊窗格,並將它從停駐管理員中移除。
CMDIFrameWndEx::SaveMDIState 儲存 MDI 索引標籤式群組的目前版面配置,以及先前開啟的檔案清單。
CMDIFrameWndEx::SetPrintPreviewFrame 設定預覽列印框架視窗。
CMDIFrameWndEx::SetupToolbarMenu 藉由搜尋虛設項目並替換成指定的使用者定義項目,修改工具列物件。
CMDIFrameWndEx::ShowFullScreen 將主畫面從一般模式切換為全螢幕模式。
CMDIFrameWndEx::ShowPane 顯示或隱藏指定的窗格。
CMDIFrameWndEx::ShowWindowsDialog 建立方 CMFCWindowsManagerDialog 塊並開啟它。
CMDIFrameWndEx::TabbedDocumentToControlBar 將指定的索引標籤式檔轉換為停駐窗格。
CMDIFrameWndEx::UpdateCaption 由架構呼叫以更新視窗框架標題。
CMDIFrameWndEx::UpdateMDITabbedBarsIcons 設定每個 MDI 索引標籤式窗格的圖示。
CMDIFrameWndEx::WinHelp 架構所呼叫以起始 WinHelp 應用程式或內容說明。 (覆寫 CWnd::WinHelp。)

資料成員

名稱 描述
CMDIFrameWndEx::m_bCanConvertControlBarToMDIChild 判斷停駐窗格是否可以轉換成 MDI 子視窗。
CMDIFrameWndEx::m_bDisableSetRedraw 啟用或停用 MDI 子視窗的重新繪製優化。

備註

若要利用 MDI 應用程式中的擴充自訂功能,請從 CMDIFrameWndEx 衍生應用程式的 MDI 框架視窗類別,而不是 CMDIFrameWnd

範例

下列範例會從 CMDIFrameWndEx 衍生類別。 此程式碼片段來自 DrawClient 範例:MFC 功能區型 OLE 物件繪圖應用程式

class CMainFrame : public CMDIFrameWndEx
{
   DECLARE_DYNAMIC(CMainFrame)
public:
   struct XStyle
   {
      COLORREF clrFill;
      COLORREF clrLine;
   };

public:
   CMainFrame();

   // Attributes
public:
   CMFCRibbonBar *GetRibbonBar() { return &m_wndRibbonBar; }

   // Operations
public:
   void UpdateUI(CDrawView *pCurrView);
   void UpdateContextTab(CDrawView *pCurrView);
   void UpdateContextTabFromObject(CDrawObjList &list);

   COLORREF GetColorFromColorButton(int nButtonID);
   int GetWeightFromLineWeight(int nButtonID);
   BOOL GetStyleFromStyles(XStyle &style);

   void SetRibbonContextCategory(UINT uiCategoryID);
   void ActivateRibbonContextCategory(UINT uiCategoryID);

   // Implementation
public:
   virtual ~CMainFrame();
#ifdef _DEBUG
   virtual void AssertValid() const;
   virtual void Dump(CDumpContext &dc) const;
#endif

protected:
   // control bar embedded members
   CMFCRibbonStatusBar m_wndStatusBar;
   CMFCRibbonBar m_wndRibbonBar;

   CMFCRibbonApplicationButton m_MainButton;

   // panel images
   CMFCToolBarImages m_PanelImages;

   // Document colors for demo:
   CList<COLORREF, COLORREF> m_lstMainColors;
   CList<COLORREF, COLORREF> m_lstAdditionalColors;
   CList<COLORREF, COLORREF> m_lstStandardColors;

   // Generated message map functions
protected:
   //{{AFX_MSG(CMainFrame)
   afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
   afx_msg void OnAppLook(UINT id);
   afx_msg void OnUpdateAppLook(CCmdUI *pCmdUI);
   afx_msg void OnWindowManager();
   afx_msg void OnMdiMoveToNextGroup();
   afx_msg void OnMdiMoveToPrevGroup();
   afx_msg void OnMdiNewHorzTabGroup();
   afx_msg void OnMdiNewVertGroup();
   afx_msg void OnMdiCancel();
   afx_msg LRESULT OnRibbonCustomize(WPARAM wp, LPARAM lp);
   afx_msg LRESULT OnHighlightRibbonListItem(WPARAM wp, LPARAM lp);
   afx_msg void OnToolsOptions();
   afx_msg void OnDummy();
   afx_msg void OnSysColorChange();
   //}}AFX_MSG

   DECLARE_MESSAGE_MAP()

   virtual BOOL OnShowMDITabContextMenu(CPoint point, DWORD dwAllowedItems, BOOL bDrop);
   virtual BOOL OnShowPopupMenu(CMFCPopupMenu *pMenuPopup);

   void ShowOptions(int nPage);
   void CreateDocumentColors();

private:
   BOOL CreateRibbonBar();
   BOOL CreateStatusBar();

   void InitMainButton();
   void InitHomeCategory();
   void InitViewCategory();
   void InitTabButtons();

   void AddContextTab_Format();

   void AdjustObjectSubmenu(CMFCPopupMenu *pMenuPopup);
   void UpdateStatusBarCountPane(int nID, CString strText, int nCount);

   UINT m_nAppLook;
};

繼承階層架構

CObject

CCmdTarget

CWnd

CFrameWnd

CMDIFrameWnd

CMDIFrameWndEx

需求

標頭:afxMDIFrameWndEx.h

CMDIFrameWndEx::ActiveItemRecalcLayout

重新計算使用中專案的版面配置。

void ActiveItemRecalcLayout();

CMDIFrameWndEx::AddPane

向停駐管理員註冊窗格。

BOOL AddPane(
    CBasePane* pControlBar,
    BOOL bTail=TRUE);

參數

pControlBar
[in]要註冊之窗格的指標。

bTail
[in]指定是否要將此窗格新增至清單結尾。

傳回值

如果已成功註冊窗格,則傳回非零值。 如果窗格已經向停駐管理員註冊,則傳回 0。

備註

每個窗格都必須向 類別 CDockingManager 註冊,才能參與停駐配置。 使用此方法可通知停駐管理員您想要停駐特定窗格。 註冊該窗格之後,停駐管理員會根據停駐管理員所維護之窗格的對齊設定和位置來對齊它。

CMDIFrameWndEx::AdjustClientArea

減少允許框線的工作區。

virtual void AdjustClientArea();

CMDIFrameWndEx::AdjustDockingLayout

重新計算所有停駐窗格的配置。

virtual void AdjustDockingLayout(HDWP hdwp=NULL);

參數

hdwp
[in]識別多視窗位置結構。 您可以呼叫 BeginDeferWindowPos 來取得此值。

備註

呼叫此成員函式,以重新計算停駐在框架視窗的所有窗格配置。

CMDIFrameWndEx::AreMDITabs

判斷是否啟用 MDI 索引標籤功能或 MDI 索引標籤群組功能。

BOOL AreMDITabs(int* pnMDITabsType=NULL) const;

參數

pnMDITabsType
[out]整數變數的指標,指出已啟用哪些功能:

  • 0:所有功能皆已停用。
  • 1:已啟用 MDI 索引標籤。
  • 2:已啟用 MDI 索引標籤式群組。

傳回值

TRUE如果已啟用 MDI 索引標籤或 MDI 索引標籤式群組,則傳回 。

如果未啟用上述功能,則傳 FALSE 回 。

備註

使用此函式來判斷框架視窗是否啟用 MDI 索引標籤或 MDI 索引標籤式群組。 使用 CMDIFrameWndEx::EnableMDITabs 來啟用或停用 MDI 索引標籤功能。

使用 CMDIFrameWndEx::EnableMDITabbedGroups 來啟用或停用 MDI 索引標籤式群組功能。

CMDIFrameWndEx::CanConvertControlBarToMDIChild

由架構呼叫,以判斷框架視窗是否可以將停駐窗格轉換成索引標籤式檔

virtual BOOL CanConvertControlBarToMDIChild();

傳回值

TRUE如果框架視窗可以將停駐窗格轉換成索引標籤式檔,則傳回 ,否則傳 FALSE 回 。

備註

覆寫衍生類別中的這個方法,並傳回 TRUE 以啟用將停駐窗格轉換成索引標籤式檔。 或者,您可以將 設定 CMDIFrameWndEx::m_bCanConvertControlBarToMDIChildTRUE

CMDIFrameWndEx::ControlBarToTabbedDocument

將指定的停駐窗格轉換為索引標籤式檔。

virtual CMDIChildWndEx* ControlBarToTabbedDocument(CDockablePane* pBar);

參數

pBar
要轉換之停駐窗格的指標。

傳回值

傳回包含停駐窗格之新 MDI 子視窗的指標。

備註

這個方法會將停駐窗格轉換成索引標籤式檔。 當您呼叫此方法時,架構會 CMDIChildWndEx 建立類別 物件、從停駐管理員移除停駐窗格,並將停駐窗格新增至新的 MDI 子視窗。 MDI 子視窗會調整停駐窗格的大小,以涵蓋整個工作區

CMDIFrameWndEx::CreateDocumentWindow

建立子文件視窗。

virtual CMDIChildWndEx* CreateDocumentWindow(
    LPCTSTR lpcszDocName,
    CObject* pObj);

參數

lpcszDocName
[in]包含檔識別碼的文字字串。 一般而言,它是檔檔的完整路徑。

pObj
[in]使用者定義物件的指標。 例如,開發人員可以建立應用程式特定的資料結構,描述檔,並告知如何在啟動時初始化檔。

傳回值

CMDIChildWndEx 指標。

備註

架構會在載入先前儲存在登錄中的檔案清單時呼叫此方法。

覆寫此方法,以便在從登錄載入檔時建立檔。

範例

下列範例示範如何在 CreateDocumentWindow VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

在此範例中, g_strStartViewName 可能是未從磁片檔案載入的「虛擬檔案」名稱(例如「起始頁」)。 因此,我們需要特殊處理來處理該案例。

CMainFrame::CMainFrame()
{
   CMFCPopupMenu::SetForceShadow(TRUE);
   m_bCanConvertControlBarToMDIChild = TRUE;
}

CMDIFrameWndEx::CreateNewWindow

由架構呼叫以建立新的視窗。

virtual CMDIChildWndEx* CreateNewWindow(
    LPCTSTR lpcszDocName,
    CObject* pObj);

參數

lpcszDocName
[in]檔案名稱。

pObj
[in]保留供日後使用。

傳回值

新視窗的指標。

CMDIFrameWndEx::DockPane

將指定的窗格停駐到框架視窗。

void DockPane(
    CBasePane* pBar,
    UINT nDockBarID=0,
    LPCRECT lpRect=NULL);

參數

pBar
[in]停駐窗格的指標。

nDockBarID
[in]指定要停駐的框架視窗兩側。

lpRect
[in]未使用。

備註

這個方法會將指定的窗格固定在呼叫 和 CMDIFrameWndEx::EnableDockingCBasePane::EnableDocking 所指定框架視窗的其中一側。

範例

下列範例示範 DockPane 方法的用法。 此程式碼片段來自 VisualStudioDemo 範例:MFC Visual Studio 應用程式

DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
DockPane(&m_wndPropertiesBar);

DockPane(&m_wndToolbarBuild);

CMDIFrameWndEx::DockPaneLeftOf

將窗格停駐在另一個窗格的左邊。

BOOL DockPaneLeftOf(
    CPane* pBar,
    CPane* pLeftOf);

參數

pBar
[in]停駐窗格的指標。

pLeftOf
[in]做為停駐月臺之窗格的指標。

傳回值

如果作業成功,則傳 TRUE 回 。 否則傳回 FALSE

備註

呼叫這個方法,以預先定義的順序停駐數個窗格物件。 這個方法會將 所 pBar 指定的窗格停駐在 所 pLeftOf 指定的窗格左邊。

範例

下列範例示範如何在 DockPaneLeftOf VisualStudioDemo 範例中使用 方法:MFC Visual Studio 應用程式

DockPane(&m_wndToolbarBuild);
DockPaneLeftOf(&m_wndToolbarEdit, &m_wndToolbarBuild);

CMDIFrameWndEx::EnableAutoHidePanes

當窗格停駐在主框架視窗的指定側邊時,啟用窗格的自動隱藏模式。

BOOL EnableAutoHidePanes(DWORD dwDockStyle);

參數

dwDockStyle
[in]指定將啟用的主框架視窗側邊。 使用下列一或多個旗標。

  • CBRS_ALIGN_LEFT
  • CBRS_ALIGN_RIGHT
  • CBRS_ALIGN_TOP
  • CBRS_ALIGN_BOTTOM

傳回值

呼叫此函式,以在主框架視窗的指定側邊停駐窗格時,啟用窗格的自動隱藏模式。

範例

下列範例示範如何在 EnableAutoHidePanes VisualStudioDemo 範例中使用 方法:MFC Visual Studio 應用程式

EnableAutoHidePanes(CBRS_ALIGN_ANY);

備註

CMDIFrameWndEx::EnableDocking

啟用屬於 MDI 框架視窗之窗格的停駐。

BOOL EnableDocking(DWORD dwDockStyle);

參數

dwDockStyle
[in]指定您想要套用的停駐樣式。

傳回值

備註

呼叫此函式,以啟用屬於 CMDIFrameWndEx 物件的窗格停駐。

範例

下列範例示範如何在 EnableDocking VisualStudioDemo 範例中使用 方法:MFC Visual Studio 應用程式

EnableDocking(CBRS_ALIGN_ANY);

CMDIFrameWndEx::EnableFullScreenMainMenu

以全螢幕模式顯示或隱藏主功能表。

void EnableFullScreenMainMenu(BOOL bEnableMenu);

參數

bEnableMenu
[in] TRUE 表示以全螢幕模式顯示主功能表,或 FALSE 隱藏它。

備註

CMDIFrameWndEx::EnableFullScreenMode

啟用框架視窗的全螢幕模式。

void EnableFullScreenMode(UINT uiFullScreenCmd);

參數

uiFullScreenCmd
[in]啟用或停用全螢幕模式之命令的識別碼。

備註

在全螢幕模式中,所有停駐控制列、工具列和功能表都會隱藏,且使用中檢視會調整大小以佔用全螢幕。 當您啟用全螢幕模式時,您必須指定啟用或停用命令的識別碼。 您可以從主框架的 OnCreate 函式呼叫 EnableFullScreenMode 。 當框架視窗切換到全螢幕模式時,架構會建立具有指定命令識別碼的一個按鈕的浮動工具列。 如果您想要在畫面上保留主功能表,請呼叫 CMDIFrameWndEx::EnableFullScreenMainMenu

CMDIFrameWndEx::EnableLoadDockState

啟用或停用停駐狀態的載入。

void EnableLoadDockState(BOOL bEnable = TRUE);

參數

bEnable
[in] TRUE 表示啟用停駐狀態的載入, FALSE 以停用停駐狀態的載入。

備註

CMDIFrameWndEx::EnableMDITabbedGroups

啟用或停用框架視窗的 MDI 索引標籤式群組功能。

void EnableMDITabbedGroups(
    BOOL bEnable,
    const CMDITabInfo& params);

參數

bEnable
[in]如果 TRUE 為 ,則會啟用 MDI 索引標籤式群組功能;如果 FALSE 為 ,則會停用 MDI 索引標籤式群組功能。

params
[in]指定架構套用至 MDI 工作區中建立的子視窗的參數。

備註

使用此方法來啟用或停用 MDI 索引標籤式群組功能。 這項功能可讓 MDI 應用程式將子視窗顯示為在 MDI 工作區內垂直或水準對齊的索引標籤式視窗。 索引視窗會以分隔器分隔。 使用者可以使用分割器來調整索引標籤式群組的大小。

使用者可以:

  • 在群組之間拖曳個別索引標籤。
  • 將個別索引標籤拖曳到視窗邊緣,以建立新的群組。
  • 使用快捷方式功能表移動索引標籤或建立新的群組。
  • 您的應用程式可以儲存目前索引標籤式視窗的版面配置,以及目前開啟的檔案清單。

如果您呼叫這個方法, bEnable 並將 設定為 FALSEparams 則會忽略。

即使已啟用 MDI 索引標籤式群組,您也可以再次呼叫此方法來修改子視窗的設定。 呼叫 方法, bEnable 並將 設定為 TRUE ,並修改 參數所 params 指定的物件成員 CMDITabInfo

如需如何使用 MDI 索引標籤式群組的詳細資訊,請參閱 MDI 索引標籤式群組

範例

下列範例示範如何在 EnableMDITabbedGroups VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

CMDITabInfo mdiTabParams;
mdiTabParams.m_bTabCustomTooltips = TRUE;

if (bMDITabsVS2005Look)
{
   mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_VS2005;
   mdiTabParams.m_bDocumentMenu = TRUE;
}
else if (bOneNoteTabs)
{
   mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE;
   mdiTabParams.m_bAutoColor = bMDITabColors;
}

if (bActiveTabCloseButton)
{
   mdiTabParams.m_bTabCloseButton = FALSE;
   mdiTabParams.m_bActiveTabCloseButton = TRUE;
}

EnableMDITabbedGroups(TRUE, mdiTabParams);

CMDIFrameWndEx::EnableMDITabs

啟用或停用 MDI 框架視窗的 MDI 索引標籤功能。 啟用時,框架視窗會顯示每個 MDI 子視窗的索引標籤。

void EnableMDITabs(
    BOOL bEnable=TRUE,
    BOOL bIcons=TRUE,
    CMFCTabCtrl::Location tabLocation=CMFCTabCtrl::LOCATION_BOTTOM,
    BOOL bTabCloseButton=FALSE,
    CMFCTabCtrl::Style style=CMFCTabCtrl::STYLE_3D_SCROLLED,
    BOOL bTabCustomTooltips=FALSE,
    BOOL bActiveTabCloseButton=FALSE);

參數

bEnable
指定是否啟用索引標籤。

bIcons
指定是否應該在索引標籤上顯示圖示。

tabLocation
指定索引標籤的位置。

bTabCloseButton
指定是否要顯示索引標籤關閉按鈕。

style
指定索引標籤的樣式。 用於 STYLE_3D_SCROLLED 一般索引標籤或 STYLE_3D_ONENOTE Microsoft OneNote 索引標籤。

bTabCustomTooltips
指定是否啟用自訂工具提示。

bActiveTabCloseButton
如果 TRUE 為 , [關閉 ] 按鈕將會顯示在使用中的索引標籤上,而不是顯示在索引標籤區域的右角。

備註

呼叫此方法以啟用或停用 MDI 框架視窗的 MDI 索引標籤功能。 啟用時,所有子視窗都會顯示為索引標籤。

索引標籤可以位於框架的頂端或底部,視 參數 tabLocation 的設定而定。 您可以指定 CMFCTabCtrl::LOCATION_BOTTOM (預設設定) 或 CMFCTabCtrl::LOCATION_TOP

如果 bTabCustomTooltipsTRUEAFX_WM_ON_GET_TAB_TOOLTIP 則會將訊息傳送至主框架視窗。 您的程式碼可以處理此訊息,並提供適用于 MDI 索引標籤的自訂工具提示架構。

範例

下列範例示範如何在 EnableMDITabs MDITabsDemo 範例中使用 MFC 索引標籤式 MDI 應用程式

void CMainFrame::UpdateMDITabs(BOOL bResetMDIChild)
{
   CMDITabInfo params;
   HWND hwndActive = NULL;

   switch (theApp.m_Options.m_nMDITabsType)
   {
   case CMDITabOptions::None:
   {
      BOOL bCascadeMDIChild = FALSE;

      if (IsMDITabbedGroup())
      {
         EnableMDITabbedGroups(FALSE, params);
         bCascadeMDIChild = TRUE;
      }
      else if (AreMDITabs())
      {
         EnableMDITabs(FALSE);
         bCascadeMDIChild = TRUE;
      }

      if (bCascadeMDIChild)
      {
         // CMDIClientAreaWnd m_wndClientArea
         hwndActive = (HWND)m_wndClientArea.SendMessage(WM_MDIGETACTIVE);
         m_wndClientArea.PostMessage(WM_MDICASCADE);
         m_wndClientArea.UpdateTabs(false);
         m_wndClientArea.SetActiveTab(hwndActive);
         ::BringWindowToTop(hwndActive);
      }
   }
   break;

   case CMDITabOptions::MDITabsStandard:
      hwndActive = (HWND)m_wndClientArea.SendMessage(WM_MDIGETACTIVE);
      m_wndClientArea.PostMessage(WM_MDIMAXIMIZE, LPARAM(hwndActive), 0L);
      ::BringWindowToTop(hwndActive);

      EnableMDITabs(TRUE, theApp.m_Options.m_bMDITabsIcons, theApp.m_Options.m_bTabsOnTop ? CMFCTabCtrl::LOCATION_TOP : CMFCTabCtrl::LOCATION_BOTTOM, theApp.m_Options.m_nTabsStyle);

      GetMDITabs().EnableAutoColor(theApp.m_Options.m_bTabsAutoColor);
      GetMDITabs().EnableTabDocumentsMenu(theApp.m_Options.m_bMDITabsDocMenu);
      GetMDITabs().EnableTabSwap(theApp.m_Options.m_bDragMDITabs);
      GetMDITabs().SetTabBorderSize(theApp.m_Options.m_nMDITabsBorderSize);
      GetMDITabs().SetFlatFrame(theApp.m_Options.m_bFlatFrame);
      GetMDITabs().EnableCustomToolTips(theApp.m_Options.m_bCustomTooltips);
      GetMDITabs().EnableCustomToolTips(theApp.m_Options.m_bCustomTooltips);
      GetMDITabs().EnableActiveTabCloseButton(theApp.m_Options.m_bActiveTabCloseButton);
      break;

CMDIFrameWndEx::EnableMDITabsLastActiveActivation

指定當使用者關閉目前索引標籤時,是否應該開啟最後一個使用中索引標籤。

void EnableMDITabsLastActiveActivation(BOOL bLastActiveTab=TRUE);

參數

bLastActiveTab
[in]如果 TRUE 為 ,請啟用最後一個使用中索引標籤的啟用。如果 FALSE 為 ,請停用上一個使用中索引標籤的啟用。

備註

當使用中索引標籤關閉時,有兩種方式可以開啟索引標籤:

  • 啟動下一個索引標籤。
  • 啟動先前使用中的索引標籤。

預設實作會使用第一種方式。

使用 EnableMDITabsLastActiveActivation 來啟用索引標籤啟用的第二種方式。 它會模擬 Windows 開啟 MDI 子視窗的方式。

CMDIFrameWndEx::EnablePaneMenu

啟用或停用快顯視窗功能表的自動建立和管理,以顯示應用程式窗格的清單。

void EnablePaneMenu(
    BOOL bEnable,
    UINT uiCustomizeCmd,
    const CString& strCustomizeLabel,
    UINT uiViewToolbarsMenuEntryID,
    BOOL bContextMenuShowsToolbarsOnly=FALSE,
    BOOL bViewMenuShowsToolbarsOnly=FALSE);

參數

bEnable
[in]如果 TRUE 為 ,則會啟用窗格功能表的自動處理;如果 FALSE 為 ,則會停用自動處理。

uiCustomizeCmd
[in]自訂 功能表項目的 命令識別碼。 此功能表項目通常會新增至窗格清單的結尾。

strCustomizeLabel
[in]要針對 [自訂 ] 功能表項目顯示的文字(用於當地語系化)。

uiViewToolbarsMenuEntryID
[in]指定開啟窗格功能表的工具列功能表項目識別碼。 這通常是 [ 檢視 ] 功能表的 [工具列] 子功能表。

bContextMenuShowsToolbarsOnly
[in]如果 TRUE 為 ,則窗格功能表只會顯示工具列清單。 如果 FALSE 為 ,功能表會顯示工具列和停駐列的清單。

bViewMenuShowsToolbarsOnly
[in]如果 TRUE 為 ,則窗格功能表只會顯示工具列清單。 如果 FALSE 為 ,功能表會顯示工具列和停駐列的清單。

備註

快顯窗格功能表會顯示應用程式窗格的清單,並讓使用者顯示或隱藏個別窗格。

範例

下列範例示範如何在 EnablePaneMenu VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

// Enable pane context menu(list of bars + customize command):
EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, _T("Customize..."), ID_VIEW_TOOLBARS, FALSE, TRUE);

CMDIFrameWndEx::EnableWindowsDialog

插入命令識別碼呼叫 CMFCWindowsManagerDialog 對話方塊的功能表項目。

void EnableWindowsDialog(
    UINT uiMenuId,
    LPCTSTR lpszMenuText,
    BOOL bShowAllways=FALSE,
    BOOL bShowHelpButton=FALSE);

void EnableWindowsDialog(
    UINT uiMenuId,
    UINT uiMenuTextResId,
    BOOL bShowAllways=FALSE,
    BOOL bShowHelpButton=FALSE);

參數

uiMenuId
[in]指定功能表的資源識別碼。

lpszMenuText
[in]指定專案的文字。

bShowHelpButton
[in]指定是否要在 [視窗管理] 對話方塊中顯示 [說明 ] 按鈕。

uiMenuTextResId
[in]包含專案文字字串的字串資源識別碼。

備註

使用此方法插入功能表項目,其命令會呼叫 MDI 子視窗管理對話方塊 ( CMFCWindowsManagerDialog 類別 )。 新專案會插入 指定的 uiMenuId 功能表中。 當您處理 WM_CREATE 訊息時呼叫 EnableWindowsDialog

範例

下列範例示範如何在 EnableWindowsDialog VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

// Enable windows manager:
EnableWindowsDialog(ID_WINDOW_MANAGER, _T("Windows..."), TRUE);

CMDIFrameWndEx::GetActivePopup

將指標傳回到目前顯示的快顯功能表。

CMFCPopupMenu* GetActivePopup() const;

傳回值

作用中快顯功能表的指標; NULL 如果沒有使用中快顯功能表,則為 。

備註

使用此函式取得目前顯示之 CMFCPopupMenu 類別 物件的指標。

CMDIFrameWndEx::GetDefaultResId

傳回 MDI 框架視窗共用資源的識別碼。

UINT GetDefaultResId() const;

傳回值

資源識別碼值。 如果框架視窗沒有功能表列,則為 0。

備註

這個方法會傳回由 載入 CFrameWnd::LoadFrame MDI 框架視窗時所指定的資源識別碼。

CMDIFrameWndEx::GetMDITabGroups

傳回 MDI 索引標籤式視窗的清單。

const CObList& GetMDITabGroups() const;

傳回值

類別 物件的參考 CObList ,其中包含索引標籤式視窗清單。 請勿儲存或修改清單。

備註

使用這個方法來存取索引標籤式視窗清單。 如果您想要變更或查詢個別索引標籤式視窗的某些參數,可能會很有説明。

CMDIFrameWndEx::GetMDITabs

傳回底線索引標籤式視窗的參考。

CMFCTabCtrl& GetMDITabs();

傳回值

底線索引標籤視窗的參考。

CMDIFrameWndEx::GetMDITabsContextMenuAllowedItems

傳回旗標的組合,決定啟用 MDI 索引標籤式群組功能時哪些作業有效。

DWORD GetMDITabsContextMenuAllowedItems();

傳回值

下列旗標的位 「or」 ( | ) 組合:

  • AFX_MDI_CREATE_VERT_GROUP - 可以建立垂直索引標籤群組。
  • AFX_MDI_CREATE_HORZ_GROUP - 可以建立水準索引標籤群組。
  • AFX_MDI_CAN_MOVE_PREV - 可以將索引標籤移至上一個索引標籤群組。
  • AFX_MDI_CAN_MOVE_NEXT - 可以將索引標籤移至下一個索引標籤群組。

備註

啟用 MDI 索引標籤式群組功能時,您必須知道特定視窗的索引標籤上允許哪些作業。 這個方法會分析索引標籤式視窗的目前版面配置,並傳回可用來建置的旗標組合,例如快顯功能表。

當所有索引標籤式視窗垂直對齊,或只有一個索引標籤式視窗時,您可以建立新的垂直索引標籤群組。

當所有索引標籤式視窗水準對齊,或只有一個索引標籤式視窗時,您可以建立新的水準索引標籤群組。

只有當索引標籤視窗中有多個索引標籤時,才可以將索引標籤移至上一個群組。

只有當索引標籤視窗中有多個索引標籤時,才可以將索引標籤移至下一個群組。

CMDIFrameWndEx::GetMenuBar

傳回附加至框架視窗之功能表列物件的指標。

const CMFCMenuBar* GetMenuBar() const;

傳回值

功能表列物件的指標。

CMDIFrameWndEx::GetPane

傳回具有指定控制項識別碼之窗格的指標。

CBasePane* GetPane(UINT nID);

參數

nID
[in]控制項識別碼。

傳回值

如果有指定的控制項識別碼,則為窗格的指標。 否則為 NULL

CMDIFrameWndEx::GetRibbonBar

擷取框架的功能區列控制項。

CMFCRibbonBar* GetRibbonBar();

傳回值

框架類別 CMFCRibbonBar 的指標。

備註

CMDIFrameWndEx::GetTearOffBars

傳回卸載功能表的清單。

const CObList& GetTearOffBars() const;

傳回值

類別 物件的參考 CObList ,其中包含衍生物件的指標集合,這些物件 CPane 處於卸載狀態。

備註

CMDIFrameWndEx 會維護卸載功能表的集合。 使用這個方法來擷取此清單的參考。

CMDIFrameWndEx::GetToolbarButtonToolTipText

當應用程式顯示工具列按鈕的工具提示時,由架構呼叫。

virtual BOOL GetToolbarButtonToolTipText(
    CMFCToolBarButton* pButton,
    CString& strTTText);

參數

pButton
[in]工具列按鈕的指標。

strTTText
[in]要針對按鈕顯示的工具提示文字。

傳回值

TRUE 如果工具提示已顯示,則為 。 否則為 FALSE

備註

CMDIFrameWndEx::InsertPane

向停駐管理員註冊指定的窗格。

BOOL InsertPane(
    CBasePane* pControlBar,
    CBasePane* pTarget,
    BOOL bAfter=TRUE);

參數

pControlBar
[in]要插入之窗格的指標。

pTarget
[in]要插入窗格之前或之後窗格的指標。

bAfter
[in]如果 TRUE 為 , pControlBar 則會在 之後 pTarget 插入 。 如果 FALSE 為 , pControlBar 則會在 之前 pTarget 插入 。

傳回值

TRUE 如果方法成功註冊窗格, FALSE 則為 ,如果窗格已經向停駐管理員註冊,則為 。

備註

使用這個方法,告知停駐管理員有關 所 pControlBar 指定的窗格。 停駐管理員會根據停駐管理員內部清單中的窗格對齊方式和位置來對齊此窗格。

CMDIFrameWndEx::IsFullScreen

判斷框架視窗是否處於全螢幕模式。

BOOL IsFullScreen() const;

傳回值

TRUE 如果框架視窗處於全螢幕模式,則為 ;否則 FALSE 為 。

備註

您可以呼叫 CMDIFrameWndEx::EnableFullScreenMode 方法來設定全螢幕模式。

CMDIFrameWndEx::IsMDITabbedGroup

指定是否啟用 MDI 索引標籤式群組功能。

BOOL IsMDITabbedGroup() const;

傳回值

TRUE 如果已啟用 MDI 索引標籤式群組功能,則為 ;否則 FALSE 為 。

備註

若要判斷已啟用一般 MDI 索引標籤或 MDI 索引標籤式群組功能,請使用 CMDIFrameWndEx::AreMDITabs

CMDIFrameWndEx::IsMemberOfMDITabGroup

判斷指定的索引標籤式視窗是否位於 MDI 索引標籤式群組中的視窗清單中。

BOOL IsMemberOfMDITabGroup(CWnd* pWnd);

參數

pWnd
[in]索引標籤視窗的指標。

傳回值

TRUE 如果指定的索引標籤式視窗位於表單 MDI 索引標籤式群組的索引標籤式視窗中,則為 。 否則 FALSE 為 。

CMDIFrameWndEx::IsMenuBarAvailable

判斷框架視窗是否有功能表列。

BOOL IsMenuBarAvailable() const;

傳回值

TRUE 如果功能表列物件的指標不是 NULL ,則為 ,否則 FALSE 為 。

CMDIFrameWndEx::IsPointNearDockSite

判斷指定的點是否靠近停駐月臺。

BOOL IsPointNearDockSite(
    CPoint point,
    DWORD& dwBarAlignment,
    BOOL& bOuterEdge) const;

參數

point
[in]螢幕座標中的指定點。

dwBarAlignment
[in]指定點接近的邊緣。 可能的值為 CBRS_ALIGN_LEFT 、、 CBRS_ALIGN_RIGHTCBRS_ALIGN_TOP 、 和 CBRS_ALIGN_BOTTOM

bOuterEdge
[in] TRUE 如果點靠近停駐點的外部框線,則為 ; FALSE 否則。

傳回值

TRUE 如果點靠近停駐點,則為 ;否則 FALSE 為 。

備註

當點位於停駐管理員中設定的敏感度設定內時,點會靠近停駐月臺。 預設敏感度為 15 圖元。

CMDIFrameWndEx::IsPrintPreview

判斷框架視窗是否處於預覽列印模式。

BOOL IsPrintPreview();

傳回值

TRUE 如果框架視窗處於預覽列印模式,則為 ;否則為 FALSE

備註

CMDIFrameWndEx::LoadFrame

從資源資訊建立框架視窗。

virtual BOOL LoadFrame(
    UINT nIDResource,
    DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
    CWnd* pParentWnd = NULL,
    CCreateContext* pContext = NULL);

參數

nIDResource
[in]與框架視窗相關聯的共用資源的識別碼。

dwDefaultStyle
[in]框架視窗的樣式。

pParentWnd
[in]框架父系的指標。

pContext
[in]結構的 指標 CCreateContext 。 這個參數可以是 NULL

傳回值

TRUE 如果方法成功,則為 ,否則 FALSE 為 。

CMDIFrameWndEx::LoadMDIState

載入 MDI 索引標籤式群組的指定版面配置,以及先前開啟的檔案清單。

virtual BOOL LoadMDIState(LPCTSTR lpszProfileName);

參數

lpszProfileName
[in]指定設定檔名稱。

傳回值

TRUE 如果負載成功,則為 ; FALSE 如果載入失敗或沒有要載入的資料,則為 。

備註

若要載入或儲存 MDI 索引標籤和群組的狀態,以及已開啟的檔案清單,請執行下列動作:

  • 關閉主框架時呼叫 CMDIFrameWndEx::SaveMDIState
  • 建立主框架時呼叫 CMDIFrameWndEx::LoadMDIState 。 此呼叫的建議位置是在第一次顯示主框架之前。 (pMainFrame);CWinAppEx::ReloadWindowPlacementpMainFrame->LoadFrame (IDR_MAINFRAME);.CWinAppEx::EnableLoadWindowPlacement(FALSE); 呼叫 LoadMDIState 之後新增 ,以在登錄中儲存的位置顯示主要畫面格。
  • 如果您的應用程式顯示未儲存為檔案的檔,請在 - 衍生類別中 CMDIChildWndExGetDocumentName 寫 。 傳回的字串將會儲存在登錄中做為檔識別碼。 的基底實 CMDIChildWndEx::GetDocumentName 作會傳回從 CDocument::GetPathName 取得的值。
  • 覆寫 CMDIFrameWndEx::CreateDocumentWindow 以在從登錄載入檔時正確建立檔。 第一個參數是傳回的 GetDocumentName 字串。

範例

下列範例示範如何在 LoadMDIState VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
{
   if (!pMainFrame->LoadMDIState(GetRegSectionPath()))
   {
      m_pStartDocTemplate->OpenDocumentFile(NULL);
   }
}
else
{
   // Dispatch commands specified on the command line
   if (!ProcessShellCommand(cmdInfo))
   {
      return FALSE;
   }
}

CMDIFrameWndEx::MDITabMoveToNextGroup

將現用索引標籤從目前使用中的索引標籤視窗移至下一個或上一個索引標籤式群組。

void MDITabMoveToNextGroup(BOOL bNext=TRUE);

參數

bNext
[in]如果 TRUE 為 ,請將索引標籤移至下一個索引標籤群組。 如果 FALSE 為 ,請將它移至上一個索引標籤式群組。

CMDIFrameWndEx::MDITabNewGroup

建立具有單一視窗的新索引標籤式群組。

void MDITabNewGroup(BOOL bVert=TRUE);

參數

bVert
[in]指定新的群組對齊方式。 如果 TRUE 為 ,則新群組會垂直對齊。 如果 FALSE 為 ,新群組會水準對齊。

備註

使用此函式可建立新的索引標籤式視窗(新的索引標籤群組),並將第一個索引標籤新增至其中。

範例

下列範例示範如何在 MDITabNewGroup VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

void CMainFrame::OnMdiNewHorzTabGroup()
{
   MDITabNewGroup(FALSE);
}

CMDIFrameWndEx::m_bCanConvertControlBarToMDIChild

指定停駐窗格是否可以轉換成 MDI 子視窗。

BOOL m_bCanConvertControlBarToMDIChild;

備註

指出停駐控制列是否可以轉換成 MDI 子視窗。 如果此旗標為 TRUE ,架構會在使用者選取 Tabbed Document 命令時自動處理轉換。 旗標受到保護,您必須在衍生類別的 CMDIFrameWndEx 建構函式中設定 m_bCanConvertControlBarToMDIChild ,或覆寫 CanConvertControlBarToMDIChild 來明確啟用此選項。

預設值是 FALSE

範例

下列範例示範如何在 m_bCanConvertControlBarToMDIChild VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

CMainFrame::CMainFrame()
{
   CMFCPopupMenu::SetForceShadow(TRUE);
   m_bCanConvertControlBarToMDIChild = TRUE;
}

CMDIFrameWndEx::m_bDisableSetRedraw

啟用或停用 MDI 子視窗的重新繪製優化。

AFX_IMPORT_DATA static BOOL m_bDisableSetRedraw;

備註

預設值是 TRUE

如果您想要將 MDI 子系的重新繪製優化,請將此旗標 FALSE 設定為 。 在此情況下,當應用程式變更使用中索引標籤時,架構會呼叫 SetRedraw (FALSE) 主要畫面格。

此旗標可能會導致不必要的效果(例如可見的背景應用程式)。 因此,建議您只有在 MDI 索引標籤啟用期間遇到明顯的閃爍時,才變更預設值。

CMDIFrameWndEx::NegotiateBorderSpace

在 OLE 就地啟用期間交涉框架視窗中的框線空間。

virtual BOOL NegotiateBorderSpace(
    UINT nBorderCmd,
    LPRECT lpRectBorder);

參數

nBorderCmd
[in]包含列舉 CFrameWnd::BorderCmd 的下列其中一個值:

  • borderGet = 1
  • borderRequest = 2
  • borderSet = 3

lpRectBorder
[in, out]RECT 結構 CRect 類別 物件的指標,指定框線的座標。

傳回值

如果方法成功,則為非零;否則為 0。

備註

此方法是 OLE 邊界空間交涉的實作。

CMDIFrameWndEx::OnCloseDockingPane

當使用者按一下 可停駐窗格上的 [關閉 ] 按鈕時,由架構呼叫。

virtual BOOL OnCloseDockingPane(CDockablePane* pWnd);

參數

pWnd
[in]關閉窗格的指標。

傳回值

TRUE 如果可以關閉停駐窗格,則為 。 否則為 FALSE

備註

覆寫此方法以處理隱藏停駐窗格。 如果您想要防止隱藏停駐窗格,則傳回 FALSE

預設實作不會執行任何動作,並傳 TRUE 回 。

CMDIFrameWndEx::OnCloseMiniFrame

當使用者按一下 浮動迷你框架視窗上的 [關閉 ] 按鈕時,由架構呼叫。

virtual BOOL OnCloseMiniFrame(CPaneFrameWnd*);

參數

pWnd
[in]正在關閉之迷你框架視窗的指標。

傳回值

TRUE 如果浮動迷你框架視窗可以關閉,則為 。 否則為 FALSE

備註

覆寫此方法以處理浮動迷你框架視窗的隱藏。 如果您想要防止浮動迷你框架視窗隱藏,則傳回 FALSE

預設實作不會執行任何動作,並傳 TRUE 回 。

CMDIFrameWndEx::OnClosePopupMenu

當作用中的快顯功能表處理 WM_DESTROY 訊息時,由架構呼叫。

virtual void OnClosePopupMenu(CMFCPopupMenu* pMenuPopup);

參數

pMenuPopup
[in]快顯功能表的指標。

備註

如果您想要處理屬於 MDI 框架視窗之類別 物件的通知 CMFCPopupMenu ,當這些物件處理 WM_DESTROY 訊息時,請覆寫此方法。

CMDIFrameWndEx::OnCmdMsg

由架構呼叫以路由和分派命令訊息,以及更新命令使用者介面物件。

virtual BOOL OnCmdMsg(
    UINT nID,
    int nCode,
    void* pExtra,
    AFX_CMDHANDLERINFO* pHandlerInfo);

參數

nID
[in]命令識別碼。

nCode
[in]識別命令通知程式碼。 如需 有關 之值 nCode 的詳細資訊,請參閱 CCmdTarget::OnCmdMsg

pExtra
[in]根據 的值 nCode 使用。 如需 pExtra 的詳細資訊,請參閱CCmdTarget::OnCmdMsg

pHandlerInfo
[in, out]一般而言,此參數應該是 NULL 。 如果不是 NULLOnCmdMsg 則填入 pTarget 結構的 和 pmf 成員 pHandlerInfo ,而不是分派命令。

傳回值

如果處理訊息,則為非零;否則為 0。

CMDIFrameWndEx::OnDrawMenuImage

架構在繪製與功能表項目相關聯的映像時所呼叫。

virtual BOOL OnDrawMenuImage(
    CDC* pDC,
    const CMFCToolBarMenuButton* pMenuButton,
    const CRect& rectImage);

參數

pDC
[in]裝置內容的指標。

pMenuButton
[in]功能表按鈕的指標。

rectImage
[in]影像的周框。

傳回值

TRUE 如果 方法繪製影像,則為 。 預設實作會傳回 FALSE

備註

如果您想要自訂屬於衍生物件所 CMDIFrameWndEx 擁有功能表列之功能表項目的影像轉譯,請覆寫這個方法。 預設實作不做任何動作。

由架構在處理 WM_PAINT 訊息時 CMFCPopupMenu 呼叫。

virtual void OnDrawMenuLogo(
    CDC*,
    CMFCPopupMenu*,
    const CRect&);

備註

覆寫此函式,以顯示屬於衍生物件所 CMDIFrameWndEx 擁有功能表列的快顯功能表上的標誌。 預設實作不做任何動作。

CMDIFrameWndEx::OnEraseMDIClientBackground

當 MDI 框架視窗處理 WM_ERASEBKGND 訊息時,由架構呼叫。

virtual BOOL OnEraseMDIClientBackground(CDC*);

傳回值

TRUE 如果應用程式處理訊息並清除背景,則為 。

備註

如果您想要在衍生類別中 CMDIFrameWndEx 處理訊息, WM_ERASEBKGND 請覆寫此成員函式。

CMDIFrameWndEx::OnMenuButtonToolHitTest

當物件處理 WM_NCHITTEST 訊息時 CMFCToolBarButton ,由架構呼叫。

virtual BOOL OnMenuButtonToolHitTest(
    CMFCToolBarButton* pButton,
    TOOLINFO* pTI);

參數

pButton
[in]工具列按鈕。

pTI
[out]結構的 TOOLINFO 指標。

傳回值

TRUE 如果應用程式填滿 參數,則為 pTI 。 預設實作會傳回 FALSE

備註

如果您想要將特定功能表項目的相關資訊提供給工具提示,請覆寫此方法。 預設實作不做任何動作。

CMDIFrameWndEx::OnMoveMiniFrame

由架構呼叫以移動迷你框架視窗。

virtual BOOL OnMoveMiniFrame(CWnd* pFrame);

參數

pFrame
[in]迷你框架視窗的指標。

傳回值

TRUE 如果方法成功,則為 ,否則 FALSE 為 。

CMDIFrameWndEx::OnSetPreviewMode

設定應用程式的主框架視窗預覽列印模式。

virtual void OnSetPreviewMode(
    BOOL bPreview,
    CPrintPreviewState* pState);

參數

bPreview
[in]如果 TRUE 為 ,則設定預覽列印模式。 如果 FALSE 為 ,則會取消預覽模式。

pState
[in]結構的指標 CPrintPreviewState

備註

這個方法會覆寫 CFrameWnd::OnSetPreviewMode

CMDIFrameWndEx::OnShowCustomizePane

啟動 [快速自訂] 窗格時,由架構呼叫。

virtual BOOL OnShowCustomizePane(
    CMFCPopupMenu* pMenuPane,
    UINT uiToolbarID);

參數

pMenuPane
[in][快速自訂] 窗格的指標。

uiToolbarID
[in]要自訂之工具列的控制項識別碼。

傳回值

此方法一律會傳回 TRUE

備註

[快速自訂] 窗格是當使用者按一下 工具列上的 [自訂 ] 時開啟的功能表。

覆寫衍生類別中的這個方法,以在 [快速自訂] 窗格中進行變更。

CMDIFrameWndEx::OnShowMDITabContextMenu

在其中一個索引標籤上顯示快捷方式功能表之前,由架構呼叫。 僅適用于 MDI 索引標籤式群組。

virtual BOOL OnShowMDITabContextMenu(
    CPoint point,
    DWORD dwAllowedItems,
    BOOL bTabDrop);

參數

point
[in]螢幕座標中功能表的位置。

dwAllowedItems
[in]旗標的位 「or」 ( | ) 組合,表示目前索引標籤允許哪些動作:

  • AFX_MDI_CREATE_VERT_GROUP - 可以建立垂直索引標籤群組。
  • AFX_MDI_CREATE_HORZ_GROUP - 可以建立水準索引標籤群組。
  • AFX_MDI_CAN_MOVE_PREV - 可以將索引標籤移至上一個索引標籤群組。
  • AFX_MDI_CAN_MOVE_NEXT - 可以將索引標籤移至下一個索引標籤群組。
  • AFX_MDI_CAN_BE_DOCKED - 將索引標籤式檔切換為停駐狀態(僅適用于索引標籤式檔)。

bTabDrop
[in] TRUE 表示將索引標籤拖曳到另一個索引標籤群組時顯示功能表。 FALSE 表示將功能表顯示為目前使用中索引標籤上的快捷方式功能表。

傳回值

在衍生類別中 CMDIFrameWndEx 覆寫這個方法。

備註

如果您未處理 OnShowMDITabContextMenu ,則不會顯示快捷方式功能表。 當您啟用 MDI 索引標籤式群組功能時,MFC 應用程式精靈 會產生此函式。

範例

下列範例示範如何在 OnShowMDITabContextMenu VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

BOOL CMainFrame::OnShowMDITabContextMenu(CPoint point, DWORD dwAllowedItems, BOOL bDrop)
{
   CMenu menu;
   VERIFY(menu.LoadMenu(bDrop ? IDR_POPUP_DROP_MDITABS : IDR_POPUP_MDITABS));

   CMenu* pPopup = menu.GetSubMenu(0);
   ASSERT(pPopup != NULL);

   if ((dwAllowedItems & AFX_MDI_CREATE_HORZ_GROUP) == 0)
   {
      pPopup->DeleteMenu(ID_MDI_NEW_HORZ_TAB_GROUP, MF_BYCOMMAND);
   }

   if ((dwAllowedItems & AFX_MDI_CREATE_VERT_GROUP) == 0)
   {
      pPopup->DeleteMenu(ID_MDI_NEW_VERT_GROUP, MF_BYCOMMAND);
   }

   if ((dwAllowedItems & AFX_MDI_CAN_MOVE_NEXT) == 0)
   {
      pPopup->DeleteMenu(ID_MDI_MOVE_TO_NEXT_GROUP, MF_BYCOMMAND);
   }

   if ((dwAllowedItems & AFX_MDI_CAN_MOVE_PREV) == 0)
   {
      pPopup->DeleteMenu(ID_MDI_MOVE_TO_PREV_GROUP, MF_BYCOMMAND);
   }

   if ((dwAllowedItems & AFX_MDI_CAN_BE_DOCKED) == 0)
   {
      pPopup->DeleteMenu(ID_MDI_TABBED_DOCUMENT, MF_BYCOMMAND);
   }

   CMFCPopupMenu* pPopupMenu = new CMFCPopupMenu;
   pPopupMenu->SetAutoDestroy(FALSE);
   pPopupMenu->Create(this, point.x, point.y, pPopup->GetSafeHmenu());

   return TRUE;
}

CMDIFrameWndEx::OnShowPanes

由架構呼叫以顯示或隱藏窗格。

virtual BOOL OnShowPanes(BOOL bShow);

參數

bShow
[in] TRUE 表示顯示窗格, FALSE 以隱藏窗格。

傳回值

TRUE 如果窗格的狀態因為呼叫這個方法而變更,則為 , FALSE 如果窗格已經處於 所 bShow 指定的狀態,則為 。 例如,如果窗格已隱藏且 bShowFALSE ,則 Return 值為 FALSE

備註

預設實作會從最上層框架視窗移除工具列。

如果 CDockingManager::m_bHideDockingBarsInContainerModeTRUE (預設值),則會隱藏所有停駐窗格。

CMDIFrameWndEx::OnShowPopupMenu

當架構開啟快顯功能表時,由架構呼叫。

virtual BOOL OnShowPopupMenu(CMFCPopupMenu*);

傳回值

TRUE 如果要顯示快顯功能表,則為 。 否則為 FALSE。 預設實作會傳回 TRUE

備註

如果您想要在快顯功能表啟用時實作特殊處理,請覆寫此方法。 例如,如果您想要將一般功能表項目變更為色彩功能表按鈕、設定卸載列等等。

預設實作不做任何動作。

CMDIFrameWndEx::OnSizeMDIClient

當用戶端 MDI 視窗的大小變更時,由架構呼叫。

virtual void OnSizeMDIClient(
    const CRect& rectOld,
    const CRect& rectNew);

參數

rectOld
[in]MDI 用戶端視窗的目前大小。

rectNew
[in]MDI 用戶端視窗的新大小。

備註

CMDIFrameWndEx::OnTearOffMenu

架構在啟動有分割列的功能表時所呼叫。

virtual BOOL OnTearOffMenu(
    CMFCPopupMenu* pMenuPopup,
    CPane* pBar);

參數

pMenuPopup
[in]快顯功能表的指標。

pBar
[in]卸載列的指標。

傳回值

TRUE 允許啟動含卸載列的快顯功能表;否則 FALSE 為 。 預設值為 TRUE

備註

當您想要實作卸載列的特殊設定時,請覆寫此函式。 預設實作不做任何動作。

CMDIFrameWndEx::OnUpdateFrameMenu

由架構呼叫以更新框架功能表。

virtual void OnUpdateFrameMenu(HMENU hMenuAlt);

參數

hMenuAlt
[in]功能表的控制碼。

CMDIFrameWndEx::PaneFromPoint

傳回包含指定點的停駐窗格。

CBasePane* PaneFromPoint(
    CPoint point,
    int nSensitivity,
    bool bExactBar,
    CRuntimeClass* pRTCBarType) const;

CBasePane* PaneFromPoint(
    CPoint point,
    int nSensitivity,
    DWORD& dwAlignment,
    CRuntimeClass* pRTCBarType) const;

參數

point
[in]點 (以螢幕座標為單位)。

nSensitivity
[in]每個核取窗格的視窗矩形都會依此值以所有方向放大。

bExactBar
[in]如果 TRUE 為 ,則會 nSensitivity 忽略 參數。

pRTCBarType
[in]如果不是 , NULL 則方法只會逐一查看指定型別的窗格。

dwAlignment
[out]如果找到窗格,此參數會指定窗格的哪一端最接近指定的點。

傳回值

停駐窗格的指標,如果沒有控制項包含 所指定的點, NULL 則為 point

備註

呼叫會重新導向至 CDockingManager 類別 。 如需詳細資訊,請參閱CDockingManager::ControlBarFromPoint

CMDIFrameWndEx::RecalcLayout

架構呼叫以重新計算框架視窗的配置。

virtual void RecalcLayout(BOOL bNotify = TRUE);

參數

bNotify
[in]判斷框架視窗的作用中就地專案是否會收到版面配置變更的通知。 如果 TRUE 為 ,則會通知專案,否則 FALSE 為 。

備註

此方法會 覆寫 CFrameWnd::RecalcLayout

CMDIFrameWndEx::RemovePaneFromDockManager

取消註冊窗格,並將它從停駐管理員中移除。

void RemovePaneFromDockManager(
    CBasePane* pControlBar,
    BOOL bDestroy,
    BOOL bAdjustLayout,
    BOOL bAutoHide,
    CBasePane* pBarReplacement);

參數

pControlBar
[in]要移除之窗格的指標。

bDestroy
[in] TRUE 以終結移除的窗格。 FALSE 不要摧毀它。

bAdjustLayout
[in] TRUE 以立即調整停駐配置。 如果 FALSE 為 ,則只有在基於其他原因發生重繪事件時,才會進行調整(使用者調整視窗大小、拖曳主框架等)。

bAutoHide
[in] TRUE 表示從自動隱藏窗格清單中移除窗格。 FALSE 表示從一般窗格清單中移除窗格。

pBarReplacement
[in]取代已移除窗格之窗格的指標。

備註

您必須向停駐管理員註冊每個窗格,才能參與停駐配置。 使用 CMDIFrameWndEx::AddPaneCMDIFrameWndEx::InsertPane 註冊窗格。

當窗格不再是框架視窗停駐版面配置的一部分時,請使用這個方法。

CMDIFrameWndEx::SaveMDIState

儲存 MDI 索引標籤式群組的目前版面配置,以及先前開啟的檔案清單。

virtual BOOL SaveMDIState(LPCTSTR lpszProfileName);

參數

lpszProfileName
[in]指定設定檔名稱。

傳回值

TRUE 如果儲存成功,則為 ; FALSE 如果儲存失敗,則為 。

備註

若要載入或儲存 MDI 索引標籤和群組的狀態,以及已開啟的檔案清單,請執行下列動作:

  • 關閉主框架時呼叫 SaveMDIState
  • 建立主框架時呼叫 CMDIFrameWndEx::LoadMDIState 。 此呼叫的建議位置是在第一次顯示主框架之前。
  • 呼叫 CWinAppEx::EnableLoadWindowPlacement(FALSE); 之前 pMainFrame->LoadFrame (IDR_MAINFRAME);
  • 呼叫 CWinAppEx::ReloadWindowPlacement(pMainFrame) 之後 LoadMDIState ,在登錄中儲存的位置顯示主要畫面格。
  • 如果您的應用程式顯示未儲存為檔案的檔,請在 - 衍生類別中 CMDIChildWndExGetDocumentName 寫 。 傳回的字串將會儲存在登錄中做為檔識別碼。 如需詳細資訊,請參閱CMDIChildWndEx::GetDocumentName
  • 覆寫 CMDIFrameWndEx::CreateDocumentWindow 以在從登錄載入檔時正確建立檔。 CreateDocumentWindow的參數是稍早傳回的字串 GetDocumentName

範例

下列範例示範如何在 SaveMDIState VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

void CMainFrame::OnClose()
{
   SaveMDIState(theApp.GetRegSectionPath());
   CMDIFrameWndEx::OnClose();
}

CMDIFrameWndEx::SetPrintPreviewFrame

設定預覽列印框架視窗。

void SetPrintPreviewFrame(CFrameWnd* pWnd);

參數

pWnd
[in]預覽列印框架視窗的指標。

備註

CMDIFrameWndEx::SetupToolbarMenu

將虛擬專案取代為使用者定義的專案,藉以修改工具列物件。

void SetupToolbarMenu(
    CMenu& menu,
    const UINT uiViewUserToolbarCmdFirst,
    const UINT uiViewUserToolbarCmdLast);

參數

menu
[in]要修改之 CMenu 類別 物件的參考。

uiViewUserToolbarCmdFirst
[in]指定第一個使用者定義的命令。

uiViewUserToolbarCmdLast
[in]指定最後一個使用者定義的命令。

CMDIFrameWndEx::ShowFullScreen

將主畫面從一般模式切換為全螢幕模式。

void ShowFullScreen();

備註

CMDIFrameWndEx::ShowPane

顯示或隱藏指定的窗格。

void ShowPane(
    CBasePane* pBar,
    BOOL bShow,
    BOOL bDelay,
    BOOL bActivate);

參數

pBar
[in]要顯示或隱藏之窗格的指標。

bShow
[in] TRUE 以顯示窗格。 FALSE 以隱藏窗格。

bDelay
[in] TRUE 以延遲停駐配置重新計算。 FALSE 以立即重新計算停駐配置。

bActivate
[in] TRUE 表示將窗格顯示為使用中。 FALSE 表示將窗格顯示為非使用中。

備註

呼叫此方法以顯示或隱藏窗格。 請勿用於 ShowWindow 停駐窗格。

範例

下列範例示範如何在 ShowPane VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

void COutputList1::OnViewOutput()
{
   CBasePane* pParentBar = DYNAMIC_DOWNCAST(CBasePane, GetOwner());
   CFrameWndEx* pMainFrame = DYNAMIC_DOWNCAST(CFrameWndEx, GetTopLevelFrame());

   if (pMainFrame != NULL && pParentBar != NULL)
   {
      pMainFrame->SetFocus();
      pMainFrame->ShowPane(pParentBar, FALSE, FALSE, FALSE);
   }
}

CMDIFrameWndEx::ShowWindowsDialog

建立方 CMFCWindowsManagerDialog 塊並開啟它。

void ShowWindowsDialog();

範例

下列範例示範如何在 ShowWindowsDialog VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

void CMainFrame::OnWindowManager()
{
   ShowWindowsDialog();
}

CMDIFrameWndEx::TabbedDocumentToControlBar

將指定的索引標籤式檔轉換為停駐窗格。

virtual BOOL TabbedDocumentToControlBar(CMDIChildWndEx* pMDIChildWnd);

參數

pMDIChildWnd
包含停駐窗格的 MDI 子視窗指標。

傳回值

TRUE 如果方法成功, FALSE 則為失敗。

備註

使用此方法可將索引標籤式檔轉換成停駐窗格。 索引標籤式檔必須使用 來建立 CMDIFrameWndEx::ControlBarToTabbedDocument

範例

下列範例示範如何在 TabbedDocumentToControlBar VisualStudioDemo 範例中使用 :MFC Visual Studio 應用程式

void CMainFrame::OnMdiTabbedDocument()
{
   CMDIChildWndEx* pMDIChild = DYNAMIC_DOWNCAST(CMDIChildWndEx, MDIGetActive());
   if (pMDIChild == NULL)
   {
      ASSERT(FALSE);
      return;
   }

   TabbedDocumentToControlBar(pMDIChild);
}

CMDIFrameWndEx::UpdateCaption

由架構呼叫以更新視窗框架標題。

void UpdateCaption();

備註

CMDIFrameWndEx::UpdateMDITabbedBarsIcons

設定每個 MDI 索引標籤式窗格的圖示。

void UpdateMDITabbedBarsIcons();

CMDIFrameWndEx::WinHelp

架構所呼叫以起始 WinHelp 應用程式或內容說明。

virtual void WinHelp(
    DWORD dwData,
    UINT nCmd = HELP_CONTEXT);

參數

dwData
[in]針對 所 nCmd 指定之說明的類型,指定資料。

nCmd
[in]指定所要求的說明類型。 如需可能值及其影響 dwData 參數方式的詳細資訊,請參閱 WinHelp

備註

這個方法會覆寫 CWnd::WinHelp

另請參閱

階層架構圖表
類別
CMDIFrameWnd 類別
CMDIChildWndEx 類別