Neutral Scent

App developments & Gadgets

System.Windows.Forms.Formを非.NETウインドウの子ウインドウにする

MFCの感覚だと、なんでFormクラスにhWndをAttachできんのじゃー、と叫びたくなりますが、そういう時は力技。
どーせInteropなのですから、SetParent()してしまえばいいのデス。

// paste from pinvoke.net
[DllImport("user32.dll")]?
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

SetParent(dotnetForm.Handle, new IntPtr(hWnd));

ただし、このTransparentなウインドウをこれすると、おかしなことになるらしいので、要注意。