2009-10-30 2 views
1

Использование C++/CLI, Как отобразить управляемый элемент управления (например, System :: Windows :: Forms :: Panel ^) в окне, созданном в собственном коде?Как отобразить управляемое управление в собственном окне?

внешняя программа вызывает мой собственный метод, где я могу получить доступ к его окно через

SubclassWindow(hNativeWindow, MyNativeWindowProc); 

Затем я создаю управление с чем-то похожим на:

MyNameSpace::MyControl^ ctrl = osozKomunikator = gcnew MyControl("SomeText", hNativeWindow); 
ctrl->Show(); 

MyControl является производным от системы: : Windows :: Forms :: UserControl и имеет overrideen CreateParams для установки родителя на hNat iveWindow.

В результате управление мигает и исчезает, не отображается вообще или отображается только после того, как я замедляю выполнение с помощью отладчика.

Пожалуйста, помогите.

ответ

1

Windows Forms supports being hosted like ActiveX in native windows since .Net 1.1. Однако хост должен реализовать некоторые интерфейсы. MFC 8.0 обернут вокруг нужного кода в CWinFormsDialog и CWinFormsView. Используйте классы поддержки MFC, если сможете. Если вы не можете, установите MFC из Visual C++ 2005 или выше и проверьте исходный код классов поддержки OLE MFC, таких как COleControlContainer, COleControlSite и т. Д.

Смежные вопросы