Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне
В этой статье предполагается, что вы создаете проект классов Microsoft Foundation (MFC), основанный на диалоговых окнах (класс CDialog), но вы также можете добавить поддержку элемента управления Windows Forms в существующее диалоговое окно MFC.
Создание пользовательского элемента управления .NET
Создайте проект библиотеки элементов управления Windows Forms Visual C# с именем
WindowsFormsControlLibrary1
.В меню Файл выберите пункт Создать, а затем щелкните Проект. В папке Visual C# выберите библиотеку элементов управления Windows Forms.
Примите
WindowsFormsControlLibrary1
имя проекта, нажав кнопку "ОК".По умолчанию имя элемента управления .NET будет
UserControl1
.Добавление дочерних элементов управления
UserControl1
в .На панели элементов откройте список "Все Windows Forms". Перетащите элемент управления Button в область конструктора
UserControl1
.Кроме того, добавьте элемент управления TextBox .
В Обозреватель решений дважды щелкните UserControl1.Designer.cs, чтобы открыть его для редактирования. Измените объявления текстового поля и кнопки на
private
public
.Выполните сборку проекта.
В меню Сборка выберите Построить решение.
Создание ведущего приложения MFC
Создайте проект приложения MFC.
В меню Файл выберите пункт Создать, а затем щелкните Проект. В папке Visual C++ выберите приложение MFC.
В поле Имя введите
MFC01
. Измените параметр решения, чтобы добавить в решение. Щелкните OK.В мастере приложений MFC для типа приложения выберите диалоговое окно на основе. Примите оставшиеся параметры по умолчанию и нажмите кнопку "Готово". При этом создается приложение MFC с диалоговым окном MFC.
Добавьте элемент управления заполнителя в диалоговое окно MFC.
В меню "Вид" щелкните "Представление ресурсов". В представлении ресурсов разверните папку диалогового окна и дважды щелкните ее
IDD_MFC01_DIALOG
. Ресурс диалогового окна отображается в редакторе ресурсов.На панели элементов откройте список редактора диалогов. Перетащите элемент управления "Статический текст" в ресурс диалогового окна. Элемент управления "Статический текст" будет служить заполнителем элемента управления .NET Windows Forms. Измените размер элемента управления Windows Forms примерно на размер.
В окне "Свойства" измените идентификатор элемента управления
IDC_CTRL1
"Статический текст" и измените свойство TabStop на True.Настройте проект для поддержки среды CLR.
В Обозреватель решений щелкните правой кнопкой мыши узел проекта MFC01 и выберите пункт "Свойства".
В диалоговом окне "Страницы свойств" в разделе "Свойства конфигурации" выберите "Общие". В разделе "Параметры по умолчанию проекта" задайте поддержку среды CLR для поддержки среды CLR (/clr).
В разделе "Свойства конфигурации" разверните узел C/C++ и выберите узел "Общие". Задайте для отладочного формата информации значение Program Database (/Zi).
Выберите узел создания кода. Установите параметр "Включить минимальное перестроение " (/Gm-). Кроме того, установите для базовых проверок среды выполнения значение по умолчанию.
Нажмите кнопку "ОК" , чтобы применить изменения.
Добавьте ссылку на элемент управления .NET.
В Обозреватель решений щелкните правой кнопкой мыши узел проекта MFC01 и нажмите кнопку "Добавить", "Ссылки". На странице свойств нажмите кнопку "Добавить новую ссылку", выберите WindowsFormsControlLibrary1 (на вкладке "Проекты") и нажмите кнопку "ОК". Это добавляет ссылку в виде параметра компилятора /FU , чтобы программа компилировала. Он также помещает копию WindowsFormsControlLibrary1.dll в папку проекта \MFC01\, чтобы программа выполнялась.
В Stdafx.h найдите эту строку:
#endif // _AFX_NO_AFXCMN_SUPPORT
Над ним добавьте следующие строки:
#include <afxwinforms.h> // MFC Windows Forms support
Добавьте код для создания управляемого элемента управления.
Сначала объявите управляемый элемент управления. В MFC01Dlg.h перейдите к объявлению класса диалогов и добавьте элемент данных для пользовательского элемента управления в защищенной области, как показано ниже.
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 и выберите команду "Задать в качестве запуска проекта".
В меню Сборка выберите Построить решение.
В меню отладки нажмите кнопку "Пуск" без отладки. В диалоговом окне MFC должен отображаться элемент управления Windows Forms.
См. также
Размещение пользовательского элемента управления формы Windows Forms в диалоговом окне MFC