SAMPLE
右クリックでタスクトレイに格納
SYNTAX
BOOL Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA lpdata
);
DESC
タスクバーのステータスエリアにメッセージを送る。
必要事項は NOTIFYICONDATA にセットする
DESC
16, 32, 64 のサイズは確認すみ
( bmp 形式はだめかも )
#pragma comment(lib,"Shell32.lib")
case WM_RBUTTONDOWN:
{
NOTIFYICONDATA ni;
memset( &ni, 0, sizeof(NOTIFYICONDATA) );
ni.cbSize = sizeof( NOTIFYICONDATA );
ni.hWnd = hWnd;
ni.uID = 1001;
ni.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
// icon ファイルを読み込む
ni.hIcon = (HICON)LoadImage( 0, "test.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
// タスクトレイのアイコンにマウスイベントが発生したときにくるアプリケーション定義のメッセージ
// WARNING
// WM_APP 以上の数値でないと message が通知されない
ni.uCallbackMessage = WM_APP + 1;
// タスクトレイにアイコンを追加したら自分のウィンドウを隠す。
Shell_NotifyIcon( NIM_ADD, &ni );
ShowWindow( hWnd, SW_HIDE );
return 0;
}
タスクトレイのアイコンがクリックされたら、ウィンドウを表示する。
// Application 定義のメッセージをうける
case WM_APP + 1:
{
// lp にマウスイベントの情報がはいっている
if ( lp == WM_LBUTTONDOWN ) {
MessageBox( NULL, "left mouse button", "left mouse button", MB_OK );
// タスクトレイからアイコンを消す。
// 消す対象を特定するため NIM_ADD で指定した ID と同じ番号をつける。
NOTIFYICONDATA ni;
memset( &ni, 0, sizeof(NOTIFYICONDATA) );
ni.uID = 1001;
Shell_NotifyIcon( NIM_DELETE, &ni );
// ウィンドウを表示する。
ShowWindow( hWnd, SW_SHOW );
}
}
■ TaskBar にいれる
SYNTAX
CloseWindow( HWND );
DESC
Window を最小化する
// マウスをクリックしたら, Window を最小化してタスクバーにいれる
if ( msg == WM_LBUTTONDOWN ) {
CloseWindow( hWnd );
return 0;
}
■ IsIconic
if ( msg == WM_TIMER ) {
// タスクバーにあるときは TitleBar を 最小化中 にする
if ( IsIconic(hWnd) ) {
SetWindowText( hWnd, "最小化中" );
}
else {
SetWindowText( hWnd, "ふつう" );
}
}