投稿時間: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」にしているとどうしてもスルーしてしまうものなのでしょうか??
|