12.常にフォームを手前に表示させる方法
< 使用用途 >
フォームを常に表示させる事が出来きます。
今回のサンプルソースをダウンロードする方は下記の「ダウンロード」を!
=> ダウンロード・・・ 下に書いてあるサンプルソースと同じです
< 説明 >
API関数のSetWindowPosを使用します。
サンプルではコマンドボタンを押したときにフォームが常に表示される、表示されない(元の状態)処理です。
SetWindowPos=>Windowの位置やサイズ、表示を設定するAPI関数です
<引数>
hWnd :ウィンドウのハンドル
hWndInsertAfter :「手前にセット」、「後ろにセット」、「解除」等の処理をいれる変数
X :新しいX座標
Y :新しいY座標
cx :新しいウィンドウの幅
cy :新しいウィンドウの高さ
wFlags :「表示する」、「位置を設定しない」、「サイズを設定しない」をいれる変数
@戻り値@
1で成功、失敗で0
< SAMPLE >
'標準モジュールに宣言して下さいr
Public 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
’手前に表示するかしないかのフラグ
Public SHOKITI As Integer
’hWndInsertAfter の設定
Public Const TEMAE_SET = 0 '手前にセット
Public Const USIRO_SET = 1 '後ろにセット
Public Const TUNENI_TEMAE_SET = -1 '常に手前にセット
Public Const KAIJYO = -2 '解除
’wFlags の設定
Public Const HYOUZI_SURU = &H40 '表示する
Public Const NO_SIZE = &H1 'サイズを設定しない
Public Const NO_MOVE = &H2 '位置を設定しない
'コマンドボタンの処理
Private Sub Command1_Click()
’FORMHANDORUはウィンドウハンドルを入れる変数です
Dim FORMHANDORU As Long
’ウィンドウハンドルの取得
FORMHANDORU = Form1.hwnd
If SHOKITI = 0 Then
'「常に手前に表示」を解除
MODORITI = SetWindowPos(FORMHANDORU, KAIJYO, 0, 0, 0,0,
HYOUZI_SURU Or NO_MOVE Or NO_SIZE)
SHOKITI = 1
Command1.Caption = "「常に手前に表示」する"
Form1.Caption = "現在は「ノーマル」状態です"
ElseIf SHOKITI = 1 Then
'「常に手前に表示」をセット
MODORITI = SetWindowPos(FORMHANDORU, TUNENI_TEMAE_SET, 0, 0, 0,
0, HYOUZI_SURU Or NO_MOVE Or NO_SIZE)
SHOKITI = 0
Command1.Caption = "「常に手前に表示を解除」する"
Form1.Caption = "現在は「常に手前に表示」状態です"
End If
End Sub
'フォームのロード時の処理
Private Sub Form_Load()
'初期設定(フラグ)
SHOKITI = 1
End Sub