フォームを最前面に(T) <TOP>
SetWindowPos 指定のウィンドウサイズ・位置・Zオーダー(ウィンドウの重なる順)を設定する
ノーマル状態
起動状態
他のアプリケーションと重なった場合は背面に
最前面状態
初期状態
他のアプリケーションと重なった場合でも最前面に
'================================================================
'= フォームを最前面に
'=
(SetWindowPos.bas)
'================================================================
#include "Windows.bi"
' ウィンドウのサイズ、位置、および 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&)
#define HWND_BOTTOM 1 'ウィンドウを最背面に配置
#define HWND_NOTOPMOST (-2) 'ウィンドウを常に最前面に配置(他のウィンドウがHWND_TOPMOSTに配置されている場合はその配下)
#define HWND_TOP 0 'ウィンドウを最前面に配置
#define HWND_TOPMOST (-1) 'ウィンドウを常に最前面に配置
#define SWP_SHOWWINDOW &H40 'ウインドウを表示する
#define SWP_NOSIZE &H1 'ウインドウの現在のサイズを保持する
#define SWP_NOMOVE &H2 'ウインドウの現在位置を保持する
Var Shared Button1 As Object
Button1.Attach GetDlgItem("Button1")
Declare Sub MainForm_Start edecl ()
Declare Sub Form_State edecl ()
Var Shared FLG As Byte
'================================================================
'=
'================================================================
Sub MainForm_Start()
FLG = 0
Form_State
End Sub
'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
FLG = Not FLG
Form_State
End Sub
'================================================================
'=
'================================================================
Sub Form_State()
Var Ret As Long
If FLG = 0 Then
Ret = Api_SetWindowPos(GethWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
Button1.SetWindowText "「常に手前に表示」する"
SetWindowText "現在は「ノーマル」状態です"
Else
Ret = Api_SetWindowPos(GethWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
Button1.SetWindowText "「常に手前に表示を解除」する"
SetWindowText "現在は「常に手前に表示」状態です"
End If
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End