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

解決


ディスト  2004-03-10 04:06:19  No: 112276

Private Sub Form1_lostfocus()
    Form1.SetFocus
End Sub

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

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

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


長谷川  2004-03-10 04:16:55  No: 112277

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


へいぽ  2004-03-10 04:17:32  No: 112278

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

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


ねろ  URL  2004-03-10 06:17:07  No: 112279

フォームを常に手前に表示したい時は、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-11 02:50:21  No: 112280

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加