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


Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне

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

Создание пользовательского элемента управления .NET

  1. Создайте проект библиотеки элементов управления Windows Forms Visual C# с именем WindowsFormsControlLibrary1.

    В меню Файл выберите пункт Создать, а затем щелкните Проект. В папке Visual C# выберите библиотеку элементов управления Windows Forms.

    Примите WindowsFormsControlLibrary1 имя проекта, нажав кнопку "ОК".

    По умолчанию имя элемента управления .NET будет UserControl1.

  2. Добавление дочерних элементов управления UserControl1в .

    На панели элементов откройте список "Все Windows Forms". Перетащите элемент управления Button в область конструктора UserControl1 .

    Кроме того, добавьте элемент управления TextBox .

  3. В Обозреватель решений дважды щелкните UserControl1.Designer.cs, чтобы открыть его для редактирования. Измените объявления текстового поля и кнопки на private public.

  4. Выполните сборку проекта.

    В меню Сборка выберите Построить решение.

Создание ведущего приложения MFC

  1. Создайте проект приложения MFC.

    В меню Файл выберите пункт Создать, а затем щелкните Проект. В папке Visual C++ выберите приложение MFC.

    В поле Имя введите MFC01. Измените параметр решения, чтобы добавить в решение. Щелкните OK.

    В мастере приложений MFC для типа приложения выберите диалоговое окно на основе. Примите оставшиеся параметры по умолчанию и нажмите кнопку "Готово". При этом создается приложение MFC с диалоговым окном MFC.

  2. Добавьте элемент управления заполнителя в диалоговое окно MFC.

    В меню "Вид" щелкните "Представление ресурсов". В представлении ресурсов разверните папку диалогового окна и дважды щелкните ее IDD_MFC01_DIALOG. Ресурс диалогового окна отображается в редакторе ресурсов.

    На панели элементов откройте список редактора диалогов. Перетащите элемент управления "Статический текст" в ресурс диалогового окна. Элемент управления "Статический текст" будет служить заполнителем элемента управления .NET Windows Forms. Измените размер элемента управления Windows Forms примерно на размер.

    В окне "Свойства" измените идентификатор элемента управления IDC_CTRL1 "Статический текст" и измените свойство TabStop на True.

  3. Настройте проект для поддержки среды CLR.

    В Обозреватель решений щелкните правой кнопкой мыши узел проекта MFC01 и выберите пункт "Свойства".

    В диалоговом окне "Страницы свойств" в разделе "Свойства конфигурации" выберите "Общие". В разделе "Параметры по умолчанию проекта" задайте поддержку среды CLR для поддержки среды CLR (/clr).

    В разделе "Свойства конфигурации" разверните узел C/C++ и выберите узел "Общие". Задайте для отладочного формата информации значение Program Database (/Zi).

    Выберите узел создания кода. Установите параметр "Включить минимальное перестроение " (/Gm-). Кроме того, установите для базовых проверок среды выполнения значение по умолчанию.

    Нажмите кнопку "ОК" , чтобы применить изменения.

  4. Добавьте ссылку на элемент управления .NET.

    В Обозреватель решений щелкните правой кнопкой мыши узел проекта MFC01 и нажмите кнопку "Добавить", "Ссылки". На странице свойств нажмите кнопку "Добавить новую ссылку", выберите WindowsFormsControlLibrary1 (на вкладке "Проекты") и нажмите кнопку "ОК". Это добавляет ссылку в виде параметра компилятора /FU , чтобы программа компилировала. Он также помещает копию WindowsFormsControlLibrary1.dll в папку проекта \MFC01\, чтобы программа выполнялась.

  5. В Stdafx.h найдите эту строку:

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    Над ним добавьте следующие строки:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. Добавьте код для создания управляемого элемента управления.

    Сначала объявите управляемый элемент управления. В 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);
    }
    
  7. Постройте и запустите проект.

    В Обозреватель решений щелкните правой кнопкой мыши MFC01 и выберите команду "Задать в качестве запуска проекта".

    В меню Сборка выберите Построить решение.

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

См. также

Размещение пользовательского элемента управления формы Windows Forms в диалоговом окне MFC