102 lines
4.0 KiB
C++
102 lines
4.0 KiB
C++
#pragma once
|
|
|
|
namespace Ooganizer
|
|
{
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Itce: ButtonStrategy
|
|
// Desc: This interface allows us to abstract out specific implementations
|
|
// for different caption buttons with different Themes.
|
|
//
|
|
// Note: following functions will be called from the windows messages to
|
|
// be implemented directly here independently and draw only the button.
|
|
//
|
|
// Note2: Each Button Strategy is directly tied to a C
|
|
//////////////////////////////////////////////////////////////////////
|
|
class ButtonStrategy
|
|
{
|
|
public:
|
|
// generic draw function - called for all default messages
|
|
virtual void draw(HWND hWnd, const HDC &hdc, const RECT &rpos) const = 0;
|
|
// draw the button in an up state
|
|
virtual void drawButtonUp(HWND hWnd, const HDC &hDc, const RECT &rPos) const = 0;
|
|
// draw the button in a down state
|
|
virtual void drawButtonDown(HWND hWnd, const HDC &hDc, const RECT &rPos) const = 0;
|
|
|
|
// returns the RECT position of the the CaptionButton
|
|
virtual void CalcCaptionButtonRect(HWND hWnd, RECT& RectButtonPos) const = 0;
|
|
|
|
////
|
|
// returns the dimension / size of the caption / title bar (impl. in base)
|
|
////
|
|
void CalcCaptionRect(HWND hWnd, RECT& RectCaption, SIZE &heightNwidth) const;
|
|
|
|
ButtonStrategy(void);
|
|
virtual ~ButtonStrategy(void);
|
|
};
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Clss: ClassicButtonStrategy
|
|
// Desc: Implementation for our Windows Classic Theme Strategy
|
|
//////////////////////////////////////////////////////////////////////
|
|
class ClassicButtonStrategy : public ButtonStrategy
|
|
{
|
|
public:
|
|
void draw(HWND hWnd, const HDC &hdc, const RECT &rpos) const;
|
|
void drawButtonUp(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
void drawButtonDown(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
|
|
void CalcCaptionButtonRect(HWND hWnd, RECT& RectButtonPos) const {};
|
|
|
|
ClassicButtonStrategy();
|
|
virtual ~ClassicButtonStrategy();
|
|
};
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Clss: AeroButtonStrategy
|
|
// Desc: Implementation for our Windows Aero (Glass) Strategy
|
|
//////////////////////////////////////////////////////////////////////
|
|
class AeroButtonStrategy : public ButtonStrategy
|
|
{
|
|
public:
|
|
virtual void draw(HWND hWnd, const HDC &hdc, const RECT &rpos) const;
|
|
void drawButtonUp(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
void drawButtonDown(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
|
|
void CalcCaptionButtonRect(HWND hWnd, RECT& RectButtonPos) const;
|
|
|
|
AeroButtonStrategy();
|
|
virtual ~AeroButtonStrategy();
|
|
};
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Clss: VistaNoAeroStrategy
|
|
// Desc: Implementation for Vista when Aero (Glass) is not running
|
|
//////////////////////////////////////////////////////////////////////
|
|
class VistaNoAeroStrategy : public ButtonStrategy
|
|
{
|
|
public:
|
|
virtual void draw(HWND hWnd, const HDC &hdc, const RECT &rpos) const;
|
|
void drawButtonUp(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
void drawButtonDown(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
|
|
void CalcCaptionButtonRect(HWND hWnd, RECT& RectButtonPos) const;
|
|
|
|
// Uses Hidden Window Strategy
|
|
VistaNoAeroStrategy();
|
|
virtual ~VistaNoAeroStrategy();
|
|
};
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Clss: XPButtonStrategy
|
|
// Desc: Implementation for Windows XP Themed Strategy
|
|
//////////////////////////////////////////////////////////////////////
|
|
class XPButtonStrategy : public ButtonStrategy
|
|
{
|
|
public:
|
|
|
|
virtual void draw(HWND hWnd, const HDC &hdc, const RECT &rpos) const;
|
|
void drawButtonUp(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
void drawButtonDown(HWND hWnd, const HDC &hDc, const RECT &rPos) const;
|
|
|
|
void CalcCaptionButtonRect(HWND hWnd, RECT& RectButtonPos) const{};
|
|
|
|
XPButtonStrategy();
|
|
virtual ~XPButtonStrategy();
|
|
};
|
|
} |