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


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

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

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

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

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

    Не изменяйте проекта имя (WindowsFormsControlLibrary1) и нажмите кнопку ОК.

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

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

    В панели элементов откройте список Все формы Windows Forms list. Перетащите элемент управления Button в рабочую область конструирования UserControl1.

    Также добавьте элемент управления TextBox.

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

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

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

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

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

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

    В поле Имя введите MFC01. Измените значение параметра "Решение" на Добавить в решение. Нажмите кнопку ОК.

    В мастере приложений MFC выберите значение На базе диалогового окна в поле "Тип приложения". Не изменяйте значения по умолчанию для остальных параметров и нажмите кнопку Готово. Будет создано приложение MFC с диалоговым окном MFC.

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

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

    В панели элементов откройте список Редактор диалоговых окон. Перетащите элемент управления Надпись в ресурс диалогового окна. Элемент управления Надпись служит прототипом элемента управления .NET Windows Forms. Измените размер этого элемента в соответствии с размером элемента управления Windows Forms.

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

  3. Настройте проект на поддержку среды CLR.

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

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

    В разделе Свойства конфигурации разверните узел C/C++ и выберите узел Общие. Выберите в поле Формат отладочной информации значение База данных программы (/Zi).

    Выберите узел Создание кода. Установите параметр Включить минимальное перестроение в значение Нет (/Gm-). Установите параметр Основные проверки времени выполнения в значение По умолчанию.

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

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

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

  5. Найдите в файле Stdafx.h следующую строку:

    #endif // _AFX_NO_AFXCMN_SUPPORT 
    

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

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

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

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

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

    В меню Отладка выберите команду Запуск без отладки. Элемент управления Windows Forms должен появиться в диалоговом окне MFC.

См. также

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

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