- ベストアンサー
アプリ終了時にタスクトレイからアイコンを消すには?
以下を参考にタスクトレイにアイコンを追加するようにしました。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html しかしながら、プログラムを終了させてもタスクトレイにアイコンが残っており、マウスポインタをアイコンに近づけるとようやくアイコンが消えます。 一般的なアプリのようにプログラム終了時に即アイコンが消えるようにするにはどうすれば良いのですか? <環境> WIN98 VC++6.0 MFC
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1.呼ばれてない 2.呼ぶタイミングが悪い では? 呼ばれていないについては、デバッグすればわかるでしょう。 呼ぶタイミングが悪いについては、 CDialog::OnDestroy(); を呼ぶ前にAPIをコールしてみるとか。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>そこで以下のように終了まえに追加することでうまく行きましたが、これで良かったのかな? >::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon ); >PostMessage( WM_CLOSE, 0, 0L); これでもいいですけど、通常はOnCloseの中で 終了の確認メッセージを出すパターンが多いと思うので、 そんなつくりにした場合、続行したときでも 消えちゃいますよね。 なんで、Postする前よりは、OnCloseの中でしょう。 >ちなみにtaka_tetsuさんは、ここ以外のQ&Aでも回答されていますか? してないですよ。
お礼
回答ありがとうございます。 >なんで、Postする前よりは、OnCloseの中でしょう。 分かりました。
- neKo_deux
- ベストアンサー率44% (5541/12319)
サンプル |::Shell_NotifyIcon( NIM_ADD, &m_stNotifyIcon ); となっているので、終了処理で ::Shell_NotifyIcon(NIM_DELETE, &m_stNotifyIcon) を行えば良いハズです。
お礼
回答ありがとう御座います。 参考にしたサイトにも void CChildDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: この位置にメッセージ ハンドラ用のコードを追加してください ::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon ); } と書いて有ったのでそうしましたが、質問と同じ現象が出てアイコンがすぐに消えません。 再度アドバイスをお願いいたします。
お礼
お久しぶりです。 呼ばれていませんでした。 そこで以下のように終了まえに追加することでうまく行きましたが、これで良かったのかな? ::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon ); PostMessage( WM_CLOSE, 0, 0L); PS ちなみにtaka_tetsuさんは、ここ以外のQ&Aでも回答されていますか?