プログラムが終了しなくて困っています。
(Formは1〜4の4個、Moduleは1個です。)
Form1で・・・
Private Sub CmdEnd_Click()
Dim ans%
ans = MsgBox("プログラムを終了しますか?", vbYesNo + vbQuestion, "終了")
Select Case ans
Case vbYes
Unload Form2
Unload Form3
Unload Form4
Unload Me '←←←☆
Case vbNo
End Select
End Sub
としているのですが、
プログラムをスタートして何も実行せずすぐに
Form1で終了(CmdEndをクリック)した場合は
ちゃんと終了できるのですが、
すべてのFormを動かしたあとになると
なぜか終了しません。
(でも画面は全部消えるのです)
exeを作って動かすと、プログラムが画面上から消えた後も
タスクマネージャで確認すると残っているのです。
何が起きているのかを確認(デバック)したいのですが、
どうしたら、いいのでしょうか?
ブレークポイントを"☆"のところに置いてみたりしたのですが
よくわかりません。
教えてください。
よろしくお願いします。
これだけだとよく分かりませんが(^^;)
フォームがちゃんとロード、アンロードされてるか
どうかに疑問が残るなら、全てのフォームに
[VB6.0]
Private Sub Form_Load()
Debug.Print Me.Name & " Load: " & Me.hWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
Debug.Print Me.Name & " Unload: " & Me.hWnd
End Sub
って書いてデバッグすればいいんじゃないですか?。
あげれらたソースだけではなんともいえないですね。
画面以外に何かメモリに残っていませんか?
たとえば、モジュール(またはパブリック)レベルの変数にセットされたオブジェクトを開放していないだとか。
あとは
http://www.gj.il24.net/~nakasima/
の「プログラムがきちんと終了しない理由」を参考にしてみるのもいいかもしれません
うにぃさんのリンク先を見ると
Form_Initialize と Form_Terminate も
監視したほうが良いらしいので追加しておいて下さい。
うにぃさん、特攻隊長まるるうさん
ありがとうございました。
色々とご意見を参考にやってみたところ、
無事メモリを解放することができました。
また『プログラマのメモ帳』も大変役立ちました。
(でも現時点では完全には理解できませんでしたが・・)
助かりました。
本当にありがとうございました。