initial oogynize check in _ this actually used to work!
This commit is contained in:
102
Hooks/ButtonHook/ButtonStrategy.h
Normal file
102
Hooks/ButtonHook/ButtonStrategy.h
Normal file
@@ -0,0 +1,102 @@
|
||||
#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();
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user