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

解決


うるとらまん  2005-06-09 11:09:45  No: 90322  IP: [192.*.*.*]

下記の用にエクスプローラを起動してから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 14:04:10  No: 90323  IP: [192.*.*.*]

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

編集 削除
うるとらまん  2005-06-09 14:19:38  No: 90324  IP: [192.*.*.*]

ばっちりです!

有難うございました。

編集 削除