2017-10-12 23:34:13 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "ebase.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace e2d
|
|
|
|
|
|
{
|
|
|
|
|
|
|
2017-10-13 14:34:33 +08:00
|
|
|
|
class EMsgManager;
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-10-12 23:34:13 +08:00
|
|
|
|
class EObjectManager
|
|
|
|
|
|
{
|
2017-10-13 14:34:33 +08:00
|
|
|
|
friend EApp;
|
|
|
|
|
|
|
2017-10-12 23:34:13 +08:00
|
|
|
|
public:
|
|
|
|
|
|
// <20><>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷų<CDB7>
|
2017-10-13 11:42:36 +08:00
|
|
|
|
static void add(
|
|
|
|
|
|
e2d::EObject * nptr
|
|
|
|
|
|
);
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
|
|
|
|
|
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>нڵ<D0BD>
|
|
|
|
|
|
static void clearAllObjects();
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
// ˢ<><CBA2><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
|
|
|
|
|
|
static void __flush();
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2017-10-13 11:42:36 +08:00
|
|
|
|
|
|
|
|
|
|
class EMouseMsg
|
|
|
|
|
|
{
|
2017-10-13 17:14:00 +08:00
|
|
|
|
friend EMsgManager;
|
|
|
|
|
|
|
2017-10-13 11:42:36 +08:00
|
|
|
|
public:
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
2017-10-13 17:14:00 +08:00
|
|
|
|
enum MSG
|
2017-10-13 11:42:36 +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>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2017-10-13 17:14:00 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static DWORD getX();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static DWORD getY();
|
|
|
|
|
|
|
|
|
|
|
|
// <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 MSG getMsg();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
2017-10-13 11:42:36 +08:00
|
|
|
|
UINT m_nMsg = 0;
|
2017-10-13 17:14:00 +08:00
|
|
|
|
WPARAM m_wParam = 0;
|
|
|
|
|
|
LPARAM m_lParam = 0;
|
2017-10-13 11:42:36 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-10-13 17:14:00 +08:00
|
|
|
|
class EListener :
|
2017-10-13 11:42:36 +08:00
|
|
|
|
public EObject
|
|
|
|
|
|
{
|
2017-10-13 14:34:33 +08:00
|
|
|
|
public:
|
2017-10-13 17:14:00 +08:00
|
|
|
|
EListener();
|
2017-10-13 14:34:33 +08:00
|
|
|
|
|
2017-10-13 17:14:00 +08:00
|
|
|
|
EListener(
|
2017-10-13 14:34:33 +08:00
|
|
|
|
EString name
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
2017-10-13 17:14:00 +08:00
|
|
|
|
bool isRunning() const;
|
2017-10-13 14:34:33 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void start();
|
|
|
|
|
|
|
|
|
|
|
|
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
void stop();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>״̬
|
|
|
|
|
|
void wait();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
void notify();
|
|
|
|
|
|
|
|
|
|
|
|
// <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>
|
2017-10-13 17:14:00 +08:00
|
|
|
|
EScene * getParentScene() const;
|
|
|
|
|
|
|
2017-10-13 14:34:33 +08:00
|
|
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-13 17:14:00 +08:00
|
|
|
|
void setName(
|
|
|
|
|
|
EString name
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>
|
|
|
|
|
|
void setParentScene(
|
|
|
|
|
|
EScene * scene
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
EString m_sName;
|
|
|
|
|
|
bool m_bRunning;
|
|
|
|
|
|
bool m_bWaiting;
|
|
|
|
|
|
EScene * m_pParentScene;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EMouseListener :
|
|
|
|
|
|
public EListener
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
EMouseListener();
|
|
|
|
|
|
|
|
|
|
|
|
EMouseListener(
|
|
|
|
|
|
EString name
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EMouseListener(
|
|
|
|
|
|
const MOUSE_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EMouseListener(
|
|
|
|
|
|
EString name,
|
|
|
|
|
|
const MOUSE_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void runCallback();
|
2017-10-13 14:34:33 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
2017-10-13 17:14:00 +08:00
|
|
|
|
void setCallback(const MOUSE_LISTENER_CALLBACK &callback);
|
2017-10-13 14:34:33 +08:00
|
|
|
|
|
|
|
|
|
|
protected:
|
2017-10-13 17:14:00 +08:00
|
|
|
|
MOUSE_LISTENER_CALLBACK m_callback;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EMouseClickListener :
|
|
|
|
|
|
public EMouseListener
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
EMouseClickListener();
|
|
|
|
|
|
|
|
|
|
|
|
EMouseClickListener(
|
|
|
|
|
|
EString name
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EMouseClickListener(
|
|
|
|
|
|
const MOUSE_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EMouseClickListener(
|
|
|
|
|
|
EString name,
|
|
|
|
|
|
const MOUSE_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void runCallback() override;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EMouseDraggedListener :
|
|
|
|
|
|
public EMouseListener
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
EMouseDraggedListener();
|
|
|
|
|
|
|
|
|
|
|
|
EMouseDraggedListener(
|
|
|
|
|
|
EString name
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EMouseDraggedListener(
|
|
|
|
|
|
const MOUSE_DRAG_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EMouseDraggedListener(
|
|
|
|
|
|
EString name,
|
|
|
|
|
|
const MOUSE_DRAG_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void runCallback() override;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void setCallback(const MOUSE_DRAG_LISTENER_CALLBACK &callback);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
EPoint m_Begin;
|
|
|
|
|
|
EPoint m_End;
|
|
|
|
|
|
MOUSE_DRAG_LISTENER_CALLBACK m_callback;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EKeyMsg
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|
|
|
|
|
enum MESSAGE
|
|
|
|
|
|
{
|
|
|
|
|
|
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>
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EKeyListener :
|
|
|
|
|
|
public EListener
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
EKeyListener();
|
|
|
|
|
|
|
|
|
|
|
|
EKeyListener(
|
|
|
|
|
|
EString name
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EKeyListener(
|
|
|
|
|
|
const KEY_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
EKeyListener(
|
|
|
|
|
|
EString name,
|
|
|
|
|
|
const KEY_LISTENER_CALLBACK &callback
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// ִ<>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void runCallback();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void setCallback(const KEY_LISTENER_CALLBACK &callback);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
KEY_LISTENER_CALLBACK m_callback;
|
2017-10-13 11:42:36 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EMsgManager
|
|
|
|
|
|
{
|
2017-10-13 14:34:33 +08:00
|
|
|
|
friend EApp;
|
|
|
|
|
|
|
2017-10-13 11:42:36 +08:00
|
|
|
|
public:
|
2017-10-13 17:14:00 +08:00
|
|
|
|
static void MouseProc(
|
|
|
|
|
|
UINT message,
|
|
|
|
|
|
WPARAM wParam,
|
|
|
|
|
|
LPARAM lParam
|
2017-10-13 11:42:36 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2017-10-13 17:14:00 +08:00
|
|
|
|
static void KeyboardProc(
|
|
|
|
|
|
UINT message,
|
|
|
|
|
|
WPARAM wParam,
|
|
|
|
|
|
LPARAM lParam
|
|
|
|
|
|
);
|
2017-10-13 11:42:36 +08:00
|
|
|
|
|
|
|
|
|
|
static void addListener(
|
|
|
|
|
|
EMouseListener * listener
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
2017-10-13 14:34:33 +08:00
|
|
|
|
|
2017-10-13 11:42:36 +08:00
|
|
|
|
static void __exec();
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2017-10-12 23:34:13 +08:00
|
|
|
|
}
|