Класс CFrameWnd обеспечивает функциональность интерфейса Windows одного документа (SDI) пересекаются или всплывающее окно вместе с членами для управления в окно.
Для создания полезных фрейм окна для вашего приложения, создать класс производный от CFrameWnd. Добавьте переменные-члены производного класса для хранения данных, характерных для приложения. Функции-члены реализовать обработчик сообщений и сообщение карта в производном классе, чтобы указать, что происходит, когда сообщения направляются в окно.
Перед вызовом метода Create или LoadFrame, необходимо создать объект окно в куче, с помощью оператора new C++. Перед вызовом Create, вы можете зарегистрироваться класс окна с глобальной функции AfxRegisterWndClass для задания значка и класса стилей для кадра.
Используйте функции-члена Create для передачи параметры создания фрейма в качестве непосредственных аргументы.
LoadFrame требуется меньшее число аргументов, чем создатьи вместо этого получает большую часть его значения по умолчанию из ресурсов, включая рамки заголовка, значок, таблицы сочетаний клавиш и меню. Чтобы быть доступной для 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 имеет факультативный помочь ID с LoadFrame , используемый для контекстной справки. Фрейма окна является главным оркестратор semimodal таких государств, как контекстная справка (SHIFT + F1) и режима предварительного просмотра.
CFrameWnd фрейма появится окно файл из диспетчера файлов перетаскивание на фрейме окна. Если расширение файла регистрации и связанные с приложением, в фрейме окна отвечает на динамических данных обмена (DDE) открытый запрос, которое происходит, когда пользователь открывает файл данных в менеджере файлов или при вызове функции ShellExecute Windows.
Если фрейм окна главное окно приложения (то есть, CWinThread::m_pMainWnd), когда пользователь закрывает приложение, в фрейме окна предлагает пользователю сохранить любых измененных документов (для Запуск и OnQueryEndSession).
Если окно фрейма главного окна приложения, в фрейме окна это контекст для запуска WinHelp. При закрытии окна кадра будет закрыт WINHELP.EXE, если он был запущен за помощью для этого приложения.
Не используйте оператор delete C++ для уничтожения фрейме окна. Вместо этого следует используйте CWnd::DestroyWindow . Осуществление CFrameWndPostNcDestroy объект будет удален C++ при уничтожении окна. Когда пользователь закрывает в фрейме окна, Запуск обработчика по умолчанию будет вызывать DestroyWindow.
Более подробную информацию о CFrameWnd, см. Фрейм окна темы в Руководстве Visual C++ программист.