Magic_Game/Easy2D/emsg.h

664 lines
12 KiB
C++
Raw Blame History

#pragma once
#include "ebase.h"
namespace e2d
{
class ENode;
class EMsgManager;
// 報炎<E5A0B1>
class EMouseMsg
{
friend EMsgManager;
public:
// 報炎<E5A0B1>連鹿栽
enum MOUSE_MSG
{
MOVE = 0x0200, // 報炎卞強
LBUTTON_DOWN, // 報炎恣囚梓和
LBUTTON_UP, // 報炎恣囚箕軟
LBUTTON_DBLCLK, // 報炎恣囚褒似
RBUTTON_DOWN, // 報炎嘔囚梓和
RBUTTON_UP, // 報炎嘔囚箕軟
RBUTTON_DBLCLK, // 報炎嘔囚褒似
MBUTTON_DOWN, // 報炎嶄囚梓和
MBUTTON_UP, // 報炎嶄囚箕軟
MBUTTON_DBLCLK, // 報炎嶄囚褒似
WHEEL // 錆強獄態
};
// 資函報炎罪恫炎
static DWORD getPosX();
// 資函報炎忿恫炎
static DWORD getPosY();
// 資函報炎恫炎
static EPoint getPos();
// 資函報炎恣囚梓和彜蓑
static bool isLButtonDown();
// 資函報炎嶄囚梓和彜蓑
static bool isMButtonDown();
// 資函報炎嘔囚梓和彜蓑
static bool isRButtonDown();
// 資函 Shift 梓囚彜蓑
static bool isShiftDown();
// 資函 Ctrl 梓囚彜蓑
static bool isCtrlDown();
// 資函報炎獄態峙
static DWORD getWheelDelta();
// 資函輝念報炎<E5A0B1>
static MOUSE_MSG getMsg();
protected:
UINT m_nMsg = 0;
WPARAM m_wParam = 0;
LPARAM m_lParam = 0;
};
// 梓囚<E6A293>
class EKeyboardMsg
{
friend EMsgManager;
public:
// 梓囚<E6A293>連窃侏鹿栽
enum KEYBOARD_MSG
{
KEY_DOWN = 0x0100, // 梓和
KEY_UP // 箕軟
};
// 梓囚囚峙鹿栽
enum class KEY
{
A = 'A', B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, // 忖銚囚峙
NUM0 = '0', NUM1, NUM2, NUM3, NUM4, NUM5, NUM6, NUM7, NUM8, NUM9, // 方忖囚峙
NUMPAD0 = 0x60, NUMPAD1, NUMPAD2, NUMPAD3, NUMPAD4, NUMPAD5, NUMPAD6, NUMPAD7, NUMPAD8, NUMPAD9, // 方忖弌囚徒囚峙
F1 = 0x70, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, // F囚囚峙
MULTIPLY, // 核催囚囚峙
ADD, // 紗催囚囚峙
SEPARATOR, // 蛍護囚囚峙
SUBTRACT, // 受催囚囚峙
DECIMAL, // 弌方泣囚囚峙
DIVIDE, // 茅催囚囚峙
TAB = 0x09, // TAB 囚囚峙
ENTER = 0x0D, // 指概囚囚峙
SHIFT, CTRL, // SHIFT 囚囚峙
ESC = 0x1B, // ESCAPE 囚囚峙
SPACE = 0x20, // 腎鯉囚囚峙
PAGE_UP, // PageUp 囚囚峙
PAGE_DOWN, // PageDown 囚囚峙
END, // End 囚囚峙
HOME, // Home 囚囚峙
LEFT, // 恣囚囚峙
UP, // 貧囚囚峙
RIGHT, // 嘔囚囚峙
DOWN // 和囚囚峙
};
// 資函梓囚<E6A293>連窃侏
static KEYBOARD_MSG getMsg();
// 資函囚峙
static KEY getVal();
// 資函梓囚<E6A293>連議柴方
static DWORD getCount();
// 資函蒙協梓囚議彜蓑
static bool isKeyDown(
KEY key
);
// 資函寄弌亟迄協彜蓑
static bool isCapitalLockOn();
// 資函方忖弌囚徒迄協彜蓑
static bool isNumpadLockOn();
// 資函錆強迄協彜蓑
static bool isScrollLockOn();
protected:
UINT m_nMsg = 0;
WPARAM m_wParam = 0;
LPARAM m_lParam = 0;
};
// 酌油匂
class EListener :
public EObject
{
friend EMsgManager;
public:
EListener();
EListener(
const EString &name
);
// 資函酌油匂彜蓑
bool isRunning() const;
// 資函酌油匂航軟彜蓑
bool isWaiting() const;
// 尼強酌油
void start();
// 唯峭酌油
void stop();
// 資函酌油匂兆各
EString getName() const;
// 資函酌油匂侭壓魁尚
EScene * getParentScene() const;
// 資函酌油匂侭壓准泣
ENode * getParentNode() const;
// 譜崔酌油匂兆各
void setName(
const EString &name
);
// 鰯協酌油匂欺魁尚
virtual void bindWith(
EScene * pParentScene
) = 0;
// 鰯協酌油匂欺准泣
virtual void bindWith(
ENode * pParentNode
) = 0;
protected:
// 序秘吉棋彜蓑
void _wait();
// 蚕佰
void _notify();
// 峇佩酌油匂指距痕方
virtual void _callOn() = 0;
protected:
EString m_sName;
bool m_bRunning;
bool m_bWaiting;
EScene * m_pParentScene;
ENode * m_pParentNode;
};
// 報炎<E5A0B1>連酌油匂
class EMouseListener :
public EListener
{
friend EMsgManager;
public:
EMouseListener();
EMouseListener(
const EString &name
);
EMouseListener(
const MOUSE_LISTENER_CALLBACK &callback
);
EMouseListener(
const EString &name,
const MOUSE_LISTENER_CALLBACK &callback
);
// 譜崔酌油匂指距痕方
void setCallback(
const MOUSE_LISTENER_CALLBACK &callback
);
// 鰯協酌油匂欺魁尚
virtual void bindWith(
EScene * pParentScene
) override;
// 鰯協酌油匂欺准泣
virtual void bindWith(
ENode * pParentNode
) override;
protected:
// 峇佩酌油匂指距痕方
virtual void _callOn() override;
protected:
MOUSE_LISTENER_CALLBACK m_Callback;
};
// 報炎梓和<E6A293>連酌油匂
class EMousePressListener :
public EMouseListener
{
public:
EMousePressListener();
EMousePressListener(
const EString &name
);
EMousePressListener(
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
EMousePressListener(
const EString &name,
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
// 譜崔酌油匂指距痕方
void setCallback(
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
protected:
// 峇佩酌油匂指距痕方
virtual void _callOn() override;
protected:
MOUSE_PRESS_LISTENER_CALLBACK m_Callback;
};
// 報炎泣似<E6B3A3>連酌油匂
class EMouseClickListener :
public EMouseListener
{
public:
EMouseClickListener();
EMouseClickListener(
const EString &name
);
EMouseClickListener(
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
EMouseClickListener(
const EString &name,
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
// 譜崔酌油匂指距痕方
void setCallback(
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
protected:
// 峇佩酌油匂指距痕方
virtual void _callOn() override;
protected:
bool m_bPressed;
MOUSE_CLICK_LISTENER_CALLBACK m_Callback;
};
// 報炎泣似<E6B3A3>連酌油匂
class EMouseDoubleClickListener :
public EMouseListener
{
public:
EMouseDoubleClickListener();
EMouseDoubleClickListener(
const EString &name
);
EMouseDoubleClickListener(
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
EMouseDoubleClickListener(
const EString &name,
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
// 譜崔酌油匂指距痕方
void setCallback(
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
protected:
// 峇佩酌油匂指距痕方
virtual void _callOn() override;
protected:
bool m_bPressed;
MOUSE_DBLCLK_LISTENER_CALLBACK m_Callback;
};
// 報炎溶強<E6BAB6>連酌油匂
class EMouseDragListener :
public EMouseListener
{
public:
EMouseDragListener();
EMouseDragListener(
const EString &name
);
EMouseDragListener(
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
EMouseDragListener(
const EString &name,
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
// 譜崔酌油匂指距痕方
void setCallback(
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
protected:
// 峇佩酌油匂指距痕方
virtual void _callOn() override;
protected:
EPoint m_Begin;
MOUSE_DRAG_LISTENER_CALLBACK m_Callback;
};
// 梓囚<E6A293>連酌油匂
class EKeyboardListener :
public EListener
{
friend EMsgManager;
public:
EKeyboardListener();
EKeyboardListener(
const EString &name
);
EKeyboardListener(
const KEY_LISTENER_CALLBACK &callback
);
EKeyboardListener(
const EString &name,
const KEY_LISTENER_CALLBACK &callback
);
// 譜崔酌油匂指距痕方
void setCallback(
const KEY_LISTENER_CALLBACK &callback
);
// 鰯協酌油匂欺魁尚
virtual void bindWith(
EScene * pParentScene
) override;
// 鰯協酌油匂欺准泣
virtual void bindWith(
ENode * pParentNode
) override;
protected:
// 峇佩酌油匂指距痕方
virtual void _callOn() override;
protected:
KEY_LISTENER_CALLBACK m_Callback;
};
// 梓囚梓和<E6A293>連酌油
class EKeyboardPressListener :
public EKeyboardListener
{
friend EMsgManager;
public:
EKeyboardPressListener();
EKeyboardPressListener(
const EString &name
);
EKeyboardPressListener(
const KEY_LISTENER_CALLBACK &callback
);
EKeyboardPressListener(
const EString &name,
const KEY_LISTENER_CALLBACK &callback
);
protected:
// 峇佩酌油匂指距痕方
virtual void _callOn() override;
};
// <20>連砿尖匂
class EMsgManager
{
friend EApp;
friend EScene;
friend ENode;
public:
// 鰯協報炎<E5A0B1>連酌油匂欺魁尚
static void bindListener(
EMouseListener * listener,
EScene * pParentScene
);
// 鰯協報炎<E5A0B1>連酌油匂欺准泣
static void bindListener(
EMouseListener * listener,
ENode * pParentNode
);
// 尼強醤嗤<E986A4>揖兆各議報炎<E5A0B1>連酌油匂
static void startMouseListeners(
const EString &name
);
// 唯峭醤嗤<E986A4>揖兆各議報炎<E5A0B1>連酌油匂
static void stopMouseListeners(
const EString &name
);
// 評茅醤嗤<E986A4>揖兆各議報炎<E5A0B1>連酌油匂
static void delMouseListeners(
const EString &name
);
// 尼強鰯協壓魁尚式凪徨准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void startAllMouseListenersBindedWith(
EScene * pParentScene
);
// 唯峭鰯協壓魁尚式凪徨准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void stopAllMouseListenersBindedWith(
EScene * pParentScene
);
// 賠茅鰯協壓魁尚式凪徨准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void clearAllMouseListenersBindedWith(
EScene * pParentScene
);
// 尼強鰯協壓准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void startAllMouseListenersBindedWith(
ENode * pParentNode
);
// 唯峭鰯協壓准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void stopAllMouseListenersBindedWith(
ENode * pParentNode
);
// 賠茅鰯協壓准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void clearAllMouseListenersBindedWith(
ENode * pParentNode
);
// 尼強侭嗤報炎<E5A0B1>連酌油匂
static void startAllMouseListeners();
// 唯峭侭嗤報炎<E5A0B1>連酌油匂
static void stopAllMouseListeners();
// 賠茅侭嗤報炎<E5A0B1>連酌油匂
static void clearAllMouseListeners();
// 鰯協梓囚<E6A293>連酌油匂欺魁尚
static void bindListener(
EKeyboardListener * listener,
EScene * pParentScene
);
// 鰯協梓囚<E6A293>連酌油匂欺准泣
static void bindListener(
EKeyboardListener * listener,
ENode * pParentNode
);
// 尼強兆各<E58586>揖議梓囚<E6A293>連酌油匂
static void startKeyboardListeners(
const EString &name
);
// 唯峭兆各<E58586>揖議梓囚<E6A293>連酌油匂
static void stopKeyboardListeners(
const EString &name
);
// 評茅兆各<E58586>揖議梓囚<E6A293>連酌油匂
static void delKeyboardListeners(
const EString &name
);
// 尼強鰯協壓魁尚式凪徨准泣貧議侭嗤梓囚<E6A293>連酌油匂
static void startAllKeyboardListenersBindedWith(
EScene * pParentScene
);
// 唯峭鰯協壓魁尚式凪徨准泣貧議侭嗤梓囚<E6A293>連酌油匂
static void stopAllKeyboardListenersBindedWith(
EScene * pParentScene
);
// 賠茅鰯協壓魁尚式凪徨准泣貧議侭嗤梓囚<E6A293>連酌油匂
static void clearAllKeyboardListenersBindedWith(
EScene * pParentScene
);
// 尼強鰯協壓准泣貧議侭嗤梓囚<E6A293>連酌油匂
static void startAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// 唯峭鰯協壓准泣貧議侭嗤梓囚<E6A293>連酌油匂
static void stopAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// 賠茅鰯協壓准泣貧議侭嗤梓囚<E6A293>連酌油匂
static void clearAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// 尼強侭嗤梓囚<E6A293>連酌油匂
static void startAllKeyboardListeners();
// 唯峭侭嗤梓囚<E6A293>連酌油匂
static void stopAllKeyboardListeners();
// 賠茅侭嗤梓囚<E6A293>連酌油匂
static void clearAllKeyboardListeners();
private:
// 航軟鰯協壓魁尚貧議侭嗤報炎<E5A0B1>連酌油匂
static void _waitAllMouseListenersBindedWith(
EScene * pParentScene
);
// 嶷尼鰯協壓魁尚貧議侭嗤報炎<E5A0B1>連酌油匂
static void _notifyAllMouseListenersBindedWith(
EScene * pParentScene
);
// 航軟鰯協壓准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void _waitAllMouseListenersBindedWith(
ENode * pParentNode
);
// 嶷尼鰯協壓准泣貧議侭嗤報炎<E5A0B1>連酌油匂
static void _notifyAllMouseListenersBindedWith(
ENode * pParentNode
);
// 航軟鰯協壓魁尚式凪徨准泣貧議侭嗤梓囚酌油匂
static void _waitAllKeyboardListenersBindedWith(
EScene * pParentScene
);
// 嶷尼鰯協壓魁尚式凪徨准泣貧議侭嗤梓囚酌油匂
static void _notifyAllKeyboardListenersBindedWith(
EScene * pParentScene
);
// 航軟鰯協壓准泣貧議侭嗤梓囚酌油匂
static void _waitAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// 嶷尼鰯協壓准泣貧議侭嗤梓囚酌油匂
static void _notifyAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// 報炎<E5A0B1>連殻會
static void MouseProc(
UINT message,
WPARAM wParam,
LPARAM lParam
);
// 梓囚<E6A293>連殻會
static void KeyboardProc(
UINT message,
WPARAM wParam,
LPARAM lParam
);
};
}