API関数を対応するNETFrameWorkに書き換え
- 題名: API関数を対応するNETFrameWorkに書き換え
- 著者: エツ
- 日時: 2006/08/04 13:39:17
- ID: 16988
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: API関数を対応するNETFrameWorkに書き換え
- 著者: まどか
- 日時: 2006/08/04 14:00:43
- ID: 16989
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: API関数を対応するNETFrameWorkに書き換え
- 著者: エツ
- 日時: 2006/08/05 1:01:19
- ID: 17007
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: API関数を対応するNETFrameWorkに書き換え
- 著者: まどか
- 日時: 2006/08/05 1:52:21
- ID: 17009
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: API関数を対応するNETFrameWorkに書き換え
- 著者: エツ
- 日時: 2006/08/05 17:34:03
- ID: 17017
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
こんにちは、また宜しくお願いします。
API関数を対応するNETFrameWorkを使用して書き換えています
MSDNのヘルプを見ながらやっていますが、以下のGetDeviceCaps(hDC, BITSPIXEL)の書き換えが
どうしてもできません。ヘルプ通りにすると
'GetDeviceCaps'は'System.Drawing.Graphics'のメンバではありません。とコンパイルエラーがでます。
このヘルプをどのように解釈したらエラーが無くなるのでしょうか?
ヘルプ内容は
Microsoft Win32 と Microsoft .NET Framework API との対応
http://www.microsoft.com/japan/msdn/net/general/win32map.aspx#win32map_devicecontextfunctions
Win32 五十音順カテゴリリスト のデバイスコンテキスト関数に収録されています。
元になるAPI関数はGetDC、GetDeviceCaps、ReleaseDCでGetDeviceCapsの書き換えができません。
API使用の元の関数呼び出しです。(これは正常に動作します。)
Public Function GetDisplayColorBit_A() As Integer 'API使用の場合
'スクリーンデバイスコンテキストを取得
Dim hDC As IntPtr
hDC = GetDC(IntPtr.Zero)
'カラービットを取得
Dim iRes As Integer = GetDeviceCaps(hDC, BITSPIXEL)
'スクリーンデバイスコンテキストを解放
ReleaseDC(IntPtr.Zero, hDC)
Return iRes
End Function 'GetDisplayColorBit
上のプロシジャーを API に対応するFrameWorkを使用して書き換えたプロシジャーです。
Public Function GetDisplayColorBit_B() As Integer 'APIに対応するFrameWorkを使用の場合
'スクリーンデバイスコンテキストを取得
Dim hDC As New IntPtr()
'Dim gr As Graphics = System.Drawing.Graphics.FromHwnd(Me.Handle) '次でもOK
Dim gr As Graphics = Me.CreateGraphics
hDC = gr.GetHdc() '対応API hDC = GetDC(IntPtr.Zero)
'カラービットを取得
Dim iRes As Integer = gr.GetDeviceCaps(hDC, BITSPIXEL) '※この行がエラーになります。
'スクリーンデバイスコンテキストを解放
gr.ReleaseHdc(hDC) '対応API ReleaseDC(IntPtr.Zero, hDC)
'Graphicsを解放
gr.Dispose()
Return iRes
End Function 'GetDisplayColorBit
エラー部分を元のAPI に置き換えると正常に動作します。
どうか宜しくお願いします。