エディットボックスのサイズ変更 <TOP>
エディとボックスのサイズを変更してみます。
GetWindowLong 指定されたウィンドウに関しての情報を取得
SetWindowLong 指定されたウィンドウの属性を変更
SetWindowPos ウィンドウのサイズ、位置、および Z オーダーを設定
左:起動時はサイズ変更不可 右:サイズ変更可をクリックしサイズ変更ハンドルをドラッグします。
'================================================================ '= エディットボックスのサイズ変更 '= (ResizeEditBox.bas)) '================================================================ #include "Windows.bi" #define SWP_DRAWFRAME &H20 '再描画のときウインドウを囲む枠も描画 #define SWP_NOMOVE &H2 'ウインドウの現在位置を保持する #define SWP_NOSIZE &H1 'ウインドウの現在のサイズを保持する #define SWP_NOZORDER &H4 'ウインドウリスト内での現在位置を保持する #define WS_THICKFRAME &H40000 'サイズ変更境界を持つウィンドウを作成する #define GWL_STYLE -16 'アプリケーションのインスタンスハンドル ' 指定されたウィンドウに関しての情報を取得。また、拡張ウィンドウメモリから、指定されたオフセットにある32ビット値を取得することもできる Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) ' 指定されたウィンドウの属性を変更。また、拡張ウィンドウメモリの指定されたオフセットの32ビット値を書き換えることができる Declare Function Api_SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) ' ウィンドウのサイズ、位置、および Z オーダーを設定。(ウィンドウの重なり順のことを「Zオーダー」といいZオーダーのトップに置くと一番手前に表示される) Declare Function Api_SetWindowPos& Lib "user32" Alias "SetWindowPos" (ByVal hWnd&, ByVal hWndInsertAfter&, ByVal X&, ByVal Y&, ByVal CX&, ByVal CY&, ByVal uFlags&) Var Shared Edit1 As Object Var Shared Text1 As Object Var Shared Text2 As Object Var Shared Radio1 As Object Var Shared Radio2 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 12 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14 Radio1.Attach GetDlgItem("Radio1") : Radio1.SetFontSize 14 Radio2.Attach GetDlgItem("Radio2") : Radio2.SetFontSize 14 Var Shared iniStyle As Long '================================================================ '= '================================================================ Declare Sub initStyle_DSP edecl () Sub initStyle_DSP() If iniStyle Then Ret = Api_SetWindowLong(Edit1.GethWnd, GWL_STYLE, iniStyle) Ret = Api_SetWindowPos(Edit1.GethWnd, GethWnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME) End If End Sub '================================================================ '= '================================================================ Declare Sub Size_DSP edecl () Sub Size_DSP() Text1.SetWindowText "EditBoxWidth :" & Str$(Edit1.GetWidth) Text2.SetWindowText "EditBoxHeight:" & Str$(Edit1.GetHeight) End Sub '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() iniStyle = Api_GetWindowLong(Edit1.GethWnd, GWL_STYLE) initStyle_DSP Size_DSP End Sub '================================================================ '= '================================================================ Declare Sub Radio1_on edecl () Sub Radio1_on() Var newStyle As Long newStyle = Api_GetWindowLong(Edit1.GethWnd, GWL_STYLE) newStyle = newStyle Or WS_THICKFRAME If newStyle Then Ret = Api_SetWindowLong(Edit1.GethWnd, GWL_STYLE, newStyle) Ret = Api_SetWindowPos(Edit1.GethWnd, GethWnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME) End If Size_DSP End Sub '================================================================ '= '================================================================ Declare Sub Radio2_on edecl () Sub Radio2_on() initStyle_DSP Size_DSP End Sub '================================================================ '= '================================================================ Declare Sub MainForm_MouseMove edecl () Sub MainForm_MouseMove() Size_DSP End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End