ウィンドウのボーダースタイルを変更 <TOP>
ウィンドウ(Form)のボーダースタイルを変更します。
GetWindowLong 指定されたウィンドウに対しての情報を取得
SetWindowLong 指定されたウィンドウの属性を変更
「変更」ボタンをクリックする毎に、BorderStyleを変更しています。
'================================================================ '= ウィンドウのボーダースタイルを変更 '= (ChangeBorderStyle.bas) '================================================================ #include "Windows.bi" #define GWL_STYLE -16 'アプリケーションのインスタンスハンドル #define GWL_EXSTYLE -20 '拡張ウィンドウスタイル #define WS_THICKFRAME &H40000 'サイズ変更境界を持つウィンドウを作成する #define WS_MAXIMIZEBOX &H10000 '最大化ボタンを持つウィンドウを作成する #define WS_MINIMIZEBOX &H20000 '最小化ボタンを持つウィンドウを作成する #define WS_EX_TOOLWINDOW &H80 'ツールウィンドウを作成 ' 指定されたウィンドウに関しての情報を取得。また、拡張ウィンドウメモリから、指定されたオフセットにある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&) #define SWP_NOSIZE &H1 'ウインドウの現在のサイズを保持する #define SWP_NOMOVE &H2 'ウインドウの現在位置を保持する #define SWP_NOZORDER &H4 'ウインドウリスト内での現在位置を保持する #define SWP_NOREDRAW &H8 'ウインドウを自動的に再描画しない #define SWP_NOACTIVATE &H10 'ウインドウをアクティブにしない #define SWP_FRAMECHANGED &H20 'ウインドウのサイズ変更中でなくてもWM_NCCALCSIZEを送る #define SWP_SHOWWINDOW &H40 'ウインドウを表示する #define SWP_HIDEWINDOW &H80 'ウインドウを隠す #define SWP_NOCOPYBITS &H100 'クライアント領域の内容をクリアする #define SWP_NOOWNERZORDER &H200 'オーナーウインドウのZオーダーは変えない #define SWP_DRAWFRAME &H20 '再描画のときウインドウを囲む枠も描画 #define SWP_NOREPOSITION SWP_NOOWNERZORDER #define HWND_TOP 0 'ウインドウをZオーダーの一番上に配置する #define HWND_BOTTOM 1 'ウインドウをウインドウリストの一番下に配置する #define HWND_TOPMOST -1 'ウインドウをウインドウリストの一番上に配置する #define HWND_NOTOPMOST -2 'ウインドウをウインドウリストの一番上に配置する ' ウィンドウのサイズ、位置、および 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 Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared FLG As Integer '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Style1 As Integer Var Style2 As Integer Var Ret As Long FLG = FLG + 1 : If FLG > 2 Then FLG = 0 Select Case FLG Case 0 Style1 = True Case 1 Style2 = True Case Else Style1 = True Style2 = True End Select If Style1 Then Ret = Api_SetWindowLong(GethWnd, GWL_STYLE, Api_GetWindowLong(GethWnd, GWL_STYLE) xor (WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)) End If If Style2 Then Ret = Api_SetWindowLong(GethWnd, GWL_EXSTYLE, Api_GetWindowLong(GethWnd, GWL_EXSTYLE) xor WS_EX_TOOLWINDOW) End If Ret = Api_SetWindowPos(GethWnd, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End