Magic_Game/Easy2D/emsg.h

664 lines
12 KiB
C
Raw Normal View History

2017-10-13 20:16:31 +08:00
#pragma once
2017-10-14 01:07:34 +08:00
#include "ebase.h"
namespace e2d
{
class ENode;
class EMsgManager;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
class EMouseMsg
{
friend EMsgManager;
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
2017-10-14 10:02:15 +08:00
enum MOUSE_MSG
2017-10-14 01:07:34 +08:00
{
MOVE = 0x0200, // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
LBUTTON_DOWN, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LBUTTON_UP, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧<EFBFBD><CCA7>
LBUTTON_DBLCLK, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>
RBUTTON_DOWN, // <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>
RBUTTON_UP, // <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>̧<EFBFBD><CCA7>
RBUTTON_DBLCLK, // <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>˫<EFBFBD><CBAB>
MBUTTON_DOWN, // <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
MBUTTON_UP, // <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>̧<EFBFBD><CCA7>
MBUTTON_DBLCLK, // <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>˫<EFBFBD><CBAB>
WHEEL // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-17 21:22:25 +08:00
static DWORD getPosX();
2017-10-14 01:07:34 +08:00
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-17 21:22:25 +08:00
static DWORD getPosY();
2017-10-14 01:07:34 +08:00
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static EPoint getPos();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static bool isLButtonDown();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>״̬
static bool isMButtonDown();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>״̬
static bool isRButtonDown();
// <20><>ȡ Shift <20><><EFBFBD><EFBFBD>״̬
static bool isShiftDown();
// <20><>ȡ Ctrl <20><><EFBFBD><EFBFBD>״̬
static bool isCtrlDown();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
static DWORD getWheelDelta();
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
static MOUSE_MSG getMsg();
protected:
UINT m_nMsg = 0;
WPARAM m_wParam = 0;
LPARAM m_lParam = 0;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
2017-10-17 21:22:25 +08:00
class EKeyboardMsg
2017-10-14 01:07:34 +08:00
{
friend EMsgManager;
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>
2017-10-14 10:02:15 +08:00
enum KEYBOARD_MSG
2017-10-14 01:07:34 +08:00
{
KEY_DOWN = 0x0100, // <20><><EFBFBD><EFBFBD>
KEY_UP // ̧<><CCA7>
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
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, // <20><>ĸ<EFBFBD><C4B8>ֵ
NUM0 = '0', NUM1, NUM2, NUM3, NUM4, NUM5, NUM6, NUM7, NUM8, NUM9, // <20><><EFBFBD>ּ<EFBFBD>ֵ
NUMPAD0 = 0x60, NUMPAD1, NUMPAD2, NUMPAD3, NUMPAD4, NUMPAD5, NUMPAD6, NUMPAD7, NUMPAD8, NUMPAD9, // <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>̼<EFBFBD>ֵ
F1 = 0x70, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, // F<><46><EFBFBD><EFBFBD>ֵ
MULTIPLY, // <20>˺ż<CBBA><C5BC><EFBFBD>ֵ
ADD, // <20>Ӻż<D3BA><C5BC><EFBFBD>ֵ
SEPARATOR, // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ֵ
SUBTRACT, // <20><><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>ֵ
DECIMAL, // С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
DIVIDE, // <20><><EFBFBD>ż<EFBFBD><C5BC><EFBFBD>ֵ
TAB = 0x09, // TAB <20><><EFBFBD><EFBFBD>ֵ
ENTER = 0x0D, // <20>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD>ֵ
SHIFT, CTRL, // SHIFT <20><><EFBFBD><EFBFBD>ֵ
ESC = 0x1B, // ESCAPE <20><><EFBFBD><EFBFBD>ֵ
SPACE = 0x20, // <20>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>ֵ
PAGE_UP, // PageUp <20><><EFBFBD><EFBFBD>ֵ
PAGE_DOWN, // PageDown <20><><EFBFBD><EFBFBD>ֵ
END, // End <20><><EFBFBD><EFBFBD>ֵ
HOME, // Home <20><><EFBFBD><EFBFBD>ֵ
LEFT, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
UP, // <20>ϼ<EFBFBD><CFBC><EFBFBD>ֵ
RIGHT, // <20>Ҽ<EFBFBD><D2BC><EFBFBD>ֵ
DOWN // <20>¼<EFBFBD><C2BC><EFBFBD>ֵ
};
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
static KEYBOARD_MSG getMsg();
// <20><>ȡ<EFBFBD><C8A1>ֵ
static KEY getVal();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
static DWORD getCount();
// <20><>ȡ<EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static bool isKeyDown(
KEY key
);
// <20><>ȡ<EFBFBD><C8A1>Сд<D0A1><D0B4><EFBFBD><EFBFBD>״̬
static bool isCapitalLockOn();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static bool isNumpadLockOn();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static bool isScrollLockOn();
protected:
UINT m_nMsg = 0;
WPARAM m_wParam = 0;
LPARAM m_lParam = 0;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EListener :
public EObject
{
2017-10-14 10:02:15 +08:00
friend EMsgManager;
2017-10-14 01:07:34 +08:00
public:
EListener();
EListener(
2017-10-17 21:22:25 +08:00
const EString &name
2017-10-14 01:07:34 +08:00
);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
bool isRunning() const;
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
bool isWaiting() const;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void start();
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
void stop();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EString getName() const;
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>
EScene * getParentScene() const;
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD>
ENode * getParentNode() const;
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void setName(
2017-10-17 21:22:25 +08:00
const EString &name
2017-10-14 01:07:34 +08:00
);
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-14 11:40:47 +08:00
virtual void bindWith(
2017-10-14 01:07:34 +08:00
EScene * pParentScene
2017-10-14 10:02:15 +08:00
) = 0;
2017-10-14 01:07:34 +08:00
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
2017-10-14 11:40:47 +08:00
virtual void bindWith(
2017-10-14 01:07:34 +08:00
ENode * pParentNode
2017-10-14 10:02:15 +08:00
) = 0;
2017-10-14 01:07:34 +08:00
2017-10-17 21:22:25 +08:00
protected:
// <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>״̬
void _wait();
// <20><><EFBFBD><EFBFBD>
void _notify();
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() = 0;
2017-10-17 21:22:25 +08:00
2017-10-14 01:07:34 +08:00
protected:
EString m_sName;
bool m_bRunning;
bool m_bWaiting;
EScene * m_pParentScene;
ENode * m_pParentNode;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EMouseListener :
public EListener
{
2017-10-17 21:22:25 +08:00
friend EMsgManager;
2017-10-14 01:07:34 +08:00
public:
EMouseListener();
EMouseListener(
2017-10-17 21:22:25 +08:00
const EString &name
2017-10-14 01:07:34 +08:00
);
EMouseListener(
const MOUSE_LISTENER_CALLBACK &callback
);
EMouseListener(
2017-10-17 21:22:25 +08:00
const EString &name,
2017-10-14 01:07:34 +08:00
const MOUSE_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_LISTENER_CALLBACK &callback
);
2017-10-14 10:02:15 +08:00
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void bindWith(
EScene * pParentScene
2017-10-14 11:40:47 +08:00
) override;
2017-10-14 10:02:15 +08:00
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual void bindWith(
ENode * pParentNode
2017-10-14 11:40:47 +08:00
) override;
2017-10-14 10:02:15 +08:00
2017-10-14 01:07:34 +08:00
protected:
2017-10-17 21:22:25 +08:00
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() override;
2017-10-17 21:22:25 +08:00
protected:
MOUSE_LISTENER_CALLBACK m_Callback;
2017-10-14 01:07:34 +08:00
};
// <20><><EFBFBD><EFBFBD><EAB0B4><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EMousePressListener :
public EMouseListener
{
public:
EMousePressListener();
EMousePressListener(
2017-10-17 21:22:25 +08:00
const EString &name
);
EMousePressListener(
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
EMousePressListener(
2017-10-17 21:22:25 +08:00
const EString &name,
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_PRESS_LISTENER_CALLBACK &callback
);
protected:
2017-10-17 21:22:25 +08:00
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() override;
2017-10-17 21:22:25 +08:00
protected:
MOUSE_PRESS_LISTENER_CALLBACK m_Callback;
};
2017-10-14 01:07:34 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EMouseClickListener :
public EMouseListener
{
public:
EMouseClickListener();
EMouseClickListener(
2017-10-17 21:22:25 +08:00
const EString &name
2017-10-14 01:07:34 +08:00
);
EMouseClickListener(
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
EMouseClickListener(
2017-10-17 21:22:25 +08:00
const EString &name,
2017-10-14 01:07:34 +08:00
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_CLICK_LISTENER_CALLBACK &callback
);
2017-10-17 21:22:25 +08:00
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() override;
2017-10-17 21:22:25 +08:00
2017-10-14 01:07:34 +08:00
protected:
bool m_bPressed;
2017-10-17 21:22:25 +08:00
MOUSE_CLICK_LISTENER_CALLBACK m_Callback;
2017-10-14 01:07:34 +08:00
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EMouseDoubleClickListener :
public EMouseListener
{
public:
EMouseDoubleClickListener();
EMouseDoubleClickListener(
2017-10-17 21:22:25 +08:00
const EString &name
);
EMouseDoubleClickListener(
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
EMouseDoubleClickListener(
2017-10-17 21:22:25 +08:00
const EString &name,
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_DBLCLK_LISTENER_CALLBACK &callback
);
2017-10-17 21:22:25 +08:00
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() override;
2017-10-17 21:22:25 +08:00
protected:
bool m_bPressed;
2017-10-17 21:22:25 +08:00
MOUSE_DBLCLK_LISTENER_CALLBACK m_Callback;
};
2017-10-14 01:07:34 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EMouseDragListener :
2017-10-14 01:07:34 +08:00
public EMouseListener
{
public:
EMouseDragListener();
2017-10-14 01:07:34 +08:00
EMouseDragListener(
2017-10-17 21:22:25 +08:00
const EString &name
2017-10-14 01:07:34 +08:00
);
EMouseDragListener(
2017-10-14 01:07:34 +08:00
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
EMouseDragListener(
2017-10-17 21:22:25 +08:00
const EString &name,
2017-10-14 01:07:34 +08:00
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const MOUSE_DRAG_LISTENER_CALLBACK &callback
);
2017-10-17 21:22:25 +08:00
protected:
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() override;
2017-10-17 21:22:25 +08:00
2017-10-14 01:07:34 +08:00
protected:
EPoint m_Begin;
2017-10-17 21:22:25 +08:00
MOUSE_DRAG_LISTENER_CALLBACK m_Callback;
2017-10-14 01:07:34 +08:00
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EKeyboardListener :
public EListener
{
2017-10-17 21:22:25 +08:00
friend EMsgManager;
2017-10-14 01:07:34 +08:00
public:
EKeyboardListener();
EKeyboardListener(
2017-10-17 21:22:25 +08:00
const EString &name
2017-10-14 01:07:34 +08:00
);
EKeyboardListener(
const KEY_LISTENER_CALLBACK &callback
);
EKeyboardListener(
2017-10-17 21:22:25 +08:00
const EString &name,
2017-10-14 01:07:34 +08:00
const KEY_LISTENER_CALLBACK &callback
);
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void setCallback(
const KEY_LISTENER_CALLBACK &callback
);
2017-10-14 10:02:15 +08:00
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-14 11:40:47 +08:00
virtual void bindWith(
2017-10-14 10:02:15 +08:00
EScene * pParentScene
2017-10-14 11:40:47 +08:00
) override;
2017-10-14 10:02:15 +08:00
// <20>󶨼<EFBFBD><F3B6A8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
2017-10-14 11:40:47 +08:00
virtual void bindWith(
2017-10-14 10:02:15 +08:00
ENode * pParentNode
2017-10-14 11:40:47 +08:00
) override;
2017-10-14 10:02:15 +08:00
2017-10-14 01:07:34 +08:00
protected:
2017-10-17 21:22:25 +08:00
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() override;
2017-10-17 21:22:25 +08:00
protected:
KEY_LISTENER_CALLBACK m_Callback;
2017-10-14 01:07:34 +08:00
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
2017-10-17 21:22:25 +08:00
class EKeyboardPressListener :
2017-10-14 01:07:34 +08:00
public EKeyboardListener
{
2017-10-17 21:22:25 +08:00
friend EMsgManager;
2017-10-14 01:07:34 +08:00
public:
2017-10-17 21:22:25 +08:00
EKeyboardPressListener();
2017-10-14 01:07:34 +08:00
2017-10-17 21:22:25 +08:00
EKeyboardPressListener(
const EString &name
2017-10-14 01:07:34 +08:00
);
2017-10-17 21:22:25 +08:00
EKeyboardPressListener(
2017-10-14 01:07:34 +08:00
const KEY_LISTENER_CALLBACK &callback
);
2017-10-17 21:22:25 +08:00
EKeyboardPressListener(
const EString &name,
2017-10-14 01:07:34 +08:00
const KEY_LISTENER_CALLBACK &callback
);
2017-10-17 21:22:25 +08:00
protected:
2017-10-14 01:07:34 +08:00
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
2017-10-19 00:50:04 +08:00
virtual void _callOn() override;
2017-10-14 01:07:34 +08:00
};
// <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class EMsgManager
{
friend EApp;
2017-10-17 21:22:25 +08:00
friend EScene;
friend ENode;
2017-10-14 01:07:34 +08:00
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-17 21:22:25 +08:00
static void bindListener(
2017-10-14 01:07:34 +08:00
EMouseListener * listener,
EScene * pParentScene
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
static void bindListener(
EMouseListener * listener,
ENode * pParentNode
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void startMouseListeners(
const EString &name
);
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void stopMouseListeners(
const EString &name
);
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void delMouseListeners(
const EString &name
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void startAllMouseListenersBindedWith(
2017-10-14 01:07:34 +08:00
EScene * pParentScene
);
2017-10-17 21:22:25 +08:00
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void stopAllMouseListenersBindedWith(
EScene * pParentScene
2017-10-14 10:02:15 +08:00
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void clearAllMouseListenersBindedWith(
EScene * pParentScene
2017-10-14 10:02:15 +08:00
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void startAllMouseListenersBindedWith(
ENode * pParentNode
2017-10-14 01:07:34 +08:00
);
2017-10-17 21:22:25 +08:00
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void stopAllMouseListenersBindedWith(
ENode * pParentNode
2017-10-14 01:07:34 +08:00
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void clearAllMouseListenersBindedWith(
ENode * pParentNode
2017-10-14 01:07:34 +08:00
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-17 21:22:25 +08:00
static void startAllMouseListeners();
2017-10-14 01:07:34 +08:00
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2017-10-17 21:22:25 +08:00
static void stopAllMouseListeners();
2017-10-14 01:07:34 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void clearAllMouseListeners();
2017-10-17 21:22:25 +08:00
// <20>󶨰<EFBFBD><F3B6A8B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void bindListener(
EKeyboardListener * listener,
EScene * pParentScene
);
2017-10-14 01:07:34 +08:00
2017-10-17 21:22:25 +08:00
// <20>󶨰<EFBFBD><F3B6A8B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
static void bindListener(
EKeyboardListener * listener,
ENode * pParentNode
);
2017-10-14 01:07:34 +08:00
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void startKeyboardListeners(
const EString &name
);
2017-10-14 01:07:34 +08:00
2017-10-17 21:22:25 +08:00
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void stopKeyboardListeners(
const EString &name
2017-10-14 01:07:34 +08:00
);
2017-10-17 21:22:25 +08:00
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void delKeyboardListeners(
const EString &name
2017-10-14 01:07:34 +08:00
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void startAllKeyboardListenersBindedWith(
2017-10-14 01:07:34 +08:00
EScene * pParentScene
);
2017-10-17 21:22:25 +08:00
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void stopAllKeyboardListenersBindedWith(
2017-10-14 01:07:34 +08:00
EScene * pParentScene
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void clearAllKeyboardListenersBindedWith(
2017-10-14 01:07:34 +08:00
EScene * pParentScene
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void startAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void stopAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void clearAllKeyboardListenersBindedWith(
ENode * pParentNode
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void startAllKeyboardListeners();
// ֹͣ<CDA3><D6B9><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void stopAllKeyboardListeners();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void clearAllKeyboardListeners();
private:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _waitAllMouseListenersBindedWith(
2017-10-14 01:07:34 +08:00
EScene * pParentScene
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _notifyAllMouseListenersBindedWith(
2017-10-14 01:07:34 +08:00
EScene * pParentScene
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _waitAllMouseListenersBindedWith(
2017-10-14 01:07:34 +08:00
ENode * pParentNode
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _notifyAllMouseListenersBindedWith(
ENode * pParentNode
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _waitAllKeyboardListenersBindedWith(
EScene * pParentScene
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _notifyAllKeyboardListenersBindedWith(
EScene * pParentScene
);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _waitAllKeyboardListenersBindedWith(
2017-10-14 01:07:34 +08:00
ENode * pParentNode
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD><DAB5>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void _notifyAllKeyboardListenersBindedWith(
2017-10-14 01:07:34 +08:00
ENode * pParentNode
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
2017-10-14 01:07:34 +08:00
static void MouseProc(
UINT message,
WPARAM wParam,
LPARAM lParam
);
2017-10-17 21:22:25 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
2017-10-14 01:07:34 +08:00
static void KeyboardProc(
UINT message,
WPARAM wParam,
LPARAM lParam
);
};
2017-10-13 20:16:31 +08:00
}