follow me

タスクトレイ格納型プログラム

タスクトレイに格納されたプログラムの作成。
久々にプログラム作ろうと思ってみて、せっかくなのでタスクトレイ格納型にしたいと思ったので、やり方を調べてみたメモ。
内容は、Shell_NotifyIcon()使えばイイだけ。これを使ってトレイ内のアイコンを変えてみたり~。
とりあえず、プログラム初期化部分に以下のコードを埋め込み完了。
nidNoftyIconData.cbSize  = sizeof(NOTIFYICONDATA);
nidNoftyIconData.hWnd    = hwnd;
nidNoftyIconData.uID     = 1;
nidNoftyIconData.uFlags  = NIF_ICON | NIF_TIP | NIF_MESSAGE;
nidNoftyIconData.uCallbackMessage = WM_USER + 1;
nidNoftyIconData.hIcon   = LoadIcon(hCurInst, MAKEINTRESOURCE(IDI_ICON));
strcpy(nidNoftyIconData.szTip, APP_DESCRIPTION);

Shell_NotifyIcon( NIM_ADD, &nidNoftyIconData );

あと、ウィンドウが無いので、プログラムを終了するために、ポップアップメニューを追加しないと。。。プログラムが終了できない。。。
ちなみにメニュー箇所は、こんな感じにしてみた。
  case (WM_USER + 1):  //アイコンからのメッセージ処理
    if( lParam == WM_RBUTTONDOWN ){
      // マウス右押し
      GetCursorPos( &pt );
      hMenuPop = CreatePopupMenu();
      AppendMenu( hMenuPop, MF_BYCOMMAND | MF_STRING, IDR_EXIT, TEXT("Exit(&X)") );
      SetForegroundWindow( hwnd );
      TrackPopupMenu( hMenuPop, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL );
      if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
      }
      DestroyMenu( hMenuPop );
    }

とりあえず、ポップアップメニューまで追加したタスクトレイ格納型の雛形。
プログラムはVC++6.0で作成。
TaskTray.zip
タスクトレイ格納型プログラム | 0 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。