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


Различия в программировании Windows Forms/MFC

Обновлен: Ноябрь 2007

В разделах Использование пользовательского элемента управления формы Windows Form в MFC описывается поддержка MFC для Windows Forms. Если вы не знакомы с программированием .NET Frameworks или MFC, в этом разделе предоставлена базовая информация о различиях в программировании между этими двумя платформами.

Windows Forms предназначается для создания приложений Microsoft Windows на платформе .NET Framework. Эта платформа предоставляет современный, объектно-ориентированный и расширяемый набор классов, позволяющих разрабатывать сложные приложения на основе Windows. С помощью Windows Forms можно создавать сложные клиентские приложения, получающие доступ к широкому набору источников данных и предоставляющие средства для отображения и редактирования данных с помощью элементов управления Windows Forms.

Однако, если вы привыкли к MFC, то возможно привыкли к созданию конкретных типов приложений которые еще явно не поддерживаются в Windows Forms. Приложения Windows Forms эквивалентны диалоговым приложениям MFC. Однако, они не могут обеспечить инфраструктуру для прямой поддержки других типов приложений MFC, таких как сервер/контейнер документа OLE, документы ActiveX, поддержка документ/представление для однодокументного интерфейса (SDI), многодокументный интерфейс (MDI) и множественный интерфейс верхнего уровня (MTI). Для создания этих приложений можно написать собственную логику.

Дополнительные сведения о приложениях Windows Forms см. в разделе Введение в Windows Forms.

Образец приложения, использующего формы Windows Forms с MFC, см. в разделе Интеграция MFC и WinForms.

Нижеследующее представление MFC или документ и возможности маршрутизации команд не имеют аналогов в Windows Forms:

  • Интегрированная оболочка

    MFC обрабатывает команды динамического обмена данными (DDE) и аргументы командной строки, используемые оболочкой при нажатии правой кнопкой мыши на документе и выборе таких команд как Открыть, Изменить или Печать. Windows Forms не имеет интегрированной оболочки и не отвечает на ее команды.

  • Шаблоны документа

    В MFC, шаблоны документов связывают представление, содержащееся во фрейме окна (в режиме MDI, SDI или MTI), с открытым документом. Windows Forms не имеют эквивалента шаблонам документов.

  • Документы

    В MFC при открытии документа из оболочки регистрируются типы файлов документа и обрабатывается тип документа. В Windows Forms отсутствует поддержка документов.

  • Состояния документа

    MFC поддерживает измененные состояния для документа. Поэтому при закрытии приложения, последнего представления, содержащего приложение, и при выходе из Windows в MFC будет предложено сохранить документ. В Windows Forms нет эквивалентной поддержки.

  • Команды

    В MFC присутствует концепция команд. Из строки меню, панели инструментов и всплывающего меню можно вызывать одну ту же команду, например, Вырезать и Копировать. В Windows Forms, команды представляют собой тесно связанные события из конкретного элемента интерфейса (такого как элемент меню); поэтому подключать все командные события нужно явно. В Windows Forms можно также обрабатывать несколько событий одним обработчиком. Дополнительные сведения см. в разделе Подключение нескольких событий к одному обработчику событий в Windows Forms.

  • Маршрутизация команд

    Маршрутизация команд MFC позволяет активному представлению или документу обрабатывать команды. Поскольку одна и та же команда имеет различные значения для различных представлений (например, команда Копировать в представлении текстового редактора имеет другое действие, чем в графическом редакторе), команды должны обрабатываться активным представлением. Так как меню и панели инструментов Windows Forms не имеют встроенного понимания активного представления без создания дополнительного внутреннего кода для каждого типа представления невозможно иметь отдельный обработчик для событий MenuItem.Click.

  • Механизм обновления команды

    MFC обладает механизмом обновления команды. По этой причине активное представление или документ отвечают за состояние элементов интерфейса (например, включение и отключение элемента меню или кнопки инструмента и установленных флажков). Windows Forms не имеют эквивалента механизма обновления команды.

См. также

Ссылки

Практические и пошаговые руководства для форм Windows Forms

Другие ресурсы

Использование пользовательского элемента управления формы Windows Form в MFC