Как использовать класс CFormView однодокументный интерфейс (SDI) и несколько приложений интерфейса (MDI) документа

Переводы статьи Переводы статьи
Код статьи: 98598 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Примечание Microsoft Visual C++.NET (2002) поддерживает управляемый код модель, предоставляемых платформой Microsoft.NET Framework и неуправляемый машинный код Модель кода Microsoft Windows. В данной статье применима только к неуправляемый код Visual C++.

Примечание Microsoft Visual C++ 2005 поддерживает управляемый код модель, предоставляемых платформой Microsoft.NET Framework и неуправляемый машинный код Модель кода Microsoft Windows.

Аннотация

Класс CFormView предоставляет удобный способ размещения элементы управления в представление, которое основано на шаблон диалогового окна. Общие Процедура использования CFormView описана в документации для класса проиллюстрированы в образце VIEWEX и CHKBOOK образцы приложений, поставляемые с Microsoft Foundation Classes (MFC) версии 2.x и выше. Тем не менее эти приложения не отражают исходный размер фрейма окна, чтобы сделать быть таким же, как исходный размер формы.

Следующий раздел Перечень шагов, необходимых для поддержки создания однодокументный интерфейс (SDI) или несколько приложений интерфейса (MDI) документа, в зависимости от CFormView, изменения размера окно начальные данные по форме, изменив стиль рамки и При закрытии документа MDI, с помощью кнопки в форме.

Дополнительная информация

Следующие шаги описывают создание MFC AppWizard приложения, использующего CFormView представлением по умолчанию:
  1. Создание SDI или MDI с помощью AppWizard приложения. Это добавляет шаблон диалогового окна с правильными стилями, задайте для файл ресурсов в проект.

    Visual Studio 6.0:

    На шаге 6 AppWizard выберите класс представления. В Базовый класс поле со списком, Выбор CFormView Чтобы указать CFormView в качестве базового класса.

    Visual Studio.NET или Visual Studio 2005:

    Выберите на шаге 1 AppWizard Созданные классы. В Базовый класс поле со списком, Выбор CFormView Чтобы указать CFormView в качестве базового класса.
  2. Переопределить функцию-член OnUpdate() и вызова UpdateData(), как описано в документации CFormView для обновления элемента переменные с использованием текущих данных документа и выполняют обмен данных (DDX).

    ПРИМЕЧАНИЕ: UpdateData не является виртуальным, и гарантирует вызов базового класса что производного класса DoDataExchange вызывается через стандартный полиморфизма. Состояния документации CFormView для вызова, переопределяет UpdateData.
  3. Если вы хотите установить исходный размер представления формы Переопределите функцию OnInitialUpdate(). Предоставляет дополнительный текст, приведенный ниже сведения об этом шаге немного отличается в SDI или MDI приложения.

Изменение размера рамки CFormView SDI Main

Чтобы изменить размер фрейма главного приложения SDI (т.е. использует в качестве своего представления класса CFormView) чтобы быть соответствующий размер формы, разработанные в App Studio Переопределите функцию OnInitialUpdate() в своем классе производные от CFormView, следующим образом:
      void CMyFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         GetParentFrame()->RecalcLayout();
         ResizeParentToFit(); // default argument is TRUE
      }
				
Функция ResizeParentToFit() не мешает из формы Изменение размера при изменении размера фрейма главного приложения (полосы прокрутки автоматически добавляются в случае необходимости). Чтобы изменить стиль фрейм окна, которая является родительской формы представления, можно переопределить Функция PreCreateWindow() в классе CMainFrame, создаваемые AppWizard. Для Чтобы удалить стиль WS_THICKFRAME и запретить пользователю изменять пример размер окна, объявлять PreCreateWindow() в MAINFRM.H и добавить Следующий код для MAINFRM.CPP:
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
      {
         cs.style &= ~WS_THICKFRAME;
         return CFrameWnd::PreCreateWindow(cs);
      }
				

Изменение размера рамки дочерних MDI вокруг CFormView

Аналогичный процесс изменения размера рамки дочерних MDI Чтобы при изменении размера фрейма главного приложения SDI, как описано выше. Тем не менее вызов RecalcLayout() не является обязательным.

Для изменения изменить размер рамки дочерних MDI вокруг представления формы, Функция OnInitialUpdate() в своем классе, производных от CFormView следующим образом:
      void CMDIFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         ResizeParentToFit(); // Default argument is TRUE.
      }
				
Если приложение переопределяет аргумент по умолчанию Функция ResizeParentToFit(), по существу же последствия возникают как Приложения SDI, как описано выше. Кроме того дочернее окно может быть слишком большой, включающего основного фрейма MDI или всего экрана.

Для Изменение стиля дочернего фрейма MDI (например, чтобы удалить WS_THICKFRAME стиль так, чтобы пользователь не может изменить размер окна), производные класс дочернего окна интерфейса MDI и переопределения PreCreateWindow функции демонстрируется в приведенном выше примере SDI.

Закрытие MDI-формы с помощью кнопки

Для создания добавить кнопку на форму, которая закрывает документ обработчик сообщений для сообщения BN_CLICKED CFormView class. Убедитесь, что кнопки в CFormView не имеют по умолчанию IDOK или IDCANCEL идентификаторы. Если это так, затем неверные записи в схеме сообщений и будет создан неправильный функции кнопок.

Один раз обработчик сообщений находится в месте, можно имитировать команда закрытия файла меню со следующим кодом:
      void CMyForm::OnClickedButton1()
      {
         PostMessage(WM_COMMAND, ID_FILE_CLOSE);
      }
				
Этот метод, чтобы закрыть форму, предлагает пользователю сохранить файл, если Возвращает значение TRUE, функция-член IsModified() связанных с документом.

Свойства

Код статьи: 98598 - Последний отзыв: 1 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Foundation Class Library 4.2 на следующих платформах
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ .NET 2003 Standard Edition
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ 2005 Express Edition
Ключевые слова: 
kbdocview kbhowto kbmdi kbuidesign kbmt KB98598 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:98598

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com