マネージからアンマネージへのWindowハンドルの引渡しは?


ぱぴ  2006-12-09 07:40:42  No: 63869

現在、アンマネージコードでGUIを作成しグラフ描画をアンマネージコード(DLL)で行わせようと思っているのですが。
VC6.0で出来たような、ハンドルを引数で渡して。
計算及び描画をDLL側で行わせるような事は可能でしょうか?
データ量が多く計算及び描画に速度が要求される処理が必要となっています。

もし可能でしたら実現方法を教えて頂けませんか?


Blue  2006-12-09 17:40:21  No: 63870

HDC → System.Drawing.Graphics

HDC hDC;

// hDCは適当に設定

System::Drawing::Graphics^ g = System::Drawing::Graphics::FromHdc( IntPtr( hDC ) );

// 処理

g->Dispose();

[MSDN]http://msdn2.microsoft.com/ja-jp/library/system.drawing.graphics.fromhdc(VS.80).aspx

System.Drawing.Graphics → HDC

System::Drawing::Graphics^ g;

// g は適当に設定

System::IntPtr p = g->GetHdc();
HDC hDC = static_cast< HDC >( p.ToPointer() );

// 処理

g->ReleaseHdc( p )

[MSDN]http://msdn2.microsoft.com/ja-jp/library/9z5820hw(VS.80).aspx


Blue  2006-12-09 17:44:47  No: 63871

あ、Windowsハンドルか、、、

マネージ→アンマネージ

しかおそらくできません。
(Formだったら static_cast< HWND >( Form1->Handle.ToPointer() ); あたりで取得できると思った)


ぱぴ  2006-12-12 04:07:09  No: 63872

ありがとうございます。
ためしてみます。


Blue  2007-02-26 19:22:57  No: 63873

いまさらですが、(解決チェックしていないし、、、ね)

>g->Dispose();
は間違いでした。

delete g;

が正しいです。
http://msdn2.microsoft.com/ja-jp/library/system.idisposable(VS.80).aspx


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加