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


ぱぴ  2006-12-08 22:40:42  No: 63869  IP: 192.*.*.*

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


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

編集 削除
Blue  2006-12-09 08:40:21  No: 63870  IP: 192.*.*.*

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 08:44:47  No: 63871  IP: 192.*.*.*

あ、Windowsハンドルか、、、

マネージ→アンマネージ

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

編集 削除
ぱぴ  2006-12-11 19:07:09  No: 63872  IP: 192.*.*.*

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

編集 削除
Blue  2007-02-26 10:22:57  No: 63873  IP: 192.*.*.*

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

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

delete g;

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

編集 削除