下記の用にエクスプローラを起動してから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以前の親フォームにフォーカスが移ってしまい都合が悪いのです。
問題、原因、解決方法がお分かりになる方、教えていただけるでしょうか。
宜しくお願いします。
フォームをUnloadしてもTerminateされていないので2回目のShowでは
Initializeイベントは発生しません。
フォームのLoadイベントに記述してみて下さい。
ばっちりです!
有難うございました。
ツイート | ![]() |