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


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

Обновлен: Ноябрь 2007

При выполнении приведенной в этом разделе процедуры подразумевается создание нового проекта MFC, в котором используются диалоговые окна (CDialog Class). Также допускается реализация поддержки элементов управления формы Windows Forms в существующих диалоговых окнах MFC.

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

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

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

    Нажмите кнопку ОК, чтобы принять установленное по умолчанию имя проекта WindowsControlLibrary1.

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

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

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

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

  3. В файле UserControl1.Designer.cs измените модификаторы объявления для элементов управления TextBox и Button с Private на Public.

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

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

    Вам может потребоваться полный путь к созданной библиотеке DLL с именем файла (содержится в журнале построения), который необходимо ввести в приложении MFC.

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

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

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

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

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

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

    Выберите вкладку Ресурсы. На вкладке "Ресурсы" дважды щелкните объект IDD_MFC01_DIALOG. В редакторе ресурсов отображается ресурс диалогового окна.

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

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

  3. Настройте конфигурацию проекта.

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

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

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

    В обозревателе решений щелкните правой кнопкой мыши узел проекта MFC01 и выберите пункт Ссылки. В окне Страница свойств выберите пункт Добавить новую ссылку, выберите проект WindowsControlLibrary1 (на вкладке Проекты) и нажмите кнопку ОК. В результате этого добавляется ссылка в форме параметра компилятора /FU, что позволяет скомпилировать программу. Также в каталог проекта MFC01 копируется файл WindowsControlLibrary1.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<WindowsControlLibrary1::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