2012-05-16 4 views
14

Angesichts der Form erhaltenWie ein HWND Griff aus einem System.Windows.Forms.Form

System.Windows.Forms::Form Form1; 

und den Fenstergriff

HWND hWnd; 

Wie kann ich hWnd auf die Handle-Eigenschaft Form1, das wirklich als eine öffentliche Eigenschaft existiert, die "das Fensterhandle erhält, an das das Steuerelement gebunden ist. (Von Control geerbt.)" Laut Microsoft documentation of System.Windows.Forms::Form? Im Konstruktor meines Formular Form1, habe ich versucht,

hWnd = this.Handle; 

aber der Compiler beschwert sich:

Fehler C2228: links von '.Handle' muss Klasse/Struktur/Union-Typ haben, ist ‚MyNamespace :: Form1^const 'wollten Sie stattdessen' -> 'verwenden?

Also versuche ich

hWnd = this->Handle; 

und nur

hWnd = Handle; // Since I'm in the Form 

und dann der Compiler sagt:

Fehler C2440: '=': kann nicht aus konvertieren 'System :: IntPtr' zu 'HWND' Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden

Antwort

20

Ich habe eine Lösung gefunden und es ist mir egal, ob es sich um einen Schlamm handelt.

hWnd = static_cast<HWND>(Handle.ToPointer()); 

Funktioniert.

+2

Soweit ich sehen kann, ist das der richtige Weg, dies zu tun. – Justin