サイズグリップの作成(U)          <TOP>


DrawFrameControlでサイズグリップを作成します。

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

GetSystemMetrics 表示要素の寸法とシステム構成の設定を取得

GetSysColor システムの背景色を取得

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

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

 

 

'================================================================
'= サイズグリップを作成
'=    (SizeGrip.bas)
'================================================================
#include "Windows.bi"

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

#define DFC_SCROLL 3                    'スクロールバーを描画
#define DFCS_SCROLLSIZEGRIP 8           'ウィンドウの右下隅にあるサイズ変更グリップ

#define WM_NCLBUTTONDOWN &HA1           '非クライアント領域で左マウスボタンを押す
#define HTBOTTOMRIGHT 17                'ウィンドウ境界の右下隅
#define COLOR_BTNFACE 15                'コマンドボタンの表面色

#define SM_CXFRAME 32                   'サイズ可変ウィンドウの境界線の、X方向の幅
#define SM_CYFRAME 33                   'サイズ可変ウィンドウの境界線の、Y方向の幅
#define SM_CYSIZE 31                    'タイトルバー内のビットマップの高さ
#define SM_CYBORDER 6                   'サイズ固定ウィンドウの境界線のY方向の幅

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

' 表示要素の寸法とシステム構成の設定を取得
Declare Function Api_GetSystemMetrics& Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex&)

' システムの背景色を取得
Declare Function Api_GetSysColor& Lib "user32" Alias "GetSysColor" (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 zX As Integer
Var Shared zY As Integer

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var rgbColor As Long

    rgbColor = Api_GetSysColor(COLOR_BTNFACE)   'Buttonの表面色を取得(EDE9EC)
    SetBackColor rgbColor                       'Mainformを取得色で塗りつぶす

    ShowWindow -1
    zX = Api_GetSystemMetrics(SM_CXFRAME) * 2
    zY = Api_GetSystemMetrics(SM_CYFRAME) * 2 + Api_GetSystemMetrics(SM_CYBORDER) + Api_GetSystemMetrics(SM_CYSIZE)
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_Resize edecl ()
Sub MainForm_Resize()
    Var rct As RECT
    Var hDC As Long
    Var Ret As Long

    hDC = Api_GetDC(GethWnd)

    rct.Left = GetWidth - (zX + GetFontSize)
    rct.Top = GetHeight - (zY + GetFontSize)
    rct.Right = GetWidth - zX
    rct.Bottom = GetHeight - zY

    Cls

    Ret = Api_DrawFrameControl(hDC, rct, DFC_SCROLL, DFCS_SCROLLSIZEGRIP)
    Ret = Api_ReleaseDC(GethWnd, hDC)
End Sub

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