【API Function】


[解像度取得、画面の取り込み]
 解像度の取得には、GetDeviceCaps関数を使用します。
この関数は、引数に指定される値に従って、得たい情報が戻り値として 返されます。得られる情報は、画面の幅やピクセルあたりのカラービット数 など様々です。

画面の色数 = 2^(ピクセルあたりのカラービット数)
 画面の取り込みには、GetDC,ReleaseDC,StretchBlt関数を使用します。


(GetDeviceCaps 関数等の使用方法)

このサンプルでは、CommandButtonをクリックすることで、解像度を得たり 画面を取り込みPictureBoxにコピーしたりします。
フォームのGeneralセクションに次の宣言コードを追加して下さい。

'APIの宣言
'指定されたデバイスに関するデバイス固有の情報を取得
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
        ByVal nIndex As Long) As Long
    'nIndexに当たる定数
    Private Const HORZSIZE = 4  '物理画面の幅 (ミリメートル単位)
    Private Const VERTSIZE = 6  '物理画面の高さ (ミリメートル単位)
    Private Const HORZRES = 8   '画面の幅 (ピクセル単位)
    Private Const VERTRES = 10  '画面の高さ (ピクセル単位)
    Private Const BITSPIXEL = 12'ピクセルあたりのカラービットの数 (プレーンごと)
    Private Const PLANES = 14   'カラープレーン数

'デバイスコンテキストを得る
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _
                As Long

'デバイスコンテキストを解放する
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As _
                Long, ByVal hdc As Long) As Long

'描画関数
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As _
    Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As _
    Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal _
    xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, _
    ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

次に、フォームに以下のようにコントロールを配置し、 Command1_Click(),Command2_Click()プロシージャに次のコードを追加します

'解像度の表示
Private Sub Command1_Click()
    Dim ScreenHdc As Long
    ScreenHdc = GetDC(0&)
    Label1.Caption = GetDeviceCaps(ScreenHdc, HORZRES) _
                     & "×" & _
                     GetDeviceCaps(ScreenHdc, VERTRES) _
                     & " ピクセル " & Chr(10) & _
                     2 ^ (GetDeviceCaps(ScreenHdc, BITSPIXEL)) _
                     & "色"
    ReleaseDC 0&, ScreenHdc
End Sub

'画面取り込み
Private Sub Command2_Click()
    Dim ScreenHdc As Long'スクリーンデバイス
    Dim S_Hor As Long    'スクリーンの幅
    Dim S_Ver As Long    'スクリーンの高さ
    ScreenHdc = GetDC(0&)'デバイスコンテキストを取得
    S_Hor = GetDeviceCaps(ScreenHdc, HORZRES)
    S_Ver = GetDeviceCaps(ScreenHdc, VERTRES)
    'スクリーン画面をPicture1に縮小コピー
    StretchBlt Picture1.hdc, 0&, 0&, Picture1.ScaleWidth, _
               Picture1.ScaleHeight, ScreenHdc, 0&, 0&, S_Hor, _
               S_Ver, vbSrcCopy
ReleaseDC 0&, ScreenHdc'デバイスコンテキストの解放 Picture1.Refresh 'コピーを反映 End Sub


API Functionインデックス トップ


Copyright(C)1999 Tomoya. All rights reserved.