アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下を参考にタスクトレイにアイコンを追加するようにしました。

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_T …

しかしながら、プログラムを終了させてもタスクトレイにアイコンが残っており、マウスポインタをアイコンに近づけるとようやくアイコンが消えます。

一般的なアプリのようにプログラム終了時に即アイコンが消えるようにするにはどうすれば良いのですか?

<環境> WIN98 VC++6.0 MFC 

A 回答 (3件)

1.呼ばれてない


2.呼ぶタイミングが悪い

では?

呼ばれていないについては、デバッグすればわかるでしょう。
呼ぶタイミングが悪いについては、
CDialog::OnDestroy();
を呼ぶ前にAPIをコールしてみるとか。
    • good
    • 0
この回答へのお礼

お久しぶりです。
呼ばれていませんでした。

そこで以下のように終了まえに追加することでうまく行きましたが、これで良かったのかな?
::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon );
PostMessage( WM_CLOSE, 0, 0L);

PS
ちなみにtaka_tetsuさんは、ここ以外のQ&Aでも回答されていますか?

お礼日時:2003/11/17 18:45

>そこで以下のように終了まえに追加することでうまく行きましたが、これで良かったのかな?


>::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon );
>PostMessage( WM_CLOSE, 0, 0L);

これでもいいですけど、通常はOnCloseの中で
終了の確認メッセージを出すパターンが多いと思うので、
そんなつくりにした場合、続行したときでも
消えちゃいますよね。

なんで、Postする前よりは、OnCloseの中でしょう。

>ちなみにtaka_tetsuさんは、ここ以外のQ&Aでも回答されていますか?

してないですよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>なんで、Postする前よりは、OnCloseの中でしょう。
分かりました。

お礼日時:2003/11/19 19:34

サンプル


|::Shell_NotifyIcon( NIM_ADD, &m_stNotifyIcon );

となっているので、終了処理で

::Shell_NotifyIcon(NIM_DELETE, &m_stNotifyIcon)

を行えば良いハズです。
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。

参考にしたサイトにも
void CChildDlg::OnDestroy()
{
CDialog::OnDestroy();

// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
::Shell_NotifyIcon( NIM_DELETE, &m_stNotifyIcon );

}
と書いて有ったのでそうしましたが、質問と同じ現象が出てアイコンがすぐに消えません。

再度アドバイスをお願いいたします。

お礼日時:2003/11/17 15:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!