デバイス固有情報の取得          <TOP>


GetDeviceCaps デバイス固有情報を取得

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

ReleaseDC デバイスコンテキストを解放

 

 

'================================================================
'= デバイス固有情報の取得
'=    (GetDeviceCaps.bas)
'================================================================
#include "Windows.bi"

' デバイス固有の情報を取得
Declare Function Api_GetDeviceCaps& Lib "gdi32" Alias "GetDeviceCaps" (ByVal hDC&, ByVal nIndex&)

' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var Shared List1 As Object
List1.Attach GetDlgItem("List1") : List1.SetFontSize 12

Var Shared cons$(30,2) As String

'================================================================
'=
'================================================================
Declare Sub Mainform_Start edecl ()
Sub Mainform_Start()
    For i = 0 To 30
        For j = 0 To 2
            Read cons$(i, j)
        Next j
    Next i

    data DRIVERVERSION   ,   0 , デバイスドライバーのバージョン番号
    data TECHNOLOGY      ,   2 , デバイス技術を指定する次の定数
    data HORZSIZE        ,   4 , 実際のディスプレイの幅(単位 ミリ)
    data VERTSIZE        ,   6 , 同、高さ(同上)
    data HORZRES         ,   8 , スクリーンの幅(単位 ピクセル)
    data VERTRES         ,  10 , 同、高さ(同上)
    data LOGPIXELSX      ,  88 , 横方向の1論理インチあたりのピクセル数
    data LOGPIXELSY      ,  90 , 縦方向の1論理インチあたりのピクセル数
    data BITSPIXEL       ,  12 , ピクセルあたりのビット数
    data PLANES          ,  14 , カラープレーン数
    data NUMBRUSHES      ,  16 , デバイス固有のブラシ数
    data NUMPENS         ,  18 , 同、ペンの数
    data NUMFONTS        ,  22 , 同、マーカー数
    data NUMCOLORS       ,  24 , デバイスのカラーテーブル内のエントリ数
    data ASPECTX         ,  40 , 線の描画に使うデバイスピクセルの相対比
    data ASPECTY         ,  42 , 同、相対高さ
    data ASPECTXY        ,  44 , 線の描画に使うデバイスピクセルの対角線の幅
    data PDEVICESIZE     ,  26 , (使用不可)
    data CLIPCAPS        ,  36 , クリッピング能力(戻り値は以下の定数)
    data SIZEPALETTE     , 104 , システムパレット内のエントリ数
    data NUMRESERVED     , 106 , 同、予約エントリ数
    data COLORRES        , 108 , デバイスのカラー解像度(単位 ビット/ピクセル)
    data PHYSICALWIDTH   , 110 , 物理的幅(単位 ピクセル)
    data PHYSICALHEIGHT  , 111 , 同、高さ
    data PHYSICALOFFSETX , 112 , 実際に印刷可能なX方向のマージン
    data PHYSICALOFFSETY , 113 , 同、Y方向マージン
    data RASTERCAPS      ,  38 , ラスタ能力(戻り値は以下の定数の組み合わせ)
    data CURVECAPS       ,  28 , デバイスがサポートする曲線描画能力
    data LINECAPS        ,  30 , デバイスがサポートする線分描画能力
    data POLYGONALICAPS  ,  32 , デバイスがサポートする多角形描画能力
    data TEXTCAPS        ,  32 , デバイスがサポートする文字描画能力
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hDC As Long
    Var Ret As Long

    hDC = Api_GetDC(GethWnd)

    List1.ResetContent
    For i = 0 To 30
        Ret = Api_GetDeviceCaps(hDC, Val(cons$(i,1)))
        Select Case i
            Case 0 
                List1.AddString Left$(cons$(i,0) & Space$(18), 18) & "&H" & Hex$(Ret) & Space$(10 - Len("&H" & Hex$(Ret))) & cons$(i, 2)
            Case 26, 30 
                List1.AddString Left$(cons$(i,0) & Space$(18), 18) & "&H" & Trim$(Str$(Ret)) & Space$(10 - Len("&H" & Trim$(Str$(Ret)))) & cons$(i, 2)
            Case Else
                List1.AddString Left$(cons$(i,0) & Space$(18), 18) & Trim$(Str$(Ret)) & Space$(10 - Len(Trim$(Str$(Ret)))) & cons$(i, 2)
        End Select
    Next i
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End