Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне
В этом разделе предполагается, что создается проект MFC на основе диалоговых окон (CDialog Class); следует учитывать, что можно также добавить поддержку элемента управления Windows Forms к существующему окну MFC.
Создание пользовательского элемента управления .NET
Создайте новый проект библиотеки элементов управления Windows Forms на Visual C# с именем WindowsFormsControlLibrary1.
В меню Файл последовательно выберите пункты Создать и Проект. В папке Visual C# выберите элемент Библиотека элементов управления Windows Forms.
Не изменяйте проекта имя (WindowsFormsControlLibrary1) и нажмите кнопку ОК.
По умолчанию элемент управления .NET получает имя UserControl1.
Добавьте дочерние элементы управления к элементу UserControl1.
В панели элементов откройте список Все формы Windows Forms list. Перетащите элемент управления Button в рабочую область конструирования UserControl1.
Также добавьте элемент управления TextBox.
В окне Обозреватель решений дважды щелкните файл UserControl1.Designer.cs, чтобы открыть его для изменения. Измените объявления для объектов TextBox и Button с private на public.
Выполните построение проекта.
В меню Построение выберите Построить решение.
Создание ведущего приложения MFC
Создайте проект приложения MFC.
В меню Файл последовательно выберите пункты Создать и Проект. В папке Visual C++ выберите Приложение MFC.
В поле Имя введите MFC01. Измените значение параметра "Решение" на Добавить в решение. Нажмите кнопку ОК.
В мастере приложений MFC выберите значение На базе диалогового окна в поле "Тип приложения". Не изменяйте значения по умолчанию для остальных параметров и нажмите кнопку Готово. Будет создано приложение MFC с диалоговым окном MFC.
В диалоговое окно MFC добавьте прототип элемента управления.
В меню Вид выберите пункт Представление ресурсов. В окне Представление ресурсов разверните папку Диалоговое окно и дважды щелкните элемент IDD_MFC01_DIALOG. Ресурс диалогового окна откроется в редакторе ресурсов.
В панели элементов откройте список Редактор диалоговых окон. Перетащите элемент управления Надпись в ресурс диалогового окна. Элемент управления Надпись служит прототипом элемента управления .NET Windows Forms. Измените размер этого элемента в соответствии с размером элемента управления Windows Forms.
В окне Свойства установите свойство ID элемента управления Надпись в значение IDC_CTRL1 и установите свойство TabStop в значение True.
Настройте проект на поддержку среды CLR.
В окне Обозреватель решений щелкните правой кнопкой мыши узел проекта MFC01 и выберите пункт Свойства.
В диалоговом окне Страницы свойств в папке Свойства конфигурации выберите категорию Общие. В разделе Значения по умолчанию для проекта установите для параметра Поддержка Common Language Runtime значение Поддержка CLR-среды (/clr).
В разделе Свойства конфигурации разверните узел C/C++ и выберите узел Общие. Выберите в поле Формат отладочной информации значение База данных программы (/Zi).
Выберите узел Создание кода. Установите параметр Включить минимальное перестроение в значение Нет (/Gm-). Установите параметр Основные проверки времени выполнения в значение По умолчанию.
Нажмите кнопку ОК, чтобы применить изменения.
Добавьте ссылку на элемент управления .NET.
В окне Обозреватель решений щелкните правой кнопкой мыши узел проекта MFC01 и выберите пункт Ссылки. В окне Страница свойств нажмите кнопку Добавить новую ссылку, выберите элемент WindowsFormsControlLibrary1 (на вкладке Проекты) и нажмите кнопку ОК. Будет добавлена ссылка в виде параметра компилятора /FU, что позволит компилировать программу. В папку проекта \MFC01\ помещается копия библиотеки WindowsFormsControlLibrary1.dll, что позволит запускать программу.
Найдите в файле Stdafx.h следующую строку:
#endif // _AFX_NO_AFXCMN_SUPPORT
Добавьте над ней следующие строки:
#include <afxwinforms.h> // MFC Windows Forms support
Добавьте код создания управляемого элемента управления.
Сначала объявите управляемый элемент управления. Перейдите к объявлению класса диалогового окна в файле MFC01Dlg.h и добавьте в области Protected элемент данных для пользовательского элемента управления следующим образом.
class CMFC01Dlg : public CDialog { // ... // Data member for the .NET User Control: CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_ctrl1;
Далее создайте реализацию управляемого элемента управления. В файле MFC01Dlg.cpp в переопределении метода диалогового окна CMFC01Dlg::DoDataExchange, созданном с помощью мастера приложений MFC (в отличие от метода CAboutDlg::DoDataExchange, который располагается в этом же файле), добавьте следующий код создания управляемого элемента управления и свяжите его с прототипом статического элемента управления IDC_CTRL1.
void CMFC01Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1); }
Выполните построение и запуск проекта.
В окне Обозреватель решений щелкните правой кнопкой мыши проект MFC01 и выберите команду Назначить запускаемым проектом.
В меню Построение выберите Построить решение.
В меню Отладка выберите команду Запуск без отладки. Элемент управления Windows Forms должен появиться в диалоговом окне MFC.
См. также
Другие ресурсы
Размещение пользовательского элемента управления формы Windows Forms в диалоговом окне MFC