フォームを最前面に(U) <TOP>
SetWindowPos APIを使ってフォームを最前面に表示
'================================================================
'= フォームを最前面に(U・V)
'================================================================
#include "Windows.bi"
' 指定のウインドウのサイズ・位置・Zオーダーを設定する
Declare Function API_SETWINDOWPOS& Lib "user32" Alias "SetWindowPos" (ByVal HWND&, ByVal HWNDINSERTAFTER&, ByVal X&, ByVal Y&, ByVal CX&, ByVal CY&, ByVal WFLAGS&)
#define HWND_TOPMOST -1 'ウインドウをウインドウリストの一番上に配置
#define SWP_NOSIZE &H1 'ウインドウの現在のサイズを保持
#define SWP_NOMOVE &H2 'ウインドウの現在位置を保持
'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
Var RES As Long
' 現在の位置とサイズでウインドウリストの一番上に配置
RES = API_SETWINDOWPOS(MAINFORM.GETHWND, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End
フォームを最前面に(V) <TOP>
APIを使ってフォームを最前面に表示 SetWindowPos
Aと同じですが、実行ボタンをクリックするとフォームが左上から中央に向かって移動します。
移動中に、他のウィンドウを被せた場合フォームが最前面になるかどうかの確認をしています。それだけ・・(--;)
'================================================================
'= フォームを最前面に(V)
'================================================================ #include "Windows.bi" '指定のウインドウのサイズ・位置・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_TOP 0 'Zオーダーのトップ #define HWND_TOPMOST -1 'ウインドウをウインドウリストの一番上に配置 #define SWP_NOSIZE &H1 'ウインドウの現在のサイズを保持 #define SWP_NOMOVE &H2 'ウインドウの現在位置を保持 Var Shared Timer1 As Object Timer1.Attach GetDlgItem("Timer1") Var Shared cnt As Long '================================================================
'=
'================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Timer1.SetInterval 10 Timer1.Enable 0 End Sub '================================================================
'=
'================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Timer1.Enable -1 End Sub '================================================================
'=
'================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() Var Ret As Long cnt = cnt + 1 If cnt < 30 Then Ret = Api_SetWindowPos(GethWnd, HWND_TOPMOST, cnt * 10, cnt * 10, 0, 0, SWP_SHOWWINDOW Or SWP_NOSIZE) Else Ret = Api_SetWindowPos(GethWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOSIZE) Timer1.Enable 0 cnt = 0 End If End Sub '================================================================
'=
'================================================================ While 1 WaitEvent Wend Stop End