タスクトレイ(TaskTray)


SAMPLE https://www.dropbox.com/s/yhb0ulmvol6b2gz/tasktray.exe( 右クリックでタスクトレイに格納 ) 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, "ふつう" ); } }