⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventmanagerwin32.h

📁 Lakey这是一个免费的CW练习/收/发软件
💻 H
字号:
#pragma once

#include <vector>

#include "Graphics.h"
#include "EventListener.h"

using namespace std;

class IControl
{
public:
	virtual BOOL IsRelated(int x, int y) = 0;
	virtual void GetRect(RECT* r) = 0;

	static BOOL PointInRect(const RECT* pRect, int x, int y);
	static BOOL IntersectRect(RECT* pDest, const RECT* pSrc1, const RECT* pSrc2);
};

class IPaintEventControl : public IControl, public IPaintEventListener
{
};

class IMouseMoveEventControl : public IControl, public IMouseMoveEventListener
{
};

class IKeyboardEventControl : public IKeyboardEventListener
{
};

class IMouseKeyEventControl : public IControl, public IMouseKeyEventListener
{
};

class ITimerEventControl : public ITimerEventListener
{
};

class ICommandEventControl : public ICommandEventListener
{
};

class IUserData
{
public:
	virtual void SetUserData(void* pUserData) = 0;
	virtual void* GetUserData() = 0;
};

class IPaintableParent
{
public:
	virtual void Invalidate(const RECT* pRect) = 0;
	virtual CGraphics* NewGraphics(int w, int h) = 0;
};

class CEventDispatcherWin32
	: public IPaintableParent
{
public:
	CEventDispatcherWin32(HWND hWnd);
	virtual ~CEventDispatcherWin32(void);

	virtual BOOL OnMessage(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);

	virtual void AddPaintEventControl(IPaintEventControl* pCtrl);
	virtual void AddMouseMoveEventControl(IMouseMoveEventControl* pCtrl);
	virtual void AddKeyboardEventControl(IKeyboardEventControl* pCtrl);
	virtual void AddMouseKeyEventControl(IMouseKeyEventControl* pCtrl);
	virtual void AddTimerEventControl(ITimerEventControl* pCtrl);
	virtual void AddCommandEventControl(ICommandEventControl* pCtrl);

	virtual void Invalidate(const RECT* pRect);
	virtual CGraphics* NewGraphics(int w, int h);

	virtual BOOL PaintProc();
	virtual BOOL MouseMoveProc(int x, int y);
	virtual BOOL KeyDownProc(int nKeyCode);
	virtual BOOL KeyUpProc(int nKeyCode);
	virtual BOOL MouseKeyDownProc(IMouseKeyEventListener::MouseKeyType nMkt, int x, int y);
	virtual BOOL MouseKeyUpProc(IMouseKeyEventListener::MouseKeyType nMkt, int x, int y);
	virtual BOOL TimerProc(int nTimerId);
	virtual BOOL CommandProc(int nCommId);

	virtual void RemovePaintEventControl(IPaintEventControl* pCtrl);
	virtual void RemoveMouseMoveEventControl(IMouseMoveEventControl* pCtrl);
	virtual void RemoveKeyboardEventControl(IKeyboardEventControl* pCtrl);
	virtual void RemoveMouseKeyEventControl(IMouseKeyEventControl* pCtrl);
	virtual void RemoveTimerEventControl(ITimerEventControl* pCtrl);
	virtual void RemoveCommandEventControl(ICommandEventControl* pCtrl);

protected:
	HWND GetHWnd() { return m_hWnd; };
	CGraphics* GetGraphics() { return m_pGraphics; };

private:
	vector<IPaintEventControl *>		m_oPaintEventControls;
	vector<IMouseMoveEventControl *>	m_oMouseMoveEventControls;
	vector<IKeyboardEventControl *>		m_oKeyboardEventControls;
	vector<IMouseKeyEventControl *>		m_oMouseKeyEventControls;
	vector<ITimerEventControl *>		m_oTimerEventControls;
	vector<ICommandEventControl *>		m_oCommandEventControls;

	CGraphics*		m_pGraphics;
	HWND			m_hWnd;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -