デバイスコンテキストのハンドルの取得  



OpenGLの初期化などで、たまーに必要なときがあるデバイスコンテキストのハンドルの取得方法。

例えば、フォーム上に配置したパネルにOpenGLで描画するとして、
初期化のためにデバイスコンテキストのハンドルがほしい、とする。

Panel panel1 = new Panel();

と宣言されているとすると・・・


 
<方法その1: user32.dl lの GetDC 関数を使う>

 [DllImport( "user32", SetLastError = true ), System.Security.SuppressUnmanagedCodeSecurity]
 public static extern IntPtr GetDC( IntPtr IntPtr_HWND );

これを使ってデバイスコンテキストのハンドルを取得

IntPtr panel1_HDC = USER32.GetDC( panel1.Handle );


 
<方法その2: Graphics クラスの GetDC 関数を使う>

System.Drawing.Graphics g = panel1.CreateGraphics();
IntPtr panel1_HDC = g.GetHdc();

こっちの方がネイティブなdllを読み込まなくて済むからラクかも。



<back to OpenGL menu>