サイズグリップの作成(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