システムトレイ管理クラス

HomeC++ Class Library[LIB-001]

 ダウンロード : SystemTray.zip (2005/03/18) 

システムトレイにアイコンを登録します。
複数のアイコンをシステムトレイに登録できるクラスと、一つしかできない代わりに軽量版のクラスを同梱してあります。

使い方

  1. システムトレイオブジェクトの作成


        CSystemTray* tray;    // グローバル変数等で宣言
        tray = new CSystemTray(CWnd* wnd, DWORD dwIcon, TCHAR* strTip = _T("")):

    wnd   メッセージを通知するウィンドウクラス(サブクラス化します)
    dwIcon   登録するアイコンのリソース番号(IDI_ICON1等)
    strTip   チップメッセージ(省略可能、文字数制限あり)

  2. システムトレイオブジェクトの削除


        delete tray;
        tray = NULL;

    複数のインスタンスがある場合は、インスタンスした順番と逆の順番で削除してください。
    この順番を守らないとサブクラスの戻りアドレスがおかしくなってしまいます(これは仕様とさせていただきます)。

  3. 登録アイコンの ID を取得する(通常版のみ)


        DWORD dwID = tray->GetID();

    複数のシステムトレイアイコンが存在している場合に必要です。
    この登録アイコン ID によって、どのシステムトレイアイコンがクリックされたかを確認できます。

  4. クリックなどの通知を受け取る

    OnWindowProc や ON_MESSAGE() メッセージハンドラ等で、WM_USER_SYSTEMTRAY を捕捉してください。

    wParam   登録アイコンID番号
    lParam   動作(WM_LBUTTONDOWN、WM_RBUTTONDOWN等)

    例えば、以下のように実装します(サンプルはダイアログベース)。

    LRESULT CXXXDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message){
        case WM_USER_SYSTEMTRAY:
            switch (lParam){
            case WM_LBUTTONDOWN:
                // 左クリック処理
                break;
            }
            break;
        }
        return CDialog::WindowProc(message, wParam, lParam);
    }



 Copyright 2005 VALGUS. All Rights Reserved.