フレームコントロールを描画(U)          <TOP>


指定されたタイプとスタイルを備える、ボタンやスクロールバーなどのフレームコントロールを描画します。

DrawFrameControl フレームコントロールを描画

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

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

 

 

'================================================================
'= フレームコントロールを描画(U)
'=    (DrawFrameControl2.bas)
'================================================================
#include "Windows.bi"

Type RECT
    Left   As Long
    Top    As Long
    Right  As Long
    Bottom As Long
End Type

' 指定されたタイプとスタイルを備える、ボタンやスクロールバーなどのフレームコントロールを描画
Declare Function Api_DrawFrameControl& Lib "user32" Alias "DrawFrameControl" (ByVal hDC&, lpRect As RECT, ByVal un1&, ByVal un2&)

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

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

#define DFC_CAPTION 1                   'タイトルバーを描画
#define DFCS_CHECKED &H400              'チェックされているボタンを描画
#define DFCS_FLAT &H4000                '平らなデザインのボタンを描画
#define DFCS_INACTIVE &H100             '使用不可
#define DFCS_MONO &H8000                'モノクロの境界
#define DFCS_PUSHED &H200               '押された状態
#define DFCS_CAPTIONCLOSE 0             '[閉じる]ボタン
#define DFCS_CAPTIONHELP 4              'ヘルプ(?)ボタン
#define DFCS_CAPTIONMAX 2               '[最大化]ボタン
#define DFCS_CAPTIONMIN 1               '[最小化]ボタン
#define DFCS_CAPTIONRESTORE 3           '[元のサイズに戻す]ボタン

Var Shared Combo1 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 12

Var Shared VarrView(9) As String
Var Shared VarrValue(9) As Long
Var Shared vShowVal As Long
Var Shared hDC As Long

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var i As Integer

    hDC = Api_GetDC(GethWnd)

    VarrView(0) = "チェックされているボタンを描画"
    VarrView(1) = "平らなデザインのボタンを描画"
    VarrView(2) = "使用不可"
    VarrView(3) = "モノクロの境界"
    VarrView(4) = "押された状態"
    VarrView(5) = "[閉じる]ボタン"
    VarrView(6) = "[最小化]ボタン"
    VarrView(7) = "[最大化]ボタン"
    VarrView(8) = "[元のサイズに戻す]ボタン"
    VarrView(9) = "ヘルプ(?)ボタン"

    VarrValue(0) = DFCS_CHECKED
    VarrValue(1) = DFCS_FLAT
    VarrValue(2) = DFCS_INACTIVE
    VarrValue(3) = DFCS_MONO
    VarrValue(4) = DFCS_PUSHED
    VarrValue(5) = DFCS_CAPTIONCLOSE
    VarrValue(6) = DFCS_CAPTIONMIN
    VarrValue(7) = DFCS_CAPTIONMAX
    VarrValue(8) = DFCS_CAPTIONRESTORE
    VarrValue(9) = DFCS_CAPTIONHELP

    For i = 0 To 9
        Combo1.AddString VarrView(i)
    Next
End Sub

'================================================================
'=
'================================================================
Declare Sub Combo1_Change edecl ()
Sub Combo1_Change()
    Var rc As RECT

    vShowVal = VarrValue(Combo1.GetCursel)
    SetWindowtext " uState:&H" & Hex$(vShowVal)

    rc.Left = 15
    rc.Right = 30
    rc.Top = 50
    rc.Bottom = 65

    Ret = Api_DrawFrameControl(hDC, rc, DFC_CAPTION, vShowVal)
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Var Ret As Long

    Ret = Api_ReleaseDC(GethWnd, hDC)
End Sub

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