616 lines
11 KiB
C++
616 lines
11 KiB
C++
#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;
|
||
|
||
// 尼強酌油
|
||
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:
|
||
// 峇佩酌油匂指距痕方
|
||
virtual void _callOn() = 0;
|
||
|
||
protected:
|
||
EString m_sName;
|
||
bool m_bRunning;
|
||
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:
|
||
// 賠茅侭嗤酌油匂
|
||
static void _clearManager();
|
||
|
||
// 報炎<E5A0B1>連殻會
|
||
static void MouseProc(
|
||
UINT message,
|
||
WPARAM wParam,
|
||
LPARAM lParam
|
||
);
|
||
|
||
// 梓囚<E6A293>連殻會
|
||
static void KeyboardProc(
|
||
UINT message,
|
||
WPARAM wParam,
|
||
LPARAM lParam
|
||
);
|
||
};
|
||
|
||
} |