トップページ ソースコードライブラリ Borland C++ Compiler 5.5
タスクトレイにアイコンを追加する
Shell_NotifyIconを使ってタスクトレイにアイコンを登録する方法を紹介しています。
サンプルコード
// メッセージIDの定義
#define WM_NOTIFYICON (WM_USER + 100)
    .
    .
    .
// NOTIFYICONDATA型変数の宣言
NOTIFYICONDATA nIcon;
    .
    .
    .
// アイコンの追加
nIcon.cbSize = sizeof(NOTIFYICONDATA);
nIcon.uID    = 1;
nIcon.hWnd   = hwnd;
nIcon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nIcon.hIcon  = hicon;
nIcon.uCallbackMessage = WM_NOTIFYICON;
lstrcpy(nIcon.szTip,"アイコンのヒント");
Shell_NotifyIcon(NIM_ADD, &nIcon);
    .
    .
    .
// アイコンの削除
Shell_NotifyIcon(NIM_DELETE, &nIcon);

// メッセージの処理
switch(msg){
           .
           .
           .
    case WM_NOTIFYICON:
        switch(lparam){
            case WM_RBUTTONDOWN:
                  .
                  .
                  .
                break;
            case WM_LBUTTONDBLCLK:
                  .
                  .
                  .
                break;
        }
        break;
           .
           .
           .
}

概要

まずはヘッダファイルでタスクトレイアイコンがクリックされたときなどに発生するメッセージIDの定義を行います。ID値は自由に指定できますがシステムで使われているIDとぶつからないようにWM_USERより大きな値を指定するのが一般的です。 次にアイコンの登録/識別などに利用する構造体を宣言しておきます。classを使うときはメンバ変数としてそれ以外の場合はグローバル変数として確保するのがいいでしょう。

いよいよ、アイコンの追加です。上から構造体のサイズ、識別番号、クリックメッセージなどが送信されるウインドウハンドル、アイコンの属性フラグ、アイコンのハンドル、利用するメッセージのID、マウスカーソルでアイコンをポイントしたときに表示されるヒント文字を指定し、Shell_NotifyIconで登録を行います。

次はプログラム終了時などトレイからアイコンを削除する処理です。

最後にWinProc関数内のメッセージの処理です。wparamに登録時に指定した識別番号、lpawparamramにイベントの種類が入っています。

ナビゲーション
プログラミングは道連れ
ソースコードライブラリ
Win 32 SDK
ショートカットアイコンの作成
ファイルを関連づけられたアプリケーションで開く
タイトルバーの無いウインドウをドラッグできるようにする
DLLを動的にロードする
NT系Windowsかどうかを判断する
サウンドファイルの再生
フォントの回転
トップページ ソースコードライブラリ Borland C++ Compiler 5.5