投稿日 | : 2003/09/10(Wed) 15:06 |
投稿者 | : tak |
Eメール | : |
URL | : |
タイトル | : form.show vbmodal 文法の仕様・・?? |
こんにちは。当方WIN2000Pro_SP4 + VB6.0_SP5で開発している者です。
現在、タスクトレイ常駐型ツールを作っています。
「スタートアップ」に登録しておき、パソコンが起動したらタスクトレイにぴょこんとアイコンが
表示されるようにしています。(ここまではなんとか作りこみました。)
以下にソースを抜粋します。なお、スタートアップは標準モジュールの「main」プロシージャです。
フォームが閉じられた後、常にラベル「ExitProc」にて終了処理を行おうとしています。
標準モジュール
Sub main()
'ここでINIファイルの内容を構造体に退避する処理を行っています。
Load Form1
Form1.Show vbModal
GoTo ExitProc
ExitProc:
'@
'ここでAPIの「ZeroMemory」にてINIファイル退避構造体をクリアしています。
End Sub
Private Sub Form_Activate()
'フォームがアクティブになったら常にテキストボックスにフォーカスを当てます。
Text1.SetFocus
'タスクトレイにアイコンを追加し、フォームを隠します。
Call TaskTrayAddIcon(Me.hwnd, Me.Icon, Me.Caption)
'A
Me.Visible = False
End Sub
上記の場合、Form1をモーダルで「Show」メソッドを走らせて、Form1の「Activate」イベントが走ります。
そこまでは意図通りなのですが、そのまま、「GoTo ExitProc」→「@」ステップに行ってしまいます。
本来なら、フォーム上の「×」ボタンなり「終了」ボタンを押下した時のみ「GoTo ExitProc」ステップに
行くようになると思ったんですが、どうも上手くいきませんでした・・。
この後、タスクトレイからツールを起動してもINIファイルの内容が構造体に退避されていませんでした・・。
(@ステップが処理されているのですから当然なのですよね・・。)
ちなみに「A」ステップにて「Me.Visible = True」とする事で、ユーザが終了しようとした時にのみ終了処理を
走らせるという流れは上手くいきました。
「Me.Visible = False」にしているとどうしてもスルーしてしまうものなのでしょうか??