エディットボックスのサイズ変更          <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