Различия в программировании Windows Forms/MFC
В разделах Использование пользовательского элемента управления формы Windows Form в MFC описывается поддержка MFC для Windows Forms. Если вы не знакомы с программированием .NET Framework или 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 and Windows Forms Integration.
Нижеследующее представление 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