Entwickler-Ecke

WinForms - externe Komponenten benutzen


McCancey - Do 08.01.09 16:31
Titel: externe Komponenten benutzen
Hallo,

ich benutze ein Framework (ESRI ArcObjects) dessen Controls ich gerne verwenden möchte. Das Framework stellt keine Control Objekte bereit, aber ich kann über eine Property auf das Window Handle eines Controls zugreifen. Gibt es in c# irgendeinen Mechanismus, mit dem ich mir das hWnd schnappen kann und dessen assoziiertes Fenster in ein anderes Control (z.B. Panel) zeichnen lassen kann?


Kha - Do 08.01.09 16:39

Vielleicht kannst du mit SetParent [http://pinvoke.net/default.aspx/user32/SetParent.html] das Control in das Panel verschieben.


McCancey - Do 08.01.09 17:09

Das Problem ist, dass ich eben kein wirkliches Control habe, das ich einsetzen könnte, sondern nur über das Window Handle an das einzufügende Objekt komme. Es gibt also keine SetParent Funktion, ich müsste sowas haben wie eine Funktion Control.FromHandle(Int hWnd) oder Graphics.DrawWindow(Int hWnd) oder eine API Funktion die das Handle benutzt um dessen Fenster irgendwo hin zu pinseln...


Th69 - Do 08.01.09 17:23

Zitat:

... oder eine API Funktion die das Handle benutzt um dessen Fenster irgendwo hin zu pinseln...

Genau das macht doch die SetParent-Funktion der WinAPI.
Du nimmst das Handle des externen Fensters und plazierst es auf dein Panel (Panel.Handle):

C#-Quelltext
1:
SetParent(hWndExternal, Panel.Handle);