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

リンク元へ戻ります。 フォーム関係のメニュー
1.表示しているフォームを一度に閉じる
2.フォームの背景にグラデーションを描く
3.メニューの下に3Dラインを引く
4.アクティブなウィンドウだけをタスクバーに表示する
5. フォームを常に手前に表示する
6.フォームの最大化・最小化を取得及び設定・画面の中央に表示する
7.システムメニュー(フォームの左上)を操作する
8.タイトルバーなしウィンドウの作成
9.円形・多角形のフォーム及びコントロールを作成する
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載のフォームに関するサンプル


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オーダーを設定する  ウィンドウをウィンドウリストの一番上に配置する  指定のウィンドウを常に手前に表示する




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