ウィンドウを常に手前に表示する
ウィンドウを常に手前に表示するテクニックです。
SetWindowPos関数を使用して実現できます。
サンプル(32bit) ダウンロード
'Windowの生成API Private Declare Sub 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) Private Const HWND_TOPMOST = -1 '常に手前に表示 Private Const SWP_SHOWWINDOW = &H40 'Windowの表示 Private Const SWP_NOACTIVATE = &H10 'アクティブにしない Private Const SWP_NOMOVE = &H2 '移動しない Private Const SWP_NOSIZE = &H1 'サイズ変更しない Private Sub Form_Activate() Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE) End Sub
サンプル解説
フォームがアクティブになった時に、SetWindowPos関数でフォームを常に手前に表示します。
(ロードイベントだと、他のウィンドによって「常に手前に表示状態」が破棄される可能性があるのでアクティブイベントで再度「常に手前に表示状態」にしています)引数は次の通りです。
(引数の名前は、Declare Functionで指定したものです)
メンバー I/O 説明 hwnd In 表示するウィンドウのハンドル hWndInsertAfter In Zオーダー
サンプルでは、HWND_TOPMOSTを指定して常に手前に表示にしています。x In 表示位置のX座標
サンプルは、動作フラグにSWP_NOMOVEを指定しているため無視されます。y In 表示位置のY座標
サンプルは、動作フラグにSWP_NOMOVEを指定しているため無視されます。cx In ウィンドウの幅
サンプルは、動作フラグにSWP_NOSIZEを指定しているため無視されます。cy In ウィンドウの高さ
サンプルは、動作フラグにSWP_NOSIZEを指定しているため無視されます。wFlags In 動作フラグ
サンプルではウィンドウを表示して、サイズ・位置を変更しないようにしています。
座標情報はすべてピクセルです。
[ Window Close ]