VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 アプリケーション(自・他)関係のメニュー
1.VB上から他の実行可能プログラム(EXE)を起動する
2.指定のウィンドウを常に手前に表示する(フォームを最前面に表示)
3.関連付けられたアプリケーションでファイルを開く
4.他のアプリのウィンドウを操作(最小化・元のサイズ・終了他)する
5.他のEXEのハンドルを取得しVBから終了する
6.Shell関数で起動したプログラムの終了を待つ
7.アクティブウィンドウのキャプションタイトルを取得する
8.アクティブウィンドウにキーストロークを渡す
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


2.指定のウィンドウを常に手前に表示する(SampleNo.009)
1.フォームを常に手前に表示する(フォームを最前面に表示)
2.同一プロジェクト内でのフォームを前面に表示する
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:追加なし
使用 API:
SetWindowPos
その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.フォームを常に手前に表示する(009)   2002.04.17   (1) 2006.12.28

Option Explicit

'指定のウィンドウのサイズ・位置・Zオーダーを設定する(P100)
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

'ウィンドウをウィンドウリストの一番上に配置する
Private Const HWND_TOPMOST = (-1)
'ウィンドウの現在のサイズを保持する
Private Const SWP_NOSIZE = &H1&
'ウィンドウの現在位置を保持する
Private Const SWP_NOMOVE = &H2&

Private Sub Form_Load()
'これでこのフォームが常に一番手前に表示されます。
  Dim retValue As Long
  '現在の位置とサイズでウィンドウリストの一番上に配置する
  retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub


参 考
hWndInsertAfteの値
ウィンドウのZオーダーの配置を示す定数の宣言
  ウィンドウをZオーダーの一番上に配置する
  Private Const HWND_TOP = 0
  ウィンドウをウィンドウリストの一番下に配置する
  Private Const HWND_BOTTOM = 1
  ウィンドウをウィンドウリストの一番上に配置する
  Private Const HWND_TOPMOST = (-1)
  ウィンドウをウィンドウリストの一番上(ただしほか のウィンドウが
  HWND_TOPMOSTに配置されている場合はそのすぐ下)に配置する
  Private Const HWND_NOTOPMOST = (-2)

wFlagsの引数のフラグ
  ウィンドウの現在のサイズを保持する
  Private Const SWP_NOSIZE = &H1&
  ウィンドウの現在位置を保持する
  Private Const SWP_NOMOVE = &H2&
  ウィンドウリスト内での現在位置を保持する
  Private Const SWP_NOZORDER = &H4&
  ウィンドウを自動的に再描画しない
  Private Const SWP_NOREDRAW = &H8&
  ウィンドウをアクティブにしない
  Private Const SWP_NOACTIVATE = &H10&
  ウィンドウのサイズ変更中でなくてもWM_NCCALCSIZEを送る
  Private Const SWP_FRAMECHANGED = &H20&
  ウィンドウを表示する
  Private Const SWP_SHOWWINDOW = &H40&
  ウィンドウを隠す
  Private Const SWP_HIDEWINDOW = &H80&
  クライアント領域の内容をクリアする
  Private Const SWP_NOCOPYBITS = &H100&
  オーナーウィンドウのZオーダーは変えない
  Private Const SWP_NOOWNERZORDER = &H200&
  再描画のときウィンドウを囲む枠も描画
  Private Const SWP_DRAWFRAME = &H20&
  SWP_NOOWNERZORDER と同じ
  Private Const SWP_NOREPOSITION =&h200&


これらの定数はAPIビューアのウィンドウからコピーして下さい。
 アドイン→APIビューア(初めてはアドインマネージャーから)→APIビューアが開いたら→ファイル→テキストファイルの読み込み→WINAPIのフォルダーを開く→Win32api.txtを開く

このページのトップへ移動します。 2.同一プロジェクト内でのフォームを前面に表示する
Show メソッドにオーナーフォームを指定することで簡単に実現できます。

通常、Show メソッドを使用する場合オーナーフォームを指定しないので、意外と知られていないテクニックのひとつです。

Form2.Show 1, Form1 のようにモーダルで指定すると Form2 が閉じられるまで Form1 にはフォーカスが移らず Form1 の前面にForm2 が表示されます。

これを利用して自作のインプットボックス等やメッセージボックスを作ったり、又モードレス(Form2.Show 0, Form1)で表示してメニューのフォームを作ったりが簡単にできます。

このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
フォームを常に手前に表示する  フォームを常に最前面に表示する ウィンドウを最前面に表示 VB6.0 フォームウィンドウ 前面 最前面 一番上 手前 常に全面 常に手前に Zオーダー




このページのトップへ移動します。