タスクトレイ

常駐プログラムでは必須のタスクトレイをサポートするクラスです

CTaskTrayImpl.h プロジェクト

プロジェクトの説明

CMainDlg.h

#include "CTaskTrayImpl.h"         ...............................@
class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,
   public CMessageFilter, public CIdleHandler,
   public CTaskTrayImpl <CMainDlg>  ..............................@
{
     

@ CTaskTaryImpl.hをインクルードし、適用するウィンドウクラス(CWindowImplまたはCDialog.....から派生)の基底クラスとして定義する

	BEGIN_MSG_MAP(CMainDlg)
		MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
		COMMAND_ID_HANDLER(ID_APP_ABOUT	, OnAppAbout)
		COMMAND_ID_HANDLER(ID_APP_MIN	, OnMin)...............................D
		COMMAND_ID_HANDLER(IDOK, OnOK)
		COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
		CHAIN_MSG_MAP(CTaskTrayImpl<CMainDlg>..................................A
	END_MSG_MAP()

AメッセージチェインにCTaskTrayImplを指定する

この指定により、ウィンドウメッセージがCTaskTrayImplクラスでも処理できるようになります。

LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
                      :
                                            :   
    CTaskTray_AddTray();                                                                          //タスクトレイ追加  .....B
    CTaskTray_SetTrayIcon ( AtlLoadIcon(IDR_MAINFRAME) , _T("タスクトレイサンプルプログラム"));   .........................C
    return TRUE;
}
  

BCTaskTray_AddTray()でタスクトレイを作成します
CCTaskTray_SetTrayIcon()でアイコンとバルーンチップの文字列を指定します

// 最小化
LRESULT OnMin(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/).............D
{
    ShowWindow (SW_MINIMIZE);
    return 0;
}

// トレイ右クリックアップ
LRESULT CTaskTray_OnMouseRButtonUp ( POINT &posMouse ) ..........................................E
{
    CMenu _clsMenu;
    SetForegroundWindow( m_hWnd );
    _clsMenu.LoadMenu (IDR_POPUP);
    _clsMenu.GetSubMenu(0).TrackPopupMenu ( TPM_RIGHTBUTTON | TPM_RIGHTALIGN | TPM_BOTTOMALIGN ,
                                            posMouse.x ,
                                            posMouse.y ,
                                            m_hWnd ); 
    return 0;
}
 

D最小化メニューに反応するイベントを記述します。

メニューは、リソースに「IDR_POPUP」で作成しました。

Eトレイを右クリックした時の動作を記述します。

他には
CTaskTray_OnMouseRButtonDown()
CTaskTray_OnMouseLButtonDown()
CTaskTray_OnMouseLButtonDblClick()
があります。

 

その他

CTaskTray_OnTaskbarRestart ()はWindowsシェルが再起動になったときなど、バーが再作成されたときに呼び出されます。
定義がない場合、CTaskTrayImplの中で再作成しています。