フォームのフォーカスを変えさせない方法

解決


ディスト  2004-03-09 19:06:19  No: 112276  IP: [192.*.*.*]

Private Sub Form1_lostfocus()
    Form1.SetFocus
End Sub

って昔やってフォーカスを他のフォームに移せないような
ふうに出来たような記憶があったのですが
やってみたらできなかったので、わからなくなってしまいました。

単純にメッセージボックスのでっかいのみたいなの(デザイン的な制約で作りたい)を作りたいのですが
yes  NOを選択する上で、別のフォームでの状態を表示した上で
選択されるまで他のフォームにフォーカスが移らないようにしたいのです

どのようにすれば良いでしょうか?

編集 削除
長谷川  2004-03-09 19:16:55  No: 112277  IP: [192.*.*.*]

モーダルで呼び出すってのではだめなのでしょうか?

編集 削除
へいぽ  2004-03-09 19:17:32  No: 112278  IP: [192.*.*.*]

他のフォームって、
同一プロジェクト内( exe 内)の
フォームですよね?

私の環境では、
フォーカスを移動できませんでしたけど。

編集 削除
ねろ  URL  2004-03-09 21:17:07  No: 112279  IP: [192.*.*.*]

フォームを常に手前に表示したい時は、APIのSetWindowPosを使います

Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const HWND_TOPMOST = -1
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 Sub Form_Load()
  SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
End Sub
とすれば他のフォームの影に隠れる事はありません。

編集 削除
ディスト  2004-03-10 17:50:21  No: 112280  IP: [192.*.*.*]

長谷川さん、へいぽさん、ねろさん
非常に参考になるご意見ありがとうございました、おかげで解決しました

おかげで非常に助かりました
本当にありがとうございます

編集 削除