web-dev-qa-db-ja.com

System.Windows.Forms.FormからHWNDハンドルを取得する方法

与えられた形

System.Windows.Forms::Form Form1;

とウィンドウハンドル

HWND hWnd;

システムのMicrosoftドキュメント)によると、「コントロールがバインドされているウィンドウハンドルを取得します。(コントロールから継承されます。)」パブリックプロパティとして実際に存在するForm1のHandleプロパティにhWndを設定するにはどうすればよいですか。 .Windows.Forms :: Form ?フォームForm1のコンストラクターで、試しました

hWnd = this.Handle;

しかし、コンパイラは文句を言います:

エラーC2228: '。Handle'の左側にはclass/struct/unionタイプが必要です 'MyNamespace :: Form1 ^ const'代わりに '->'を使用するつもりでしたか?

だから私は試してみます

hWnd = this->Handle;

そしてただ

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

そしてコンパイラはこう言います:

エラーC2440: '=': 'System :: IntPtr'から 'HWND'に変換できませんこの変換を実行できるユーザー定義の変換演算子がないか、演算子を呼び出すことができません

16
mring

私は解決策を見つけました、そしてそれが恨みであるかどうか気にしません。

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

動作します。

21
mring