ユーザーフォームの最前面表示について

解決


うるとらまん  2005-06-09 20:09:45  No: 90322

下記の用にエクスプローラを起動してからForm1をモーダルで最前面表示させています。

Call Shell("explorer.exe", vbNormalNoFocus)
Form1.Show vbModal

最前面表示はForm1のコードに下記の通りSetWindowPosで行っています。

Private Sub Form1_Initialize()
    Cll SetWindowPos(Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
                     SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE)
End Sub

1回目はうまくいきますが、Form1をUnloadしたあとは、Form1が最前面表示されません。
Form1.Show でvbModalをとってしまえば2回目以降も最前面表示が効きますが、それではForm1以前の親フォームにフォーカスが移ってしまい都合が悪いのです。

問題、原因、解決方法がお分かりになる方、教えていただけるでしょうか。
宜しくお願いします。


0123  2005-06-09 23:04:10  No: 90323

フォームをUnloadしてもTerminateされていないので2回目のShowでは
Initializeイベントは発生しません。
フォームのLoadイベントに記述してみて下さい。


うるとらまん  2005-06-09 23:19:38  No: 90324

ばっちりです!

有難うございました。


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

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






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