ウインドウを常に手前には、SetWindowPos関数を使用します。
この関数は、ウィンドウにおいて、そのサイズ,位置,Z順位を変更する機能を 持ちます。Z順位というのは、ウインドウ同士の重なり順位のことです。 スクリーンはX,Y座標で表されますが、これに奥行きを加えたもの、それがZの ことです。つまり、ウインドウを常に手前にするというのは、Z順位を 常にトップにするということになります。
(SetWindowPos 等の関数の使用方法)
この解説のサンプルでは、CommandButtonをクリックすることで、ウインドウを 常に手前に表示します。
フォームのGeneralセクションに次の宣言コードを追加して下さい。
次に、フォームにCommandButtonを配置し、 Command1_Click()プロシージャに次のコードを追加します
'APIの宣言 Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd _ As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _ ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long 'hwndInsertAfter values Private Const HWND_TOPMOST = -1& 'ウィンドウが常に手前に表示される 'xは、ウインドウの左上隅の新しい座標(ピクセル) 'yは、ウインドウの左上隅の新しい座標(ピクセル) 'cxは、ウインドウの新しい幅(ピクセル) 'cyは、ウインドウの新しい高さ(ピクセル) ' SetWindowPos Flags Private Const SWP_NOSIZE = &H1 '現在のサイズを維持(cxとcyを無視) Private Const SWP_NOMOVE = &H2 '現在の位置を維持します(xとyを無視)
これでCommand1をクリックすると、そのウインドウが常に手前に表示されます。 何らかのZ順位を持つウインドウやコントロールを手前に表示させたい だけなら、ZOrderメソッドでも可能です。
Private Sub Command1_Click() SetWindowPos Me.hWnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, _ SWP_NOMOVE Or SWP_NOSIZE End Sub
Object.ZOrder 0
SetWindowPosでは、ウインドウの新しい位置や大きさを指定できたり、 パラメータによってそのウインドウの性質も変更できるので非常に便利な関数です。