text: // AlwaysOnTopPet.h: interface for the CAlwaysOnTopPet class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #if !defined(AFX_ALWAYSONTOPPET_H__A69EBAA4_385D_11D2_9FF9_00001C192944__INCLUDED_)
  #define AFX_ALWAYSONTOPPET_H__A69EBAA4_385D_11D2_9FF9_00001C192944__INCLUDED_
  
  #if _MSC_VER >= 1000
  #pragma once
  #endif // _MSC_VER >= 1000
  
  #include "Pet.h"
  
  class CAlwaysOnTopPet : virtual public CPet {
  public:
  	virtual void MoveTo(int nNewX, int nNewY);
  	virtual void SetImage(int nImage);
  	virtual void SetImageAndMoveTo(int nImage, int nNewX, int nNewY);
  	virtual void SetImages(HICON* hIconTable, int nIcons);
  	CAlwaysOnTopPet();
  	virtual ~CAlwaysOnTopPet();
  
  	virtual void DrawOnTarget(int x, int y, HICON hIcon);
  
  	//virtual callback functions - these can all be overridden to perform different actions
  	//depending on the various mouse clicks. Note: CAlwaysOnTopPet::OnLButtonDown() handles
  	//the dragging - if this is overridden, OnLButtonUp is not called.
  
  	virtual void OnLButtonDown();   //implementation is in .cpp file
  	virtual void OnLButtonUp()      {};
  	virtual void OnLButtonDblClk()  {};
  	virtual void OnMButtonDown()    {};
  	virtual void OnMButtonUp()      {};
  	virtual void OnMButtonDblClk()  {};
  	virtual void OnRButtonDown()    {};
  	virtual void OnRButtonUp()      {};
  	virtual void OnRButtonDblClk()  {};
  
  	//class information functions
  	inline BOOL IsDragging() { return m_fBeingDragged; };
  
  protected:
  	HWND m_hWndOnTop;
  	BOOL m_fBeingDragged;
  	HRGN IconMaskToRegion(HICON hIcon);
  	virtual void DestroyImages();
  	HRGN* m_hRgns;
  	virtual void Erase();
  	virtual void Draw(int nImage);
  
  private:
  	void BuildRegions();
  	void DestroyRegions();
  	static BOOL m_fRegisteredClass;
  
  	friend
  		LRESULT CALLBACK WndProc_OnTop(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  
  
  };
  
  #endif // !defined(AFX_ALWAYSONTOPPET_H__A69EBAA4_385D_11D2_9FF9_00001C192944__INCLUDED_)
  