• ベストアンサー

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

以下を参考にタスクトレイにアイコンを追加するようにしました。 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

  • タスクトレイのアイコンが消えてしまう。

    こんにちは。 今、タスクトレイに常駐するプログラムを作成しています。 プログラム起動するとすぐ、メインウインドウとタスクトレイにアイコンが 表示されます。 メインウインドウ右上の最小化ボタンまたは、終了ボタンを押すと メインウインドウが消えてタスクトレイのアイコンだけが残るように したいと考えています。 最小化ボタンの場合はWM_SIZEをキャッチして、ShowWindow(hwnd, SW_HIDE) で、メインウインドウだけ消え、タスクトレイのアイコンは残ります。 しかし、終了ボタンの場合は、WM_DESTROY をキャッチし、同じくShowWindow(hwnd, SW_HIDE) でメインウインドウを消しているのですが、メインウインドウだけでなく、 アイコンも消えてしまいます。アイコンを消さずに残すようにしたいのですが、 どうしたらよいでしょうか。WM_DESTROYでは、PostQuitMessage(0)はポストして おらず、最後にreturn 0;を返しています。 どうぞよろしくお願いします。 環境 BCC、WindowsXP、C言語、Win32 API

  • タスクトレイから出したメニューの実行について

    ここを参考に作りました。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html <仕様> メインフォームはタスクバーにアプリが表示されないようにするため、非表示にした。 メインフォームの代わりにモードレスダイアログを主ウィンドウとした。 ダイアログクラスの中に、タスクトレイにアイコンを表示してメニューを出すコードを記述した。 このような場合において、 メニューの中のID_Myxxxの実装をクラスウィザードを使って行うとき、 ダイアログクラス内に書くと問題ありませんが、 クラスウィザードを使ってクラス名でCMainFrameを選んでもオブジェクトIDにID_Myxxxが表示されるので、CMainFrameクラスに書いてみましたが実行されません。 どうしてこうなるのですか? ************************** 非常に分かりにくくて済みません。 簡単に書くと、 ダイアログクラスでメニューを表示した場合、 メニューの実装をダイアログクラスに書くと問題ないですが、CMainFrameクラスに書くと実行されません。 どうしてなのでしょうか?

  • タスクトレイの常駐解除後について

    VB6(SP6)にてタスクトレイに常駐するプログラムを作成しました。 そして、プログラムを終了するとき下記コードにて常駐を解除しています。 Private Sub Form_Unload(Cancel As Integer) 'タスクトレイのアイコンを消去 ingAPIReVal = Shell_NotifyIcon(NIM_DELETE, nidNoftyIconData) '終了 End End Sub プログラムは無事終了するのですが、タスクトレイにアイコンが残ってしまいます。 マウスをタスクトレイに近づけると消えるのですが... 極端な話 5回実行・終了を繰り返すと、同じアイコンが5個並び...マウスを近づけると一気に消えてしまいます。 プログラムの動作に問題はないのですが、あまり体裁が良いとは思えず どうにかならないかと質問させて頂きました。 対処方法をご存じの方、ご教授下さいm(__)m

  • タスクトレイに文字を表示するには

    よろしくお願い致します。 環境 WIN98 VC++6.0 MFC にて タスクトレイに文字を表示するにはどうすれば良いのでしょう? 現在::Shell_NotifyIcon( NIM_ADD, &m_stNotifyIcon );にてアイコンを表示することは出来ています。

  • タスクトレイにアイコンを追加したいのですが・・・

    ディスプレイ下部のタスクバーの右端にいくつかアイコンがあります。 タスクトレイと呼ぶのでしょうか(クイック起動バーのことではありません)・・・そのタスクトレイにあったsmart vision(TVを見るソフト)のアイコンがいつの間にか消えてしまいました。 そんなわけで、プログラムを起動するためには、「スタート」ボタンからたどってsmart visionを起動するしかない状態になっています。 プログラム(smart vision)のアイコンをタスクトレイに追加するにはどうしたら良いのでしょうか? ヘルプを見ても、どれが自分の質問に答えるものなのかがわからなくて困ってしまいます。 あまりに初心者の質問で申し訳ないのですが、どなたか知恵を貸して頂けるとありがたいです。 ちなみに、NECのValuestar Lです。OSはWindows XPです。

  • タスクトレイのアイコンが・・

    機種は富士通のFMV C8/150WTです。 元から入ってた拡大ツールというアプリを使ってスタートメニュー・タスクトレイのアイコンなどが大きくなったのですが、タスクトレイのアイコンが大きくなりぼやけているので元に戻そうと思い標準にしたのですが、元の状態に戻りません。ほかの方法でアイコンの大きさを小さくできる方法はどうするのでしょうか?

  • フリーズ後のタスクトレイアイコンの戻し方

    パソコンを4~5日ぶっ続けて使っていると、フォルダの開閉などがだんだん動きが重たくなって、そのうちフォルダーを開いただけで、あるいは開いたフォルダ内のファイルを再生しようとクリックしたらフリーズします。 感じとしてはリソース不足のような気もします。 「システムエラーコード1400ウィンドウ ハンドルが無効です」というエラーがよくでます。何かのアプリのエラーメッセージなのかOSのエラーなのかわかりませんがこれが頻繁に出ると寿命と言う感じです。そのときは再起動してます。 上の、たとえばフリーズしたフォルダを消そうと、CTRL+ALT+DELでフォルダを終了すると、フォルダは消えてくれますが、変わりに画面全体が一瞬ちらつきます。具体的には壁紙を残して、0.2秒くらいデスクトップアイコンもタスクバーも全部消えます。そのちらついたあと、復帰するのですが、 画面右下のタスクトレイのアイコンが全部は復帰しません。画面がちらついたあと、再度スタートアップに登録したものを読み込んでいるかのように一つ一つ戻ってくるのですが、16個登録してるうちの半分くらいしか戻りません。 そこでタスクトレイに入れようと、プログラムからスタートアップで直接クリックするのですが、なぜかタスクトレイに反映されません。 カレンダー、ワンセグチューナー、驚速メモリなどのアイコンがプログラムをクリックしてもタスクトレイに戻りません。驚速メモリはバックグラウンドで動いてるのは警告が出るのでわかります。他のはわかりません。すごく困ります。再起動すればいいのですが、いろいろ作業をしてる途中でこれが起こると、作業終了までタスクトレイにアイコンがないままです。 どうしてこういうことが起こるのでしょう?MEでのリソース問題のようなものが、XPでもあるとしか思えないのですが。 また再起動なしにタスクトレイにアイコンを復活させる方法はないでしょうか?タスクマネージャーのプロセスをみて何とかならないかと思ったんですが良くわかりません。 バックグラウンドで明らかに働いてるにもかかわらず、タスクトレイから消えてしまったアイコンの復活方法が知りたいのですが、いい方法はないでしょうか? どなたかお気づきのことがあるかたおられましたら、アドバイスをよろしくお願いします。

  • タスクトレイのIMEのアイコン

    Win2000です。 タスクトレイにIMEのアイコンを表示させる方法をおしえてください。

  • タスクトレイのアイコンを消したい

    つまらないこととお思いでしょうが、どうかお教え下さい。 Windous98se画面の右下にある、タスクトレイのアイコンの中に、めったに使わないのに出ていて、しかもちかちか点滅して目障りなものがあります。(Real Player) これを消したいのですが、どうすればよいのですか??? (プログラム自体はたまに使うので、消したくありません) よろしくお願いします。

  • タスクトレイのBluetoothアイコンを消した

    Bluetoothのマウスを買ってきたのですが、 設定が分からずに いじっているうちにタスクトレイのBluetoothアイコンが消えてしまいました、 どうすれば表示させられるでしょうか、OSはWindows7です。 また、どうすればマウスが使えるようになりますか? マウスはBUFFALO BSMLBO2SVです。