Как отобразить управляемый элемент управления в собственном окне? - PullRequest
1 голос
/ 30 октября 2009

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

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

SubclassWindow(hNativeWindow, MyNativeWindowProc);

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

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

MyControl является производным от System :: Windows :: Forms :: UserControl и имеет переопределение CreateParams , чтобы установить для Parent значение hNativeWindow .

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

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

1 Ответ

1 голос
/ 02 ноября 2009

Windows Forms поддерживает размещение как ActiveX в собственных окнах начиная с .Net 1.1 . Хост должен реализовать некоторые интерфейсы. MFC 8.0 обернут вокруг необходимого кода в CWinFormsDialog и CWinFormsView. Используйте классы поддержки MFC, если можете. Если вы не можете, установите MFC из Visual C ++ 2005 или более поздней версии и проверьте исходный код классов поддержки OLE MFC, таких как COleControlContainer, COleControlSite и т. Д.

...