5.フォームを常に手前に表示する |
1.フォームを常に手前に表示する(Win32API を使った方法) 2.同一プロジェクト内でフォームを前面に表示する場合 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定: 参照設定方法参照 使用 API:SetWindowPos その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。 :
|
1.フォームを常に手前に表示する(Win32API を使った方法) |
Option Explicit 'SampleNo:009 2002.04.17 @ 2006.12.28 '指定のウィンドウのサイズ・位置・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. |
検索キーワード及びサンプルコードの別名(機能名) |
指定のウィンドウのサイズ・位置・Zオーダーを設定する ウィンドウをウィンドウリストの一番上に配置する 指定のウィンドウを常に手前に表示する |