Класс CFrameWnd
Реализует функции однодокументного интерфейса Windows (SDI) с наложенным или всплывающим фреймовым окном с элементами для управления окном.
Синтаксис
class CFrameWnd : public CWnd
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CFrameWnd::CFrameWnd |
Формирует объект CFrameWnd . |
Открытые методы
Имя | Описание |
---|---|
CFrameWnd::ActivateFrame |
Делает кадр видимым и доступным для пользователя. |
CFrameWnd::BeginModalState |
Задает модальное окно фрейма. |
CFrameWnd::Create |
Вызов для создания и инициализации окна фрейма Windows, связанного CFrameWnd с объектом. |
CFrameWnd::CreateView |
Создает представление в кадре, который не является производным.CView |
CFrameWnd::DockControlBar |
Закрепление панели управления. |
CFrameWnd::EnableDocking |
Позволяет закрепить панель управления. |
CFrameWnd::EndModalState |
Заканчивает модальное состояние окна кадра. Включает все окна, отключенные BeginModalState . |
CFrameWnd::FloatControlBar |
Плавает панель управления. |
CFrameWnd::GetActiveDocument |
Возвращает активный CDocument объект. |
CFrameWnd::GetActiveFrame |
Возвращает активный CFrameWnd объект. |
CFrameWnd::GetActiveView |
Возвращает активный CView объект. |
CFrameWnd::GetControlBar |
Извлекает панель управления. |
CFrameWnd::GetDockState |
Извлекает состояние док-станции окна кадра. |
CFrameWnd::GetMenuBarState |
Извлекает состояние отображения меню в текущем приложении MFC. |
CFrameWnd::GetMenuBarVisibility |
Указывает, является ли поведение меню по умолчанию в текущем приложении MFC скрытым или видимым. |
CFrameWnd::GetMessageBar |
Возвращает указатель на строку состояния, принадлежащую окну фрейма. |
CFrameWnd::GetMessageString |
Извлекает сообщение, соответствующее идентификатору команды. |
CFrameWnd::GetTitle |
Извлекает заголовок связанной панели управления. |
CFrameWnd::InitialUpdateFrame |
Вызывает функцию-член, OnInitialUpdate принадлежащую всем представлениям в окне кадра. |
CFrameWnd::InModalState |
Возвращает значение, указывающее, находится ли окно фрейма в модальном состоянии. |
CFrameWnd::IsTracking |
Определяет, перемещается ли в настоящее время полоса разделения. |
CFrameWnd::LoadAccelTable |
Вызов для загрузки таблицы акселератора. |
CFrameWnd::LoadBarState |
Вызов для восстановления параметров панели управления. |
CFrameWnd::LoadFrame |
Вызов динамического создания окна фрейма из сведений о ресурсах. |
CFrameWnd::NegotiateBorderSpace |
Согласовывает пространство границы в окне кадра. |
CFrameWnd::OnBarCheck |
Вызывается всякий раз, когда действие выполняется на указанной панели управления. |
CFrameWnd::OnContextHelp |
Обрабатывает справку SHIFT+F1 для элементов на месте. |
CFrameWnd::OnSetPreviewMode |
Задает основное окно фрейма приложения в режиме предварительного просмотра и выхода из него. |
CFrameWnd::OnUpdateControlBarMenu |
Вызывается платформой при обновлении связанного меню. |
CFrameWnd::RecalcLayout |
Переместит панели CFrameWnd управления объекта. |
CFrameWnd::SaveBarState |
Вызов для сохранения параметров панели управления. |
CFrameWnd::SetActivePreviewView |
Указывает указанное представление для активного представления для расширенной предварительной версии. |
CFrameWnd::SetActiveView |
Задает активный CView объект. |
CFrameWnd::SetDockState |
Вызов для закрепления окна фрейма в главном окне. |
CFrameWnd::SetMenuBarState |
Задает состояние отображения меню в текущем приложении MFC скрытым или отображаемым. |
CFrameWnd::SetMenuBarVisibility |
Задает поведение меню по умолчанию в текущем приложении MFC, которое должно быть скрытым или видимым. |
CFrameWnd::SetMessageText |
Задает текст стандартной строки состояния. |
CFrameWnd::SetProgressBarPosition |
Задает текущую позицию для панели выполнения Windows 7, отображаемой на панели задач. |
CFrameWnd::SetProgressBarRange |
Задает диапазон для индикатора хода выполнения Windows 7, отображаемый на панели задач. |
CFrameWnd::SetProgressBarState |
Задает тип и состояние индикатора хода выполнения, отображаемого на кнопке панели задач. |
CFrameWnd::SetTaskbarOverlayIcon |
Перегружен. Применяет наложение к кнопке панели задач, чтобы указать состояние приложения или уведомление пользователю. |
CFrameWnd::SetTitle |
Задает заголовок связанной панели управления. |
CFrameWnd::ShowControlBar |
Вызов для отображения панели управления. |
CFrameWnd::ShowOwnedWindows |
Отображает все окна, которые являются потомками CFrameWnd объекта. |
Защищенные методы
Имя | Описание |
---|---|
CFrameWnd::OnCreateClient |
Создает окно клиента для кадра. |
CFrameWnd::OnHideMenuBar |
Вызывается до скрытия меню в текущем приложении MFC. |
CFrameWnd::OnShowMenuBar |
Вызывается перед отображением меню в текущем приложении MFC. |
Открытые члены данных
Имя | Описание |
---|---|
CFrameWnd::m_bAutoMenuEnable |
Управляет автоматическим включением и отключением функций для элементов меню. |
CFrameWnd::rectDefault |
Передайте этот статический CRect параметр в качестве параметра при создании CFrameWnd объекта, чтобы разрешить Windows выбрать начальный размер и положение окна. |
Замечания
Чтобы создать полезное окно фрейма для приложения, наследуйте класс.CFrameWnd
Добавьте переменные-члены в производный класс для хранения данных, относящихся к приложению. Реализуйте в производном классе функции-члены обработчика сообщений и схему сообщений, чтобы указать, что происходит, когда сообщения направляются в окно.
Существует три способа создания окна фрейма:
Непосредственно создайте его с помощью
Create
.Непосредственно создайте его с помощью
LoadFrame
.Косвенно создайте его с помощью шаблона документа.
Перед вызовом или Create
LoadFrame
необходимо создать объект frame-window в куче с помощью оператора C++ new
. Перед вызовом Create
можно также зарегистрировать класс окна с глобальной AfxRegisterWndClass
функцией, чтобы задать стили значков и классов для кадра.
Используйте функцию-член для Create
передачи параметров создания кадра в качестве непосредственных аргументов.
LoadFrame
требует меньше аргументов, чем Create
и вместо этого извлекает большинство значений по умолчанию из ресурсов, включая подпись кадра, значок, таблицу акселератора и меню. Для доступа LoadFrame
ко всем этим ресурсам должен быть один и тот же идентификатор ресурса (например, IDR_MAINFRAME
).
CFrameWnd
Если объект содержит представления и документы, они создаются косвенно платформой, а не непосредственно программистом. Объект CDocTemplate
управляет созданием кадра, созданием содержащихся представлений и подключением представлений к соответствующему документу. Параметры конструктора CDocTemplate
указывают CRuntimeClass
три класса, участвующих (документ, кадр и представление). CRuntimeClass
Объект используется платформой для динамического создания новых кадров при указании пользователем (например, с помощью команды "Создать файл" или нескольких интерфейсов документов (MDI) "Создать".
Класс окна кадра, производный от CFrameWnd
него, должен быть объявлен таким DECLARE_DYNCREATE
образом, чтобы приведенный выше RUNTIME_CLASS
механизм работал правильно.
Содержит CFrameWnd
реализации по умолчанию для выполнения следующих функций главного окна в типичном приложении для Windows:
Окно
CFrameWnd
кадра отслеживает активное представление, которое не зависит от активного окна Windows или текущего фокуса ввода. При повторной активации кадра активное представление уведомляется путем вызоваCView::OnActivateView
.Командные сообщения и многие распространенные сообщения с уведомлением кадра, включая те, которые обрабатываются
OnSetFocus
функциямиOnHScroll
иOnVScroll
функциямиCWnd
, делегируютсяCFrameWnd
окном фрейма в текущее активное представление.Текущее активное представление (или текущее активное окно дочернего кадра MDI в случае кадра MDI) может определить подпись окна кадра. Эту функцию можно отключить, отключив
FWS_ADDTOTITLE
бит стиля окна кадра.CFrameWnd
Окно кадра управляет расположением панели управления, представлениями и другими дочерними окнами в клиентской области окна кадра. Окно фрейма также выполняет обновление панели инструментов и других кнопок панели управления бездействия. ОкноCFrameWnd
фрейма также содержит реализации команд по умолчанию для включения и отключения панели инструментов и строки состояния.Окно
CFrameWnd
кадра управляет главной строкой меню. При отображении всплывающего меню окно фрейма используетUPDATE_COMMAND_UI
механизм для определения того, какие элементы меню должны быть включены, отключены или проверены. Когда пользователь выбирает элемент меню, окно кадра обновляет строку состояния со строкой сообщения для этой команды.Окно
CFrameWnd
кадра имеет необязательную таблицу акселератора, которая автоматически преобразует ускорители клавиатуры.Окно
CFrameWnd
фрейма содержит необязательный набор идентификатора справки, который используется для справки сLoadFrame
учетом контекста. Окно кадра является основным оркестратором полумодальных состояний, таких как контекстно-конфиденциальная справка (SHIFT+F1) и режимы предварительного просмотра печати.CFrameWnd
Окно фрейма откроет файл, перетаскиваемый из диспетчера файлов и удаленный в окне фрейма. Если расширение файла зарегистрировано и связано с приложением, окно фрейма реагирует на запрос на динамическое обмен данными (DDE), который возникает при открытии пользователем файла данных в диспетчере файлов или приShellExecute
вызове функции Windows.Если окно фрейма является основным окном приложения (т
CWinThread::m_pMainWnd
. е. при закрытии приложения), окно фрейма предложит пользователю сохранить все измененные документы (дляOnClose
иOnQueryEndSession
).Если окно фрейма является основным окном приложения, окно фрейма — это контекст для запуска WinHelp. Закрытие окна фрейма завершится
WINHELP.EXE
, если оно было запущено для справки для этого приложения.
Не используйте оператор C++ delete
для уничтожения окна фрейма. Вместо этого используйте CWnd::DestroyWindow
. Реализация CFrameWnd
приведет к удалению PostNcDestroy
объекта C++ при уничтожении окна. Когда пользователь закрывает окно фрейма, обработчик по умолчанию OnClose
вызывается DestroyWindow
.
Дополнительные сведения см. в CFrameWnd
разделе "Фрейм Windows".
Иерархия наследования
CFrameWnd
Требования
Заголовок: afxwin.h
CFrameWnd::ActivateFrame
Вызовите эту функцию-член, чтобы активировать и восстановить окно фрейма, чтобы он был видимым и доступным для пользователя.
virtual void ActivateFrame(int nCmdShow = -1);
Параметры
nCmdShow
Указывает параметр для передачи CWnd::ShowWindow
в . По умолчанию кадр отображается и правильно восстанавливается.
Замечания
Эта функция-член обычно вызывается после события, отличного от пользовательского интерфейса, например DDE, OLE или другого события, которое может отображать окно фрейма или его содержимое пользователю.
Реализация по умолчанию активирует кадр и переносит его в начало Z-порядка, и при необходимости выполняет те же действия для главного окна фрейма приложения.
Переопределите эту функцию-член, чтобы изменить способ активации кадра. Например, можно принудительно развернуть дочерние окна MDI. Добавьте соответствующие функции, а затем вызовите версию базового класса явным nCmdShow
образом.
Пример
void CChildFrame::ActivateFrame(int nCmdShow)
{
// Create the child frame window maximized
nCmdShow = SW_MAXIMIZE;
CMDIChildWnd::ActivateFrame(nCmdShow);
}
CFrameWnd::BeginModalState
Данная функция-член вызывается для преобразования окна фрейма в модальное.
virtual void BeginModalState();
CFrameWnd::CFrameWnd
Создает объект, но не создает видимое окно фрейма CFrameWnd
.
CFrameWnd();
Замечания
Вызов Create
для создания видимого окна.
CFrameWnd::Create
Вызов для создания и инициализации окна фрейма Windows, связанного CFrameWnd
с объектом.
virtual BOOL Create(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle = WS_OVERLAPPEDWINDOW,
const RECT& rect = rectDefault,
CWnd* pParentWnd = NULL,
LPCTSTR lpszMenuName = NULL,
DWORD dwExStyle = 0,
CCreateContext* pContext = NULL);
Параметры
lpszClassName
Указывает на строку символов, завершающую значение NULL, которая называет класс Windows. Имя класса может быть любым именем, зарегистрированным в глобальной AfxRegisterWndClass
функции или RegisterClass
функции Windows. Если NULL
использует предопределенные атрибуты по умолчанию CFrameWnd
.
lpszWindowName
Указывает на строку символов, завершающую значение NULL, представляющую имя окна. Используется в качестве текста для строки заголовка.
dwStyle
Задает атрибуты стиля окна. FWS_ADDTOTITLE
Включите стиль, если вы хотите, чтобы строка заголовка автоматически отображала имя документа, представленного в окне.
rect
Указывает размер и положение окна. Значение rectDefault
позволяет Windows указать размер и положение нового окна.
pParentWnd
Указывает родительское окно этого окна кадра. Этот параметр должен быть NULL
для окон кадров верхнего уровня.
lpszMenuName
Определяет имя ресурса меню, который будет использоваться с окном. Используйте MAKEINTRESOURCE
, если в меню есть целый идентификатор вместо строки. Этот параметр может иметь значение NULL
.
dwExStyle
Задает атрибуты расширенного стиля окна.
pContext
Указывает указатель на структуру CCreateContext
. Этот параметр может иметь значение NULL
.
Возвращаемое значение
Ненулевое значение, если инициализация выполнена успешно; в противном случае — 0.
Замечания
CFrameWnd
Создайте объект на двух шагах. Сначала вызовите конструктор, который создает CFrameWnd
объект, а затем вызов Create
, который создает окно фрейма Windows и присоединяет его к объекту CFrameWnd
. Create
инициализирует имя класса окна и имя окна и регистрирует значения по умолчанию для его стиля, родительского и связанного меню.
Используйте LoadFrame
вместо Create
загрузки окна фрейма из ресурса вместо указания его аргументов.
CFrameWnd::CreateView
Вызов CreateView
для создания представления в кадре.
CWnd* CreateView(
CCreateContext* pContext,
UINT nID = AFX_IDW_PANE_FIRST);
Параметры
pContext
Указывает тип представления и документа.
nID
Идентификатор представления.
Возвращаемое значение
Указатель на объект в случае успешного CWnd
выполнения; в противном случае NULL
.
Замечания
Эта функция-член используется для создания представлений, которые не CView
являются производными в кадре. После вызова CreateView
необходимо вручную задать активное представление и установить его видимым. Эти задачи не выполняются CreateView
автоматически.
CFrameWnd::DockControlBar
Вызывает закрепление панели управления к окну фрейма.
void DockControlBar(
CControlBar* pBar,
UINT nDockBarID = 0,
LPCRECT lpRect = NULL);
Параметры
pBar
Указывает на панель управления, чтобы быть закрепленной.
nDockBarID
Определяет, какие стороны окна фрейма следует учитывать при закреплении. Это может быть 0 или одно или несколько следующих элементов:
AFX_IDW_DOCKBAR_TOP
Прикрепите к верхней части окна кадра.AFX_IDW_DOCKBAR_BOTTOM
Прикрепите к нижней части окна фрейма.AFX_IDW_DOCKBAR_LEFT
Закрепление в левой части окна фрейма.AFX_IDW_DOCKBAR_RIGHT
Закрепление в правой части окна фрейма.
Если значение 0, панель управления можно закрепить на любой стороне, включенной для закрепления в окне целевого кадра.
lpRect
Определяет координаты экрана, где панель управления будет закреплена в неклиентной области окна целевого кадра.
Замечания
Панель управления будет закреплена с одной из сторон окна кадра, указанного в вызовах обоих CControlBar::EnableDocking
и CFrameWnd::EnableDocking
. Выбранная сторона определяется nDockBarID
.
CFrameWnd::EnableDocking
Вызовите эту функцию, чтобы включить закрепленные панели управления в окне кадра.
void EnableDocking(DWORD dwDockStyle);
Параметры
dwDockStyle
Указывает, какие стороны окна фрейма могут служить закреплением сайтов для панели управления. Это может быть одно или несколько следующих элементов:
CBRS_ALIGN_TOP
Разрешает закрепление в верхней части клиентской области.CBRS_ALIGN_BOTTOM
Разрешает закрепление в нижней части клиентской области.CBRS_ALIGN_LEFT
Разрешает закрепление в левой части клиентской области.CBRS_ALIGN_RIGHT
Разрешает закрепление в правой части клиентской области.CBRS_ALIGN_ANY
Разрешает закрепление на любой стороне клиентской области.
Замечания
По умолчанию панели управления будут закреплены на стороне окна кадра в следующем порядке: сверху, внизу, слева, справа.
Пример
Пример см. в примере CToolBar::Create
.
CFrameWnd::EndModalState
Данная функция-член вызывается для изменения состояния окна с модального на немодальное.
virtual void EndModalState();
Замечания
EndModalState
включает все окна, отключенные BeginModalState
.
CFrameWnd::FloatControlBar
Вызовите эту функцию, чтобы панель управления не была закреплена в окне кадра.
void FloatControlBar(
CControlBar* pBar,
CPoint point,
DWORD dwStyle = CBRS_ALIGN_TOP);
Параметры
pBar
Указывает на панель управления, на которые будет плавать.
point
Расположение в координатах экрана, где будет размещен верхний левый угол панели управления.
dwStyle
Указывает, следует ли выровнять панель управления по горизонтали или по вертикали в новом окне фрейма. Это может быть любой из следующих вариантов:
CBRS_ALIGN_TOP
Ориентирует панель управления по вертикали.CBRS_ALIGN_BOTTOM
Ориентирует панель управления по вертикали.CBRS_ALIGN_LEFT
Ориентирует панель управления по горизонтали.CBRS_ALIGN_RIGHT
Ориентирует панель управления по горизонтали.
Если стили передаются с указанием горизонтальной и вертикальной ориентации, панель инструментов будет ориентирована горизонтально.
Замечания
Как правило, это делается при запуске приложения при восстановлении параметров из предыдущего выполнения.
Эта функция вызывается платформой, когда пользователь вызывает операцию удаления, освобождая левую кнопку мыши при перетаскивании панели управления по расположению, недоступному для закрепления.
CFrameWnd::GetActiveDocument
Вызовите эту функцию-член, чтобы получить указатель на текущий CDocument
подключенный к текущему активному представлению.
virtual CDocument* GetActiveDocument();
Возвращаемое значение
Указатель на текущий CDocument
. Если текущий документ отсутствует, возвращается NULL
.
CFrameWnd::GetActiveFrame
Вызовите эту функцию-член, чтобы получить указатель на активное дочернее окно интерфейса документа (MDI) окна кадра MDI.
virtual CFrameWnd* GetActiveFrame();
Возвращаемое значение
Указатель на активное дочернее окно MDI. Если приложение является приложением SDI или окно фреймов MDI не имеет активного документа, возвращается неявный this
указатель.
Замечания
Если нет активного дочернего элемента MDI или приложение является одним интерфейсом документов (SDI), возвращается неявный this
указатель.
CFrameWnd::GetActiveView
Вызовите эту функцию-член, чтобы получить указатель на активное представление (если таковое) подключено к окну кадра ( CFrameWnd
).
CView* GetActiveView() const;
Возвращаемое значение
Указатель на текущий CView
. Если текущее представление отсутствует, возвращается NULL
.
Замечания
Эта функция возвращается NULL
при вызове главного окна фрейма MDI ( CMDIFrameWnd
). В приложении MDI окно главного кадра MDI не связано с ним. Вместо этого каждое отдельное дочернее окно ( CMDIChildWnd
) имеет одно или несколько связанных представлений. Активное представление в приложении MDI можно получить, сначала найдя активное дочернее окно MDI, а затем найдите активное представление для этого дочернего окна. Активное дочернее окно MDI можно найти, вызвав функцию MDIGetActive
или GetActiveFrame
как показано в следующем примере:
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->GetMainWnd();
// Get the active MDI child window.
CMDIChildWnd *pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();
// or CMDIChildWnd *pChild = pFrame->MDIGetActive();
// Get the active view attached to the active MDI child window.
CMyView *pView = (CMyView*)pChild->GetActiveView();
CFrameWnd::GetControlBar
Вызов для GetControlBar
получения доступа к панели управления, связанной с идентификатором.
CControlBar* GetControlBar(UINT nID);
Параметры
nID
Идентификатор панели управления.
Возвращаемое значение
Указатель на панель управления, связанную с идентификатором.
Замечания
Параметр nID
ссылается на уникальный идентификатор, переданный Create
методу панели управления. Дополнительные сведения о панели управления см. в разделе " Панели управления".
GetControlBar
возвращает панель управления, даже если она плавает и поэтому не является дочерним окном кадра.
CFrameWnd::GetDockState
Вызовите эту функцию-член, чтобы сохранить сведения о состоянии панели управления окна кадра в объекте CDockState
.
void GetDockState(CDockState& state) const;
Параметры
state
Содержит текущее состояние панели управления окна кадра по возвращении.
Замечания
Затем можно написать содержимое CDockState
хранилища с помощью CDockState::SaveState
или Serialize
. Если позже вы хотите восстановить панели управления до предыдущего состояния, загрузите состояние с CDockState::LoadState
или Serialize
вызовите SetDockState
применить предыдущее состояние к полосам управления окна кадра.
CFrameWnd::GetMenuBarState
Извлекает состояние отображения меню в текущем приложении MFC.
virtual DWORD GetMenuBarState();
Возвращаемое значение
Возвращаемое значение может иметь следующие значения:
AFX_MBS_VISIBLE
(0x01) — отображается меню.AFX_MBS_HIDDEN
(0x02) — меню скрыто.
Замечания
Если возникает ошибка среды выполнения, этот метод утверждается в режиме отладки и вызывает исключение, производное от CException
класса.
CFrameWnd::GetMenuBarVisibility
Указывает, является ли состояние меню по умолчанию в текущем приложении MFC скрытым или видимым.
virtual DWORD CFrameWnd::GetMenuBarVisibility();
Возвращаемое значение
Этот метод возвращает одно из следующих значений:
AFX_MBV_KEEPVISIBLE
(0x01) — меню отображается в любое время, и по умолчанию фокус не имеет.AFX_MBV_DISPLAYONFOCUS
(0x02) — меню скрыто по умолчанию. Если меню скрыто, нажмите клавишу ALT, чтобы отобразить меню и присвойте ему фокус. Если отображается меню, нажмите клавиши ALT или ESC, чтобы скрыть ее.AFX_MBV_ DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10
(0x06) — меню скрыто по умолчанию. Если меню скрыто, нажмите клавишу F10, чтобы отобразить меню и присвойте ему фокус. Если отображается меню, нажмите клавишу F10, чтобы переключить фокус на меню или выключить его. Меню отображается, пока не нажимаете клавиши ALT или ESC, чтобы скрыть ее.
Замечания
Если возникает ошибка среды выполнения, этот метод утверждается в режиме отладки и вызывает исключение, производное от CException
класса.
CFrameWnd::GetMessageBar
Вызовите эту функцию-член, чтобы получить указатель на строку состояния.
virtual CWnd* GetMessageBar();
Возвращаемое значение
Указатель на окно строки состояния.
CFrameWnd::GetMessageString
Переопределите эту функцию, чтобы предоставить пользовательские строки для идентификаторов команд.
virtual void GetMessageString(
UINT nID,
CString& rMessage) const;
Параметры
nID
Идентификатор ресурса требуемого сообщения.
rMessage
CString
объект, в который нужно поместить сообщение.
Замечания
Реализация по умолчанию просто загружает строку, указанную nID
из файла ресурсов. Эта функция вызывается платформой, когда строка сообщения в строке состояния нуждается в обновлении.
CFrameWnd::GetTitle
Извлекает заголовок объекта окна.
CString GetTitle() const;
Возвращаемое значение
Объект CString
, содержащий текущее название объекта окна.
CFrameWnd::InitialUpdateFrame
Вызов IntitialUpdateFrame
после создания нового кадра с Create
помощью .
void InitialUpdateFrame(
CDocument* pDoc,
BOOL bMakeVisible);
Параметры
pDoc
Указывает на документ, к которому связано окно кадра. Может иметь значение NULL
.
bMakeVisible
Если TRUE
, указывает, что кадр должен стать видимым и активным. Если FALSE
потомки не отображаются.
Замечания
Это приводит ко всем представлениям в этом окне кадра для получения их OnInitialUpdate
вызовов.
Кроме того, если ранее не было активного представления, основное представление окна кадра активируется. Основное представление — это представление с дочерним идентификатором AFX_IDW_PANE_FIRST
. Наконец, окно кадра отображается, если bMakeVisible
ненулевое значение. Если bMakeVisible
значение равно 0, текущий фокус и видимое состояние окна кадра останется неизменным. Не обязательно вызывать эту функцию при использовании реализации платформы "Создать файл" и "Открыть файл".
CFrameWnd::InModalState
Вызовите эту функцию-член, чтобы проверить, является ли окно фрейма модальным или немодальным.
BOOL InModalState() const;
Возвращаемое значение
Ненулевое значение, если да; в противном случае — 0.
CFrameWnd::IsTracking
Вызовите эту функцию-член, чтобы определить, перемещается ли панель разделения в окне.
BOOL IsTracking() const;
Возвращаемое значение
Ненулевое значение, если выполняется операция разделения; в противном случае — 0.
CFrameWnd::LoadAccelTable
Вызов для загрузки указанной таблицы акселераторов.
BOOL LoadAccelTable(LPCTSTR lpszResourceName);
Параметры
lpszResourceName
Определяет имя ресурса акселератора. Используйте, MAKEINTRESOURCE
если ресурс идентифицируется с идентификатором целочисленного числа.
Возвращаемое значение
Ненулевое значение, если таблица акселератора успешно загружена; в противном случае — 0.
Замечания
Одновременно можно загрузить только одну таблицу.
Таблицы акселератора, загруженные из ресурсов, автоматически освобождаются при завершении работы приложения.
При вызове LoadFrame
окна кадра платформа загружает таблицу акселератора вместе с ресурсами меню и значка, а последующий вызов этой функции-члена не требуется.
CFrameWnd::LoadBarState
Вызовите эту функцию, чтобы восстановить параметры каждой панели управления, принадлежащей окну кадра.
void LoadBarState(LPCTSTR lpszProfileName);
Параметры
lpszProfileName
Имя раздела в файле инициализации (INI) или раздел в реестре Windows, где хранятся сведения о состоянии.
Замечания
Восстановленная информация включает видимость, горизонтальную или вертикальную ориентацию, состояние закрепления и положение панели управления.
Перед вызовом LoadBarState
параметры, которые необходимо восстановить, необходимо записать в реестр. Запись сведений в реестр путем вызова CWinApp::SetRegistryKey
. Запись сведений в INI-файл путем вызова SaveBarState
.
CFrameWnd::LoadFrame
Вызов динамического создания окна фрейма из сведений о ресурсах.
virtual BOOL LoadFrame(
UINT nIDResource,
DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
CWnd* pParentWnd = NULL,
CCreateContext* pContext = NULL);
Параметры
nIDResource
Идентификатор общих ресурсов, связанных с окном фрейма.
dwDefaultStyle
Стиль кадра. FWS_ADDTOTITLE
Включите стиль, если вы хотите, чтобы строка заголовка автоматически отображала имя документа, представленного в окне.
pParentWnd
Указатель на родительский элемент кадра.
pContext
Указатель на структуру CCreateContext
. Этот параметр может иметь значение NULL
.
Замечания
CFrameWnd
Создайте объект на двух шагах. Сначала вызовите конструктор, который создает CFrameWnd
объект, а затем вызов LoadFrame
, который загружает окно фрейма Windows и связанные ресурсы и присоединяет окно фрейма к объекту CFrameWnd
. Параметр nIDResource
задает меню, таблицу акселератора, значок и строковый ресурс заголовка окна кадра.
Create
Используйте функцию-член, а не LoadFrame
если вы хотите указать все параметры создания окна кадра.
Платформа вызывается LoadFrame
при создании окна фрейма с помощью объекта шаблона документа.
Платформа использует pContext
аргумент для указания объектов, которые должны быть подключены к окну кадра, включая все содержащиеся объекты представления. Аргумент можно задать при вызове pContext
NULL
LoadFrame
.
CFrameWnd::m_bAutoMenuEnable
Если этот элемент данных включен (по умолчанию), элементы меню, которые не имеют ON_UPDATE_COMMAND_UI
или ON_COMMAND
обработчики, будут автоматически отключены, когда пользователь вытягивает меню.
BOOL m_bAutoMenuEnable;
Замечания
Элементы меню с обработчиком ON_COMMAND
, но обработчик не ON_UPDATE_COMMAND_UI
будет включен автоматически.
Если этот элемент данных задан, элементы меню автоматически включаются так же, как включены кнопки панели инструментов.
Примечание.
m_bAutoMenuEnable
не влияет на элементы меню верхнего уровня.
Этот элемент данных упрощает реализацию необязательных команд на основе текущего выбора и сокращает необходимость записи ON_UPDATE_COMMAND_UI
обработчиков для включения и отключения элементов меню.
Пример
// CMainFrame is application-defined object of type CFrameWnd
CMainFrame::CMainFrame()
: m_hDrawMenu(NULL), m_hDrawAccel(NULL), m_bCheck(false), m_nWindowTimer(0), m_nCallbackTimer(0)
{
// Set to FALSE so no ON_UPDATE_COMMAND_UI
// or ON_COMMAND handlers are needed, and
// CMenu::EnableMenuItem() will work as expected.
m_bAutoMenuEnable = FALSE;
}
CFrameWnd::NegotiateBorderSpace
Вызовите эту функцию-член для согласования пространства границы в окне кадра во время активации OLE inplace.
virtual BOOL NegotiateBorderSpace(
UINT nBorderCmd,
LPRECT lpRectBorder);
Параметры
nBorderCmd
Содержит одно из следующих значений из enum BorderCmd
:
borderGet
= 1borderRequest
= 2borderSet
= 3
lpRectBorder
Указатель на RECT
структуру или CRect
объект, указывающий координаты границы.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Эта функция-член представляет собой CFrameWnd
реализацию согласования пространства границ OLE.
CFrameWnd::OnBarCheck
Вызывается всякий раз, когда действие выполняется на указанной панели управления.
afx_msg BOOL OnBarCheck(UINT nID);
Параметры
nID
Идентификатор отображаемой панели управления.
Возвращаемое значение
Ненулевое значение, если существует панель управления; в противном случае — 0.
CFrameWnd::OnContextHelp
Обрабатывает справку SHIFT+F1 для элементов на месте.
afx_msg void OnContextHelp();
Замечания
Чтобы включить справку с учетом контекста, необходимо добавить
ON_COMMAND(ID_CONTEXT_HELP, &CMainFrame::OnContextHelp)
оператор в CFrameWnd
карту сообщений класса, а также добавление записи в таблицу акселератора, обычно SHIFT+F1, чтобы включить эту функцию-член.
Если приложение является контейнером OLE, OnContextHelp
помещает все элементы, содержащиеся в объекте окна кадра, в режим справки. Курсор изменяется на стрелку и вопросительный знак, а затем пользователь может переместить указатель мыши и нажать левую кнопку мыши, чтобы выбрать диалоговое окно, окно, меню или кнопку команды. Эта функция-член вызывает функцию WinHelp
Windows с контекстом справки объекта под курсором.
CFrameWnd::OnCreateClient
Вызывается платформой во время выполнения OnCreate
.
virtual BOOL OnCreateClient(
LPCREATESTRUCT lpcs,
CCreateContext* pContext);
Параметры
lpcs
Указатель на структуру Windows CREATESTRUCT
.
pContext
Указатель на структуру CCreateContext
.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Никогда не вызывайте эту функцию.
Реализация этой функции по умолчанию создает CView
объект из сведений, предоставленных в pContext
, если это возможно.
Переопределите эту функцию, чтобы переопределить значения, CCreateContext
переданные в объекте, или изменить способ создания элементов управления в главной клиентской области окна кадра. Элементы CCreateContext
, которые можно переопределить, описаны в CCreateContext
классе.
Примечание.
Не заменяйте значения, переданные CREATESTRUCT
в структуре. Они предназначены только для информационного использования. Если вы хотите переопределить прямоугольник начального окна, например переопределите CWnd
функцию-член PreCreateWindow
.
CFrameWnd::OnHideMenuBar
Эта функция вызывается, когда система будет скрывать строку меню в текущем приложении MFC.
virtual void OnHideMenuBar();
Замечания
Этот обработчик событий позволяет приложению выполнять пользовательские действия, когда система будет скрывать меню. Невозможно предотвратить скрытие меню, но можно, например, вызвать другие методы, чтобы получить стиль меню или состояние.
CFrameWnd::OnSetPreviewMode
Вызов этой функции-члена переключает окно главного фрейма приложения в режим предварительного просмотра и из него.
virtual void OnSetPreviewMode(
BOOL bPreview,
CPrintPreviewState* pState);
Параметры
bPreview
Указывает, следует ли размещать приложение в режиме предварительного просмотра печати. Установите для TRUE
размещения в предварительной версии FALSE
, чтобы отменить режим предварительного просмотра.
pState
Указатель на структуру CPrintPreviewState
.
Замечания
Реализация по умолчанию отключает все стандартные панели инструментов и скрывает главное меню и главное окно клиента. Это превращает окна кадров MDI во временные окна кадров SDI.
Переопределите эту функцию-член, чтобы настроить скрытие и отображение полос управления и других частей окна кадра во время предварительного просмотра печати. Вызовите реализацию базового класса из переопределенной версии.
CFrameWnd::OnShowMenuBar
Эта функция вызывается, когда система будет отображать строку меню в текущем приложении MFC.
virtual void OnShowMenuBar();
Замечания
Этот обработчик событий позволяет приложению выполнять пользовательские действия при отображении меню. Не удается запретить отображение меню, но можно, например, вызвать другие методы, чтобы получить стиль меню или состояние.
CFrameWnd::OnUpdateControlBarMenu
Вызывается платформой при обновлении связанного меню.
afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
Параметры
pCmdUI
Указатель на CCmdUI
объект, представляющий меню, которое создало команду обновления. Обработчик обновления вызывает Enable
функцию-член CCmdUI
объекта, pCmdUI
чтобы обновить пользовательский интерфейс.
CFrameWnd::RecalcLayout
Вызывается платформой, когда стандартные панели управления переключаются или отключаются, а также при изменении размера окна фрейма.
virtual void RecalcLayout(BOOL bNotify = TRUE);
Параметры
bNotify
Определяет, получает ли активный элемент в окне фрейма уведомление об изменении макета. Значение , если TRUE
элемент уведомлен; в противном случае FALSE
.
Замечания
Реализация этой функции-члена по умолчанию вызывает CWnd
функцию-член RepositionBars
, чтобы изменить положение всех панели управления в кадре, а также в главном окне клиента (обычно или CView
MDICLIENT
).
Переопределите эту функцию-член, чтобы управлять внешним видом и поведением панели управления после изменения макета окна кадра. Например, вызовите его при включении или отключении панели управления или добавлении другой панели управления.
CFrameWnd::rectDefault
Передайте этот статический CRect
параметр в качестве параметра при создании окна, чтобы разрешить Windows выбрать начальный размер и положение окна.
static AFX_DATA const CRect rectDefault;
CFrameWnd::SaveBarState
Вызовите эту функцию для хранения сведений о каждой панели управления, принадлежащей окну фрейма.
void SaveBarState(LPCTSTR lpszProfileName) const;
Параметры
lpszProfileName
Имя раздела в файле инициализации или раздел в реестре Windows, где хранятся сведения о состоянии.
Замечания
Эти сведения можно считывать из файла инициализации с помощью LoadBarState
. Хранящиеся сведения включают видимость, горизонтальную или вертикальную ориентацию, состояние закрепления и положение панели управления.
CFrameWnd::SetActivePreviewView
Указывает указанное представление для активного представления для расширенной предварительной версии.
void SetActivePreviewView(CView* pViewNew);
Параметры
pViewNew
Указатель на представление для активации.
Замечания
CFrameWnd::SetActiveView
Вызовите эту функцию-член, чтобы задать активное представление.
void SetActiveView(
CView* pViewNew,
BOOL bNotify = TRUE);
Параметры
pViewNew
Указывает указатель на объект или NULL
для активного CView
представления.
bNotify
Указывает, должно ли представление получать уведомления об активации. OnActivateView
Если TRUE
вызывается новое представление; если FALSE
это не так.
Замечания
Платформа автоматически вызывает эту функцию, так как пользователь изменяет фокус на представление в окне кадра. Вы можете явно вызвать SetActiveView
изменение фокуса на указанное представление.
CFrameWnd::SetDockState
Вызовите эту функцию-член, чтобы применить сведения о состоянии, хранящиеся в объекте CDockState
, на панели управления окна кадра.
void SetDockState(const CDockState& state);
Параметры
state
Примените сохраненное состояние к полосам управления окна кадров.
Замечания
Чтобы восстановить предыдущее состояние панели управления, можно загрузить сохраненное состояние с CDockState::LoadState
помощью или Serialize
, затем применить SetDockState
его к полосам управления окна кадра. Предыдущее состояние хранится в объекте CDockState
с GetDockState
CFrameWnd::SetMenuBarState
Задает состояние отображения меню в текущем приложении MFC скрытым или отображаемым.
virtual BOOL SetMenuBarState(DWORD nState);
Параметры
nState
[in] Указывает, следует ли отображать или скрывать меню. Параметр nState
может иметь следующие значения:
AFX_MBS_VISIBLE
(0x01) — отображает меню, если оно скрыто, но не влияет, если оно отображается.AFX_MBS_HIDDEN
(0x02) — скрывает меню, если оно видимо, но не оказывает влияния, если оно скрыто.
Возвращаемое значение
TRUE
Значение , если этот метод успешно изменяет состояние меню; FALSE
в противном случае .
Замечания
Если возникает ошибка среды выполнения, этот метод утверждается в режиме отладки и вызывает исключение, производное от CException
класса.
CFrameWnd::SetMenuBarVisibility
Задает поведение меню по умолчанию в текущем приложении MFC, которое должно быть скрытым или видимым.
virtual void SetMenuBarVisibility(DWORD nStyle);
Параметры
nStyle
[in] Указывает, является ли меню скрытым по умолчанию или видимым и фокусом. Параметр nStyle
может иметь следующие значения:
AFX_MBV_KEEPVISIBLE
(0x01) — меню отображается в любое время, и по умолчанию фокус не имеет.AFX_MBV_DISPLAYONFOCUS
(0x02) — меню скрыто по умолчанию. Если меню скрыто, нажмите клавишу ALT, чтобы отобразить меню и присвойте ему фокус. Если отображается меню, нажмите клавиши ALT или ESC, чтобы скрыть меню.AFX_MBV_DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10
(0x06) — меню скрыто по умолчанию. Если меню скрыто, нажмите клавишу F10, чтобы отобразить меню и присвойте ему фокус. Если отображается меню, нажмите клавишу F10, чтобы переключить фокус на меню или выключить его. Меню отображается, пока не нажимаете клавиши ALT или ESC, чтобы скрыть ее.
Замечания
Если значение nStyle
параметра недопустимо, этот метод утверждается в режиме отладки и вызывается CInvalidArgException
в режиме выпуска. В случае других ошибок среды выполнения этот метод утверждается в режиме отладки и вызывает исключение, полученное из CException
класса.
Этот метод влияет на состояние меню в приложениях, написанных для Windows Vista и более поздних версий.
CFrameWnd::SetMessageText
Вызовите эту функцию, чтобы поместить строку в панель строки состояния с идентификатором 0.
void SetMessageText(LPCTSTR lpszText);
void SetMessageText(UINT nID);
Параметры
lpszText
Указывает на строку, которая будет помещена в строку состояния.
nID
Строковый идентификатор ресурса строки, которая будет помещена в строку состояния.
Замечания
Обычно это самая левая и самая длинная область строки состояния.
CFrameWnd::SetProgressBarPosition
Задает текущую позицию для панели хода выполнения Windows 7, отображаемой на панели задач.
void SetProgressBarPosition(int nProgressPos);
Параметры
nProgressPos
Указывает позицию, заданную. Он должен находиться в диапазоне, заданном по SetProgressBarRange
.
Замечания
CFrameWnd::SetProgressBarRange
Задает диапазон для панели выполнения Windows 7, отображаемой на панели задач.
void SetProgressBarRange(
int nRangeMin,
int nRangeMax);
Параметры
nRangeMin
Минимальное значение.
nRangeMax
Максимальное значение.
Замечания
CFrameWnd::SetProgressBarState
Задает тип и состояние индикатора хода выполнения, отображаемого на кнопке панели задач.
void SetProgressBarState(TBPFLAG tbpFlags);
Параметры
tbpFlags
Флаги, управляющие текущим состоянием кнопки хода выполнения. Укажите только один из следующих флагов, так как все состояния являются взаимоисключающими: TBPF_NOPROGRESS
, TBPF_INDETERMINATE
, TBPF_NORMAL
, TBPF_ERROR
. TBPF_PAUSED
Замечания
CFrameWnd::SetTaskbarOverlayIcon
Перегружен. Применяет наложение к кнопке панели задач, чтобы указать состояние приложения или уведомить пользователя.
BOOL SetTaskbarOverlayIcon(
UINT nIDResource,
LPCTSTR lpcszDescr);
BOOL SetTaskbarOverlayIcon(
HICON hIcon,
LPCTSTR lpcszDescr);
Параметры
nIDResource
Указывает идентификатор ресурса значка, который будет использоваться в качестве наложения. Дополнительные сведения см. в описании hIcon
.
lpcszDescr
Указатель на строку, которая предоставляет замещающую текстовую версию информации, передаваемой наложением, в целях специальных возможностей.
hIcon
Дескриптор значка, используемый в качестве наложения. Это должен быть небольшой значок, измеряющий 16x16 пикселей в 96 точках на дюйм (dpi). Если к кнопке панели задач уже применяется значок наложения, замените существующее наложение. Это значение может быть равно NULL
. NULL
Способ обработки значения зависит от того, представляет ли кнопка панели задач одну окно или группу окон. Это ответственность за освобождение hIcon
вызывающего приложения, если оно больше не требуется.
Возвращаемое значение
TRUE
в случае успешного выполнения; FALSE
Значение , если версия ОС меньше Windows 7 или возникает ошибка при установке значка.
Замечания
CFrameWnd::SetTitle
Задает заголовок объекта окна.
void SetTitle(LPCTSTR lpszTitle);
Параметры
lpszTitle
Указатель на символьную строку, содержащую заголовок объекта окна.
CFrameWnd::ShowControlBar
Вызовите эту функцию-член, чтобы отобразить или скрыть панель управления.
void ShowControlBar(
CControlBar* pBar,
BOOL bShow,
BOOL bDelay);
Параметры
pBar
Указатель на панель управления для отображения или скрытия.
bShow
Если TRUE
, указывает, что панель управления должна отображаться. Если FALSE
, указывает, что панель управления должна быть скрыта.
bDelay
Если TRUE
, задержка, показывающая панель управления. Если FALSE
отображается панель управления немедленно.
CFrameWnd::ShowOwnedWindows
Вызовите эту функцию-член, чтобы отобразить все окна, которые являются потомками CFrameWnd
объекта.
void ShowOwnedWindows(BOOL bShow);
Параметры
bShow
Указывает, должны ли отображаться или скрытые окна.
См. также
CWnd
Класс
Диаграмма иерархии
CWnd
Класс
CMDIFrameWnd
Класс
CMDIChildWnd
Класс
CView
Класс
CDocTemplate
Класс
CRuntimeClass
Структура