ネイティブとの連携

仕事でツールを作っている。
MFC でできている OpenGL を使ったツールを C# に移植している。
最初の予定では描画部分だけ ActiveX コントロールにして、WinForms に貼り付けるつもりで、
実際にそうしてみた。
上手く行ったかのように見えたんだけど、なんか突然デザインモードでの表示の時に
Visual Studio IDE ごと逝ってしまうようになった。
理由がさっぱり掴めなかったので、他の方法を模索してみた。


結果としては C++/CLI を使って、混在アセンブリで行く方法がよさそうだ。
マネッジド参照(?)のハット記号がキショかったり、ファイナライザのイクスクラメーションにびっくりwしてみたりしてるけど、こんなに簡単に managed/unmanaged の混在コードが書けるとは思わなかった。
OpenGL も普通に使えているし。

ところで、WinForms では HWND や HDC が不変だとは保障されてないんだったっけか?
とりあえず IntPtr を ToPointer() してから HWND/HDC にキャストしてるだけで上手くいっているように見えるが……。