サイズグリップを作成(T) <TOP>
サイズグリップを(擬似的に)作成してみます。
ReleaseCapture マウスのキャプチャを解放
SendMessage ウィンドウにメッセージを送信
GetSystemMetrics 表示要素の寸法とシステム構成の設定を取得
フォント名「Marlett」で小文字の「o」を書き込んだテキストボックス(境界線なし)を、常時フォームの右下に固定しています。
参考
Marlett について
http://www.itmedia.co.jp/help/tips/windows/w0288.html
'================================================================
'= サイズグリップを(擬似的に)作成
'= (SimulateSizeGrip.bas)
'================================================================
#include "Windows.bi"
' マウスのキャプチャを解放
Declare Function Api_ReleaseCapture& Lib "user32" Alias "ReleaseCapture" ()
' ウィンドウにメッセージを送信
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)
' 表示要素の寸法とシステム構成の設定を取得
Declare Function Api_GetSystemMetrics& Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex&)
#define WM_NCLBUTTONDOWN &HA1 '非クライアント領域で左マウスボタンを押す
#define HTBOTTOMRIGHT 17 'ウィンドウ境界の右下隅
#define SM_CXFRAME 32 'サイズ可変ウィンドウの境界線の、X方向の幅
#define SM_CYFRAME 33 ' 〃Y方向の幅
#define SM_CYSIZE 31 'タイトルバー内のビットマップの高さ
#define SM_CYBORDER 6 'サイズ固定ウィンドウの境界線のY方向の幅
Var Shared Text1 As Object
Var Shared zX As Integer
Var Shared zY As Integer
'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
Var fs As Integer
fs = 14
Text1.Attach GetDlgItem("Text1")
Text1.SetFontSize fs
Text1.SetWindowSize fs, fs
Text1.SetFontName "Marlett"
Text1.SetWindowText "o"
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_MouseDown edecl (ByVal Button%, ByVal Shift%, ByVal SX!, ByVal SY!)
Sub Mainform_MouseDown(ByVal Button%, ByVal Shift%, ByVal SX!, ByVal SY!)
Var Ret As Long
If Button% = 1 Then
Ret = Api_ReleaseCapture()
Ret = Api_SendMessage(Text1.GethWnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0)
End If
End Sub
'================================================================
'=
'================================================================
Declare Sub MainForm_Resize edecl ()
Sub MainForm_Resize()
Text1.MoveWindow (Getwidth - Text1.GetWidth) - zX, GetHeight - Text1.GetHeight - zY
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End