2009-10-30 7 views
1

Utilisation de C++/CLI, Comment afficher un contrôle géré (par exemple, System :: Windows :: Forms :: Panel ^) sur une fenêtre créée en code natif?Comment afficher le contrôle géré sur une fenêtre native?

Un programme externe appelle ma méthode native où je peux accéder à sa fenêtre via

SubclassWindow(hNativeWindow, MyNativeWindowProc); 

Ensuite, je crée le contrôle avec quelque chose de similaire à:

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

MyControl est dérivé de système: : Windows :: Forms :: UserControl et a dépassé CreateParams pour définir Parent à hNat iveWindow. En conséquence, le contrôle clignote et disparaît, ne s'affiche pas du tout ou ne s'affiche qu'après avoir ralenti l'exécution avec le débogueur.

Aidez-nous s'il vous plaît.

Répondre

1

Windows Forms supports being hosted like ActiveX in native windows since .Net 1.1. L'hôte doit cependant implémenter certaines interfaces. MFC 8.0 a enveloppé le code nécessaire dans CWinFormsDialog et CWinFormsView. Utilisez les classes de support de MFC si vous le pouvez. Si vous ne pouvez pas, installez MFC à partir de Visual C++ 2005 ou supérieur et vérifiez le code source des classes de prise en charge OLE MFC, comme COleControlContainer, COleControlSite, etc.

Questions connexes