フレームコントロールを描画(T) <TOP>
指定されたタイプとスタイルを備える、ボタンやスクロールバーなどのフレームコントロールを描画します。
DrawFrameControl フレームコントロールを描画
OffsetRect 矩形領域の補正
un1(uType)とun2(uState)の組み合わせでボタンやスクロールバーなどのフレームコントロールを描画します。
'================================================================ '= フレームコントロールを描画 '= (DrawFrameControl.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_OffsetRect& Lib "user32" Alias "OffsetRect" (lpRect As RECT, ByVal x&, ByVal y&) ' 指定されたウインドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) #define DR_DRAWWIDTH 20 #define DR_DRAWHEIGHT 20 'uType #define DFC_BUTTON 4 'ボタン #define DFC_CAPTION 1 'タイトルバーのボタン #define DFC_MENU 2 'メニュー #define DFC_POPUPMENU 5 'ポップアップメニュー #define DFC_SCROLL 3 'スクロールバー 'uState #define DFCS_ADJUSTRECT &H2000 '境界を調節してボタンの周囲の辺を除外 #define DFCS_BUTTON3STATE 8 '3ステートボタン #define DFCS_BUTTONCHECK 0 'チェックボックス #define DFCS_BUTTONPUSH &H10 'ボタン #define DFCS_BUTTONRADIO 4 'ラジオボタン #define DFCS_BUTTONRADIOIMAGE 1 'ラジオボタンのイメージ #define DFCS_BUTTONRADIOMASK 2 'ラジオボタンのマスク #define DFCS_CAPTIONCLOSE 0 '閉じるボタン #define DFCS_CAPTIONHELP 4 'ヘルプボタン #define DFCS_CAPTIONMAX 2 '最大化ボタン #define DFCS_CAPTIONMIN 1 '最小化ボタン #define DFCS_CAPTIONRESTORE 3 '元に戻すボタン #define DFCS_CHECKED &H400 'チェックされた状態 #define DFCS_FLAT &H4000 '平らなデザイン #define DFCS_HOT &H1000 ' #define DFCS_INACTIVE &H100 '使用不可 #define DFCS_MENUARROW 0 'サブメニュー矢印 #define DFCS_MENUARROWRIGHT 4 '矢印 #define DFCS_MENUBULLET 2 'オプションマーク #define DFCS_MENUCHECK 1 'チェックマーク #define DFCS_MONO &H8000 'モノクロの境界 #define DFCS_PUSHED &H200 '押された状態 #define DFCS_SCROLLCOMBOBOX 5 'コンボボックスタイプ #define DFCS_SCROLLDOWN 1 '下 #define DFCS_SCROLLLEFT 2 '左 #define DFCS_SCROLLRIGHT 3 '右 #define DFCS_SCROLLSIZEGRIP 8 'サイズ変更グリップ #define DFCS_SCROLLUP 0 '上 #define DFCS_TRANSPARENT &H800 ' Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared hDC As Long '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() hDC = Api_GetDC(GethWnd) End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var rc As RECT Var i As Long Var j As Long Var Ret As Long For i = 1 To 4 rc.Top = 30 * i - 15 rc.Bottom = rc.Top + DR_DRAWHEIGHT For j = 1 To 8 rc.Left = 40 * j - 25 rc.Right = rc.Left + DR_DRAWWIDTH Ret = Api_DrawFrameControl(hDC, rc, i, j) Next Next rc.Left = 15 rc.Right = 240 Ret = Api_OffsetRect(rc, 0, 30) Ret = Api_DrawFrameControl(hDC, rc, 0, DFCS_BUTTON3STATE) End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl (Cancel%, Mode%) Sub MainForm_QueryClose(Cancel%, Mode%) Var Ret As Long If Cancel% = 0 Then Ret = Api_ReleaseDC(GethWnd, hDC) End End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End