CMDIFrameWndEx
類別
擴充 的功能 CMDIFrameWnd
,即 Windows Multiple Document Interface (MDI) 框架視窗。
語法
class CMDIFrameWndEx : public CMDIFrameWnd
成員
公用方法
資料成員
名稱 | 描述 |
---|---|
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;
};
繼承階層架構
需求
標頭: 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_bCanConvertControlBarToMDIChild
為 TRUE
。
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::EnableDocking
時CBasePane::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
並將 設定為 FALSE
, params
則會忽略。
即使已啟用 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
。
如果 bTabCustomTooltips
為 TRUE
, AFX_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_RIGHT
CBRS_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::ReloadWindowPlacement
pMainFrame->LoadFrame (IDR_MAINFRAME);.
在CWinAppEx::EnableLoadWindowPlacement
(FALSE);
呼叫LoadMDIState
之後新增 ,以在登錄中儲存的位置顯示主要畫面格。 - 如果應用程式顯示未儲存為檔案的檔案,請在 - 衍生類別中
CMDIChildWndEx
覆GetDocumentName
寫 。 傳回的字串將會儲存在登錄中做為文件識別碼。 的基底實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
= 1borderRequest
= 2borderSet
= 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
。 如果不是 NULL
, OnCmdMsg
則填入 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
擁有功能表欄之功能表項的影像轉譯,請覆寫這個方法。 預設實作不做任何動作。
CMDIFrameWndEx::OnDrawMenuLogo
由架構在處理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
指定的狀態,則為 。 例如,如果窗格已隱藏且 bShow
為 FALSE
,則 Return 值為 FALSE
。
備註
默認實作會從最上層框架窗口移除工具列。
如果 CDockingManager::m_bHideDockingBarsInContainerMode
為 TRUE
(預設值),則會隱藏所有停駐窗格。
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::AddPane
或 CMDIFrameWndEx::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
,在登錄中儲存的位置顯示主要畫面格。 - 如果應用程式顯示未儲存為檔案的檔案,請在 - 衍生類別中
CMDIChildWndEx
覆GetDocumentName
寫 。 傳回的字串將會儲存在登錄中做為文件識別碼。 如需詳細資訊,請參閱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
。