//Class Code (Copy And Paste it Somewher

//     e)//

#define WM_TRAYNOTIFY 0xA44C

#include 

class clsSysTray

     {

     public:

     clsSysTray();

    

     bool SetIcon(HICON hNewIcon);

     HICON GetIcon();

     bool SetTipText(char *lpstrNewTipText);

     char *GetTipText();

     bool AddIcon();

     bool RemoveIcon();

     HWND hWnd;

     UINT uID;

     protected:

     NOTIFYICONDATA NotifyIconData;

     bool bInTray;

    

     };

    clsSysTray::clsSysTray()

         {

         bInTray = false;

         NotifyIconData.cbSize = sizeof(NotifyIconData);

         NotifyIconData.uID = uID = 2;

         NotifyIconData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;

         NotifyIconData.uCallbackMessage = WM_TRAYNOTIFY;

         NotifyIconData.hIcon = LoadIcon(NULL, IDI_APPLICATION);

         NotifyIconData.szTip[0] = '\0';

         NotifyIconData.hWnd = NULL;

        

         }

        HICON clsSysTray::GetIcon()

             {

             return(NotifyIconData.hIcon);

             }

            bool clsSysTray::SetIcon(HICON hNewIcon)

                 {

                 NotifyIconData.hIcon = hNewIcon;

                 if(bInTray)

                     {

                     bool iRetVal;

                     iRetVal = Shell_NotifyIcon(NIM_MODIFY, &NotifyIconData);

                     if(iRetVal)

                         {

                         bInTray = true;

                         }

                         return(iRetVal);

                         }

                         else

                         return(1);

                         }

                        char *clsSysTray::GetTipText()

                             {

                             return(NotifyIconData.szTip);

                             }

                            bool clsSysTray::SetTipText(char *lpstrNewTipText)

                                 {

                                 strcpy(NotifyIconData.szTip, lpstrNewTipText);

                                 if(bInTray)

                                     {

                                     bool iRetVal;

                                     iRetVal = Shell_NotifyIcon(NIM_MODIFY, &NotifyIconData);

                                     if(iRetVal)

                                         {

                                         bInTray = true;

                                         }

                                         return(iRetVal);

                                         }

                                         else

                                         return(1);

                                         }

                                        bool clsSysTray::AddIcon()

                                             {

                                             bool iRetVal;

                                            

                                             NotifyIconData.hWnd = hWnd;

                                             NotifyIconData.uID = hWnd;

                                             iRetVal = Shell_NotifyIcon(NIM_ADD, &NotifyIconData);

                                             if(iRetVal)

                                                 {

                                                 bInTray = true;

                                                 }

                                                 return(iRetVal);

                                                 }

                                                bool clsSysTray::RemoveIcon()

                                                     {

                                                     bool iRetVal;

                                                     iRetVal = Shell_NotifyIcon(NIM_DELETE, &NotifyIconData);

                                                     if(iRetVal)

                                                         {

                                                         bInTray = false;

                                                         }

                                                         return(iRetVal);

                                                         }

                                                        //End Class Code//

                                                        //Example Of Use///

                                                        .

                                                        .

                                                        .

                                                        clsSysTray SystemTrayEx;

                                                        SystemTrayEx.hWnd = hWnd;

                                                        SystemTrayEx.SetTipText("HI");

                                                        SystemTrayEx.AddIcon();

                                                        SystemTrayEx.SetIcon(hApp_Icon_Main);

                                                        .

                                                        .

                                                        .

                                                        //End Example//

                                                        ///Example Of Callback (Notification) Me

                                                        //     ssages//

                                                        .

                                                        .

                                                        .

                                                         switch(Msg)

                                                         {

                                                        

                                                         case WM_TRAYNOTIFY:

                                                             {

                                                             switch(LOWORD(lParam))

                                                                 {

                                                                 case WM_LBUTTONDBLCLK:

                                                                 case WM_LBUTTONDOWN:

                                                                 case WM_LBUTTONUP:

                                                                 case WM_RBUTTONDBLCLK:

                                                                 case WM_RBUTTONDOWN:

                                                                 case WM_RBUTTONUP:

                                                                 }

                                                                 return(0);

                                                                 } break;

                                                                .

                                                                .

                                                                .

                                                                //End Callback Example//