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


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

Ниже показано, как создать элемент управления платформа .NET Framework пользователя, создать элемент управления в библиотеке классов элементов управления (в частности, проект библиотеки элементов управления Windows), а затем скомпилировать проект в сборку. Затем элемент управления можно использовать из приложения MFC, использующего классы, производные от класса CView и класса CWinFormsView.

Сведения о создании пользовательского элемента управления Windows Forms и создании библиотеки классов элементов управления см. в статье "Практическое руководство. Создание пользовательских элементов управления".

Примечание.

В некоторых случаях элементы управления Windows Forms, такие как сторонний элемент управления Grid, могут не вести себя надежно при размещении в приложении MFC. Рекомендуется разместить элемент управления пользователем Windows Forms в приложении MFC и поместить сторонний элемент управления Grid в элемент управления User.

В этой процедуре предполагается, что вы создали проект библиотеки элементов управления Windows Forms с именем WindowsFormsControlLibrary1, как описано в процедуре: Создание пользовательского элемента управления и узла в диалоговом окне.

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

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

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

    В поле "Имя" введите и измените параметр решения на "Добавить в решение".MFC02 Щелкните OK.

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

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

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

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

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

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

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

  3. В pch.h (stdafx.h в Visual Studio 2017 и более ранних версиях) добавьте следующую строку:

    #using <System.Windows.Forms.dll>
    
  4. Добавьте ссылку на элемент управления .NET.

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

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

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

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

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. Измените класс представления таким образом, чтобы он наследовал от CWinFormsView.

    В MFC02View.h замените CView на CWinFormsView, чтобы код отображалось следующим образом:

    class CMFC02View : public CWinFormsView
    {
    };
    

    Если вы хотите добавить дополнительные представления в приложение MDI, необходимо вызвать CWinApp::AddDocTemplate для каждого создаваемого представления.

  7. Измените файл MFC02View.cpp, чтобы изменить CView на CWinFormsView в IMPLEMENT_DYNCREATE макросе и карте сообщений и заменить существующий пустой конструктор конструктором, показанным ниже:

    IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView)
    
    CMFC02View::CMFC02View(): CWinFormsView(WindowsFormsControlLibrary1::UserControl1::typeid)
    {
    }
    BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView)
    //leave existing body as is
    END_MESSAGE_MAP()
    
  8. Постройте и запустите проект.

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

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

    В меню отладки нажмите кнопку "Пуск" без отладки.

См. также

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