2012-05-16 11 views
14

Biorąc postaciJak uzyskać HWND obsługiwać z pomocą System.Windows.Forms.Form

System.Windows.Forms::Form Form1; 

a okno obsłużyć

HWND hWnd; 

Jak mogę ustawić hWnd do nieruchomości rączce Form1, który naprawdę istnieje jako właściwość publiczna, która "Pobiera uchwyt okna, do którego kontrolka jest związana. (Dziedziczony z Control.)" Zgodnie z Microsoft documentation of System.Windows.Forms::Form? W konstruktorze moim formularzu Form1, próbowałem

hWnd = this.Handle; 

ale kompilator narzeka:

error C2228: lewej '.Handle' musi mieć typ klasa/struct/union jest „MyNamespace :: Form1^const "zamiast tego zamierzałeś użyć" -> "?

Więc staram

hWnd = this->Handle; 

i tylko

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

a następnie kompilator mówi:

błędu C2440: '=': nie można przekonwertować z 'System :: IntPtr' do "HWND" Nie jest dostępny żaden operator konwersji zdefiniowany przez użytkownika, który może wykonać tę konwersję lub operator nie może być nazwany

Odpowiedz

20

Znalazłem rozwiązanie i nie obchodzi mnie, czy to kałamarz.

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

Działa.

+2

O ile widzę, to jest to właściwy sposób. – Justin

Powiązane problemy