タスクトレイにアイコンを追加するにはShell_NotifyIcon()関数を使います。
この関数の第一引数にNIM_ADDを指定して、第二引数にNOTIFYICONDATA構造体へのポインタを渡します。
なおNOTIFYICONDATA構造体にはいろいろと情報をセットしてから、Shell_NotifyIcon()関数を実行します。(戻る)
プロトタイプ宣言
BOOL Shell_NotifyIcon( DWORD dwMessage, // 送信メッセージ PNOTIFYICONDATA lpData // NOTIFYICONDATA 構造体 );
構造体
typedef struct _NOTIFYICONDATA { DWORD cbSize; // この構造体のサイズ HWND hWnd; // ウインドウ・ハンドル UINT uID; // アイコンの識別コード UINT uFlags; // 有効メンバのスイッチ UINT uCallbackMessage; // 通知するメッセージ HICON hIcon; // アイコン・ハンドル TCHAR szTip[ 64 ]; // チップヘルプの文字列 } NOTIFYICONDATA, *PNOTIFYICONDATA;
[注意]
この構造体はバージョンによってかなりメンバ変数が追加・変更されています。
上記の構造体はバージョンに影響されない共通メンバの部分のみです。
サンプル
// 複数のアイコンを識別するためのID定数 #define ID_TRAYICON (1) // タスクトレイのマウスメッセージの定数 #define WM_TASKTRAY (WM_APP + 1) // 構造体の宣言(初期化) NOTIFYICONDATA nid = { 0 }; // 構造体メンバの設定 nid.cbSize = sizeof( NOTIFYICONDATA ); nid.uFlags = (NIF_ICON|NIF_MESSAGE|NIF_TIP); nid.hWnd = hWnd; // ウインドウ・ハンドル nid.hIcon = hIcon; // アイコン・ハンドル nid.uID = ID_TRAYICON; // アイコン識別子の定数 nid.uCallbackMessage = WM_TASKTRAY; // 通知メッセージの定数 lstrcpy( nid.szTip, TEXT("文字列") ); // チップヘルプの文字列 // アイコンの追加 Shell_NotifyIcon( NIM_ADD, &nid );
- hWndに関連付けるウインドウ・ハンドルを指定します。
- hIconに表示させるアイコン・ハンドルを指定します。
- 1つのアプリケーションで複数のタスクトレイのアイコンを使いたい場合には ID_TRAYICON の定数で振り分けます。
- このアイコン識別子の値を変えれば、複数のアイコンを追加できます。
- 1つの場合は固定値でもいいでしょう。
- またWM_TASKTRAYはユーザが定義したウインドウメッセージです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます