www.pudn.com > cjbtaskbarapplet.zip > TaskBarApplet.hpp


#ifndef __TASK_BAR_APPLET__ 
#define __TASK_BAR_APPLET__ 
/////////////////////////////////////////////////////////////////////////////// 
// 
// File           : $Workfile:   TaskBarApplet.hpp  $ 
// Version        : $Revision:   1.0  $ 
// Function       :  
// 
// Author         : $Author:   Len  $ 
// Date           : $Date:   Dec 28 1997 12:16:10  $ 
// 
// Notes          :  
// 
// Modifications  : 
// 
// $Log:   D:/Documents/Len/Sources/Stuff/TaskBarApplet/TaskBarLib/PVCS/TaskBarApplet.hpv  $ 
//  
//    Rev 1.0   Dec 28 1997 12:16:10   Len 
// Initial revision. 
//  
/////////////////////////////////////////////////////////////////////////////// 
// 
// Copyright 1997 JetByte Limited. 
// 
// JetByte Limited grants you ("Licensee") a non-exclusive, royalty free,  
// licence to use, modify and redistribute this software in source and binary  
// code form, provided that i) this copyright notice and licence appear on all  
// copies of the software; and ii) Licensee does not utilize the software in a  
// manner which is disparaging to JetByte Limited. 
// 
// This software is provided "AS IS," without a warranty of any kind. ALL 
// EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING  
// ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE  
// OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. JETBYTE LIMITED AND ITS LICENSORS  
// SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF  
// USING, MODIFYING OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO  
// EVENT WILL JETBYTE LIMITED BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,  
// OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE  
// DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING  
// OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF JETBYTE LIMITED  
// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
// 
// This software is not designed or intended for use in on-line control of 
// aircraft, air traffic, aircraft navigation or aircraft communications; or in 
// the design, construction, operation or maintenance of any nuclear 
// facility. Licensee represents and warrants that it will not use or 
// redistribute the Software for such purposes. 
// 
/////////////////////////////////////////////////////////////////////////////// 
 
/////////////////////////////////////////////////////////////////////////////// 
// Include files 
/////////////////////////////////////////////////////////////////////////////// 
 
#include "LinkedClass.hpp" 
 
/////////////////////////////////////////////////////////////////////////////// 
// Namespace: JetByteTools 
/////////////////////////////////////////////////////////////////////////////// 
 
namespace JetByteTools { 
 
/////////////////////////////////////////////////////////////////////////////// 
// Classes defined in this file 
/////////////////////////////////////////////////////////////////////////////// 
 
class CJBTaskBarApplet; 
 
/////////////////////////////////////////////////////////////////////////////// 
// CJBTaskBarApplet 
/////////////////////////////////////////////////////////////////////////////// 
 
class CJBTaskBarApplet : public TLinkedClass 
{ 
   public : 
 
      // Construction and destruction 
 
      CJBTaskBarApplet(); 
      virtual ~CJBTaskBarApplet(); 
 
      // Static access function to run all applets in the executable. 
 
      static int Run(HINSTANCE hInstance, LPSTR lpCmdLine); 
 
   protected : 
       
      // Override these to provide required functionality 
 
      virtual LPCTSTR GetTrayTip() = 0; 
      virtual HICON GetIcon() = 0;         
      virtual HMENU GetMenu(); 
      virtual void ReleaseMenu(HMENU hMenu); 
 
      // You may need to call these. 
 
      void ShowMenu(); 
      void CloseApplet(); 
      bool UpdateShellInfo(); 
 
      // Access to things that derived classes are likely to need access to. 
 
      static HWND s_hWnd; 
      static HINSTANCE s_hInstance; 
       
   private : 
 
      // Override these to provide applet functionality, just don't expect  
      // to call them yourself.  
 
      virtual bool InitInstance(LPSTR lpCmdLine); 
      virtual void HandleMenuCommand(int command); 
 
      virtual void OnLeftButtonDown(); 
      virtual void OnLeftButtonUp(); 
      virtual void OnRightButtonDown(); 
      virtual void OnRightButtonUp(); 
      virtual void OnLeftDoubleClick(); 
      virtual void OnRightDoubleClick(); 
      virtual void OnMouseMove(); 
      virtual void OnUnknownMessage(LPARAM lParam); 
       
      // Private helper functions 
       
      const LPCTSTR SafeGetTrayTip(); 
      void AddIcon(); 
      void RemoveIcon(); 
      bool SetShellNotification(DWORD message); 
 
      // Application level static functions. 
 
      static bool Initialise(HINSTANCE hInstance, LPSTR lpCmdLine); 
      static bool CreateAppWindow(); 
      static bool InitInstances(LPSTR lpCmdLine); 
       
      // Our message window's window procedure... 
 
      static long APIENTRY WndProc( 
         HWND hWnd,  
         WPARAM message,  
         WPARAM wParam,  
         LPARAM lParam); 
 
      // Static variables... 
 
      static const UINT s_uNotificationMessageID; 
 
      enum menuIDs { ID_CLOSE = 1 }; 
 
      static int s_nActiveApps;  // How many applets are still running 
}; 
 
/////////////////////////////////////////////////////////////////////////////// 
// Namespace: JetByteTools 
/////////////////////////////////////////////////////////////////////////////// 
 
} // End of namespace JetByteTools  
 
#endif // __TASK_BAR_APPLET__ 
 
/////////////////////////////////////////////////////////////////////////////// 
// End of file 
///////////////////////////////////////////////////////////////////////////////