Поделиться через


Класс 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".

Иерархия наследования

CObject

CCmdTarget

CWnd

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 = 1

  • borderRequest = 2

  • borderSet = 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 Структура