• ベストアンサー

アプリ終了時にタスクトレイからアイコンを消すには?

以下を参考にタスクトレイにアイコンを追加するようにしました。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html しかしながら、プログラムを終了させてもタスクトレイにアイコンが残っており、マウスポインタをアイコンに近づけるとようやくアイコンが消えます。 一般的なアプリのようにプログラム終了時に即アイコンが消えるようにするにはどうすれば良いのですか? <環境> WIN98 VC++6.0 MFC 

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

1.呼ばれてない 2.呼ぶタイミングが悪い では? 呼ばれていないについては、デバッグすればわかるでしょう。 呼ぶタイミングが悪いについては、 CDialog::OnDestroy(); を呼ぶ前にAPIをコールしてみるとか。

VitaminBB
質問者

お礼

お久しぶりです。 呼ばれていませんでした。 そこで以下のように終了まえに追加することでうまく行きましたが、これで良かったのかな? ::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon ); PostMessage( WM_CLOSE, 0, 0L); PS ちなみにtaka_tetsuさんは、ここ以外のQ&Aでも回答されていますか?

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>そこで以下のように終了まえに追加することでうまく行きましたが、これで良かったのかな? >::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon ); >PostMessage( WM_CLOSE, 0, 0L); これでもいいですけど、通常はOnCloseの中で 終了の確認メッセージを出すパターンが多いと思うので、 そんなつくりにした場合、続行したときでも 消えちゃいますよね。 なんで、Postする前よりは、OnCloseの中でしょう。 >ちなみにtaka_tetsuさんは、ここ以外のQ&Aでも回答されていますか? してないですよ。

VitaminBB
質問者

お礼

回答ありがとうございます。 >なんで、Postする前よりは、OnCloseの中でしょう。 分かりました。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

サンプル |::Shell_NotifyIcon( NIM_ADD, &m_stNotifyIcon ); となっているので、終了処理で ::Shell_NotifyIcon(NIM_DELETE, &m_stNotifyIcon) を行えば良いハズです。

VitaminBB
質問者

お礼

回答ありがとう御座います。 参考にしたサイトにも void CChildDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: この位置にメッセージ ハンドラ用のコードを追加してください ::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon ); } と書いて有ったのでそうしましたが、質問と同じ現象が出てアイコンがすぐに消えません。 再度アドバイスをお願いいたします。

関連するQ&A