Класс 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 Tabbed Groups. |
CMDIFrameWndEx::GetMenuBar |
Возвращает указатель на объект строки меню, подключенный к окну кадра. |
CMDIFrameWndEx::GetRibbonBar |
Извлекает элемент управления панели ленты для кадра. |
CMDIFrameWndEx::GetTearOffBars |
Возвращает список производных CPane объектов, которые находятся в состоянии разрыва. |
CMDIFrameWndEx::GetThisClass |
Вызывается платформой для получения указателя на CRuntimeClass объект, связанный с этим типом класса. |
CMDIFrameWndEx::GetToolbarButtonToolTipText |
Вызывается платформой, когда приложение отображает подсказку для кнопки панели инструментов. |
CMDIFrameWndEx::InsertPane |
Регистрирует указанную область в диспетчере закреплений. |
CMDIFrameWndEx::IsFullScreen |
Определяет, находится ли окно фрейма в полноэкранном режиме. |
CMDIFrameWndEx::IsMDITabbedGroup |
Определяет, включена ли функция MDI Tabbed Groups. |
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 |
Вызывается платформой при CMFCPopupMenu обработке WM_PAINT сообщения. |
CMDIFrameWndEx::OnEraseMDIClientBackground |
Вызывается платформой, когда окно кадров MDI обрабатывает WM_ERASEBKGND сообщение. |
CMDIFrameWndEx::OnMenuButtonToolHitTest |
Вызывается платформой, когда CMFCToolBarButton объект обрабатывает WM_NCHITTEST сообщение. |
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 для перевода сообщений окна перед их отправкой в TranslateMessage функции Windows и DispatchMessage 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, наследуйте класс окна окна MDI приложения, CMDIFrameWndEx
а не CMDIFrameWnd
.
Пример
Следующий пример является производным от CMDIFrameWndEx
класса. Этот фрагмент кода поставляется из примера DrawClient: приложение для рисования объектов OLE на основе ленты MFC.
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] Не используется.
Замечания
Этот метод закрепляет указанную область с одной из сторон окна кадра, указанной при CBasePane::EnableDocking
вызове.CMDIFrameWndEx::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] Идентификатор команды, которая включает или отключает полноэкранный режим.
Замечания
В полноэкранном режиме все панели элементов управления, панели инструментов и меню скрыты, а активное представление изменяется, чтобы занять полноэкранный режим. При включении полноэкранного режима необходимо указать идентификатор команды, которая включает или отключает ее. Можно вызвать EnableFullScreenMode
из функции основного кадра OnCreate
. При переключении окна кадра в полноэкранный режим платформа создает плавающую панель инструментов с одной кнопкой с указанным идентификатором команды. Если вы хотите сохранить главное меню на экране, вызовите 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] Если функция групп с вкладками MDI включена; если TRUE
FALSE
функция групп с вкладками MDI отключена.
params
[in] Указывает параметры, которые платформа применяется к дочерним окнам, созданным в клиентской области MDI.
Замечания
Используйте этот метод, чтобы включить или отключить функцию групп с вкладками MDI. Эта функция позволяет приложениям MDI отображать дочерние окна в виде вкладок, которые выровнены по вертикали или горизонтально в клиентской области MDI. Группы окон табуляции разделены разделимы разделимы. Пользователь может изменить размер групп табуляции с помощью разбиения.
Пользователь может:
- Перетащите отдельные вкладки между группами.
- Перетащите отдельные вкладки в край окна, чтобы создать новые группы.
- Перемещение вкладок или создание новых групп с помощью контекстного меню.
- Приложение может сохранить текущий макет вкладок окон и список открытых документов.
При вызове этого метода с заданным bEnable
значением FALSE
params
игнорируется.
Даже если группы с вкладками MDI уже включены, можно снова вызвать этот метод, чтобы изменить параметры дочерних окон. Вызовите метод с bEnable
заданным значением TRUE
и измените члены объекта, указанного CMDITabInfo
параметром params
.
Дополнительные сведения об использовании групп с вкладками MDI см. в разделе MDI Tabbed Groups.
Пример
В следующем примере показано, как 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 Tabbed 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
для включения второго способа активации вкладок. Он эмулирует способ открытия дочерних окон MDI Windows.
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
. Вызов при EnableWindowsDialog
обработке WM_CREATE
сообщения.
Пример
В следующем примере показано, как 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 Tabbed Groups.
DWORD GetMDITabsContextMenuAllowedItems();
Возвращаемое значение
Побитовое сочетание "или" (|
) следующих флагов:
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
. pControlBar
Значение <FALSE
до этого вставляется.
Возвращаемое значение
TRUE
Если метод успешно регистрирует область, FALSE
если панель уже зарегистрирована в диспетчере закреплений.
Замечания
Используйте этот метод, чтобы сообщить диспетчеру закреплений о области, указанной в pControlBar
. Диспетчер закрепления выравнит эту область в соответствии с выравниванием и положением панели во внутреннем списке диспетчера док-станции.
CMDIFrameWndEx::IsFullScreen
Определяет, находится ли окно фрейма в полноэкранном режиме.
BOOL IsFullScreen() const;
Возвращаемое значение
TRUE
Значение FALSE.
Замечания
Вы можете задать полноэкранный режим, вызвав CMDIFrameWndEx::EnableFullScreenMode
метод.
CMDIFrameWndEx::IsMDITabbedGroup
Указывает, включена ли функция MDI Tabbed Groups.
BOOL IsMDITabbedGroup() const;
Возвращаемое значение
TRUE
Значение 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->LoadFrame (IDR_MAINFRAME);.
добавленияCWinAppEx::EnableLoadWindowPlacement
CWinAppEx::ReloadWindowPlacement
(FALSE);
(pMainFrame);
после вызова, чтобыLoadMDIState
отобразить основной кадр в позиции, которая была сохранена в реестре. - Переопределите
GetDocumentName
в производномCMDIChildWndEx
классе, если приложение отображает документы, которые не хранятся в виде файлов. Возвращаемая строка будет сохранена в реестре в качестве идентификатора документа. Базовая реализация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 . Флаг защищен, и этот параметр необходимо включить явным образом, установив m_bCanConvertControlBarToMDIChild
в конструкторе CMDIFrameWndEx
производного класса или переопределив 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
.
Установите этот флаг, FALSE
чтобы оптимизировать перерисовку дочерних элементов MDI. В этом случае платформа вызовет 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] Указатель на всплывающее меню.
Замечания
Переопределите этот метод, если вы хотите обработать уведомления из CMFCPopupMenu
объектов класса , принадлежащих окну фрейма MDI, когда эти объекты обрабатывают 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
В противном случае заполняет и pmf
члены pTarget
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
Вызывается платформой при CMFCPopupMenu
обработке WM_PAINT
сообщения.
virtual void OnDrawMenuLogo(
CDC*,
CMFCPopupMenu*,
const CRect&);
Замечания
Переопределите эту функцию, чтобы отобразить логотип во всплывающем меню, которое принадлежит строке меню, принадлежащей производной объекту CMDIFrameWndEx
. Реализация по умолчанию не выполняет никаких действий.
CMDIFrameWndEx::OnEraseMDIClientBackground
Вызывается платформой, когда окно кадров MDI обрабатывает WM_ERASEBKGND
сообщение.
virtual BOOL OnEraseMDIClientBackground(CDC*);
Возвращаемое значение
TRUE
Если приложение обрабатывает сообщение и удаляет фон.
Замечания
Переопределите эту функцию-член, если вы хотите обработать WM_ERASEBKGND
сообщение в производном CMDIFrameWndEx
классе.
CMDIFrameWndEx::OnMenuButtonToolHitTest
Вызывается платформой, когда CMFCToolBarButton
объект обрабатывает WM_NCHITTEST
сообщение.
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] Побитовая комбинация флагов ,|
которая указывает, какие действия разрешены для текущей вкладки:
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
, контекстное меню не будет отображаться. Эта функция создается мастером приложений MFC при включении функции "Группы с вкладками MDI".
Пример
В следующем примере показано, как 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
находятся, возвращается 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] nSensitivity
Если TRUE
параметр игнорируется.
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
отображения основного кадра в позиции, которая была сохранена в реестре. - Переопределите
GetDocumentName
в производномCMDIChildWndEx
классе, если приложение отображает документы, которые не хранятся в виде файлов. Возвращаемая строка будет сохранена в реестре в качестве идентификатора документа. Дополнительные сведения см. в разделе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