2012-05-16 24 views
14

Với hình thứcLàm thế nào để có được một HWND xử lý ra khỏi một System.Windows.Forms.Form

System.Windows.Forms::Form Form1; 

và cửa sổ xử lý

HWND hWnd; 

Làm thế nào tôi có thể thiết lập hWnd đến tài sản của Xử lý Form1 mà thực sự tồn tại như một tài sản công cộng mà "Gets cửa sổ xử lý mà kiểm soát là ràng buộc để. (Kế thừa từ Control.)" Theo Microsoft documentation of System.Windows.Forms::Form? Trong constructor của Mẫu Form1 của tôi, tôi đã cố gắng

hWnd = this.Handle; 

nhưng trình biên dịch phàn nàn:

lỗi C2228: bên trái của '.Handle' phải có kiểu lớp/struct/công đoàn là 'MyNameSpace :: Form1^const 'bạn có định sử dụng' -> 'thay thế không?

Vì vậy, tôi cố gắng

hWnd = this->Handle; 

và chỉ

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

và sau đó trình biên dịch nói:

lỗi C2440: '=': không thể chuyển đổi từ 'Hệ thống :: IntPtr' để 'HWND' Không có toán tử chuyển đổi do người dùng xác định có thể thực hiện chuyển đổi này hoặc toán tử không thể được gọi là

Trả lời

20

Tôi tìm thấy một giải pháp, và không quan tâm nếu nó là một kludge.

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

Hoạt động.

+2

Theo như tôi có thể thấy đó là cách chính xác để thực hiện việc này. – Justin

Các vấn đề liên quan