510 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			510 lines
		
	
	
		
			8.9 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 getX();
 | ||
| 
 | ||
| 	// 資函報炎忿恫炎
 | ||
| 	static DWORD getY();
 | ||
| 
 | ||
| 	// 資函報炎恫炎
 | ||
| 	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 EKeyMsg
 | ||
| {
 | ||
| 	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(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	// 資函酌油匂彜蓑
 | ||
| 	bool isRunning() const;
 | ||
| 
 | ||
| 	// 資函酌油匂航軟彜蓑
 | ||
| 	bool isWaiting() const;
 | ||
| 
 | ||
| 	// 尼強酌油
 | ||
| 	void start();
 | ||
| 
 | ||
| 	// 唯峭酌油
 | ||
| 	void stop();
 | ||
| 
 | ||
| 	// 序秘吉棋彜蓑
 | ||
| 	void wait();
 | ||
| 
 | ||
| 	// 蚕佰
 | ||
| 	void notify();
 | ||
| 
 | ||
| 	// 資函酌油匂兆各
 | ||
| 	EString getName() const;
 | ||
| 
 | ||
| 	// 資函酌油匂侭壓魁尚
 | ||
| 	EScene * getParentScene() const;
 | ||
| 
 | ||
| 	// 資函酌油匂侭壓准泣
 | ||
| 	ENode * getParentNode() const;
 | ||
| 
 | ||
| 	// 譜崔酌油匂兆各
 | ||
| 	void setName(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	// 鰯協酌油匂欺魁尚
 | ||
| 	virtual void bindWith(
 | ||
| 		EScene * pParentScene
 | ||
| 	) = 0;
 | ||
| 
 | ||
| 	// 鰯協酌油匂欺准泣
 | ||
| 	virtual void bindWith(
 | ||
| 		ENode * pParentNode
 | ||
| 	) = 0;
 | ||
| 
 | ||
| protected:
 | ||
| 	EString		m_sName;
 | ||
| 	bool		m_bRunning;
 | ||
| 	bool		m_bWaiting;
 | ||
| 	EScene *	m_pParentScene;
 | ||
| 	ENode *		m_pParentNode;
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| // 報炎<E5A0B1>連酌油匂
 | ||
| class EMouseListener :
 | ||
| 	public EListener
 | ||
| {
 | ||
| public:
 | ||
| 	EMouseListener();
 | ||
| 
 | ||
| 	EMouseListener(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	EMouseListener(
 | ||
| 		const MOUSE_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	EMouseListener(
 | ||
| 		EString name,
 | ||
| 		const MOUSE_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	// 峇佩酌油匂指距痕方
 | ||
| 	virtual void runCallback();
 | ||
| 
 | ||
| 	// 譜崔酌油匂指距痕方
 | ||
| 	void setCallback(
 | ||
| 		const MOUSE_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	// 鰯協酌油匂欺魁尚
 | ||
| 	virtual void bindWith(
 | ||
| 		EScene * pParentScene
 | ||
| 	) override;
 | ||
| 
 | ||
| 	// 鰯協酌油匂欺准泣
 | ||
| 	virtual void bindWith(
 | ||
| 		ENode * pParentNode
 | ||
| 	) override;
 | ||
| 
 | ||
| protected:
 | ||
| 	MOUSE_LISTENER_CALLBACK m_callback;
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| // 報炎泣似<E6B3A3>連酌油匂
 | ||
| class EMouseClickListener :
 | ||
| 	public EMouseListener
 | ||
| {
 | ||
| public:
 | ||
| 	EMouseClickListener();
 | ||
| 
 | ||
| 	EMouseClickListener(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	EMouseClickListener(
 | ||
| 		const MOUSE_CLICK_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	EMouseClickListener(
 | ||
| 		EString name,
 | ||
| 		const MOUSE_CLICK_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	// 峇佩酌油匂指距痕方
 | ||
| 	virtual void runCallback() override;
 | ||
| 
 | ||
| 	// 譜崔酌油匂指距痕方
 | ||
| 	void setCallback(
 | ||
| 		const MOUSE_CLICK_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| protected:
 | ||
| 	MOUSE_CLICK_LISTENER_CALLBACK m_callback;
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| // 報炎溶強<E6BAB6>連酌油匂
 | ||
| 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
 | ||
| 	);
 | ||
| 
 | ||
| 	// 峇佩酌油匂指距痕方
 | ||
| 	virtual void runCallback() override;
 | ||
| 
 | ||
| 	// 譜崔酌油匂指距痕方
 | ||
| 	void setCallback(
 | ||
| 		const MOUSE_DRAG_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| protected:
 | ||
| 	EPoint m_Begin;
 | ||
| 	EPoint m_End;
 | ||
| 	MOUSE_DRAG_LISTENER_CALLBACK m_callback;
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| // 梓囚<E6A293>連酌油匂
 | ||
| class EKeyboardListener :
 | ||
| 	public EListener
 | ||
| {
 | ||
| public:
 | ||
| 	EKeyboardListener();
 | ||
| 
 | ||
| 	EKeyboardListener(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	EKeyboardListener(
 | ||
| 		const KEY_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	EKeyboardListener(
 | ||
| 		EString name,
 | ||
| 		const KEY_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	// 峇佩酌油匂指距痕方
 | ||
| 	virtual void runCallback();
 | ||
| 
 | ||
| 	// 譜崔酌油匂指距痕方
 | ||
| 	void setCallback(
 | ||
| 		const KEY_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	// 鰯協酌油匂欺魁尚
 | ||
| 	virtual void bindWith(
 | ||
| 		EScene * pParentScene
 | ||
| 	) override;
 | ||
| 
 | ||
| 	// 鰯協酌油匂欺准泣
 | ||
| 	virtual void bindWith(
 | ||
| 		ENode * pParentNode
 | ||
| 	) override;
 | ||
| 
 | ||
| protected:
 | ||
| 	KEY_LISTENER_CALLBACK m_callback;
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| // 梓囚梓和<E6A293>連酌油
 | ||
| class EKeyPressListener :
 | ||
| 	public EKeyboardListener
 | ||
| {
 | ||
| public:
 | ||
| 	EKeyPressListener();
 | ||
| 
 | ||
| 	EKeyPressListener(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	EKeyPressListener(
 | ||
| 		const KEY_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	EKeyPressListener(
 | ||
| 		EString name,
 | ||
| 		const KEY_LISTENER_CALLBACK &callback
 | ||
| 	);
 | ||
| 
 | ||
| 	// 峇佩酌油匂指距痕方
 | ||
| 	virtual void runCallback() override;
 | ||
| };
 | ||
| 
 | ||
| 
 | ||
| // <20>連砿尖匂
 | ||
| class EMsgManager
 | ||
| {
 | ||
| 	friend EApp;
 | ||
| 
 | ||
| public:
 | ||
| 	// 鰯協報炎<E5A0B1>連酌油匂欺魁尚
 | ||
| 	static void bindListenerWith(
 | ||
| 		EMouseListener * listener,
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 鰯協報炎<E5A0B1>連酌油匂欺魁尚
 | ||
| 	static void bindListenerWith(
 | ||
| 		EKeyboardListener * listener,
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 鰯協梓囚<E6A293>連酌油匂欺准泣
 | ||
| 	static void bindListenerWith(
 | ||
| 		EMouseListener * listener,
 | ||
| 		ENode * pParentNode
 | ||
| 	);
 | ||
| 
 | ||
| 	// 鰯協梓囚<E6A293>連酌油匂欺准泣
 | ||
| 	static void bindListenerWith(
 | ||
| 		EKeyboardListener * listener,
 | ||
| 		ENode * pParentNode
 | ||
| 	);
 | ||
| 
 | ||
| 	// 尼強醤嗤<E986A4>揖兆各議酌油匂
 | ||
| 	static void startListener(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	// 唯峭醤嗤<E986A4>揖兆各議酌油匂
 | ||
| 	static void stopListener(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	// 評茅醤嗤<E986A4>揖兆各議酌油匂
 | ||
| 	static void delListener(
 | ||
| 		EString name
 | ||
| 	);
 | ||
| 
 | ||
| 	// 尼強侭嗤報炎<E5A0B1>連酌油匂
 | ||
| 	static void startAllMouseListener();
 | ||
| 
 | ||
| 	// 唯峭侭嗤報炎<E5A0B1>連酌油匂
 | ||
| 	static void stopAllMouseListener();
 | ||
| 
 | ||
| 	// 賠茅侭嗤報炎<E5A0B1>連酌油匂
 | ||
| 	static void clearAllMouseListeners();
 | ||
| 
 | ||
| 	// 尼強侭嗤梓囚<E6A293>連酌油匂
 | ||
| 	static void startAllKeyboardListener();
 | ||
| 
 | ||
| 	// 唯峭侭嗤梓囚<E6A293>連酌油匂
 | ||
| 	static void stopAllKeyboardListener();
 | ||
| 
 | ||
| 	// 賠茅侭嗤梓囚<E6A293>連酌油匂
 | ||
| 	static void clearAllKeyboardListeners();
 | ||
| 
 | ||
| 	// 尼強鰯協壓魁尚貧議侭嗤報炎<E5A0B1>連酌油匂
 | ||
| 	static void startAllMouseListenersBindWithScene(
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 嶷尼鰯協壓魁尚貧議侭嗤報炎<E5A0B1>連酌油匂
 | ||
| 	static void stopAllMouseListenersBindWithScene(
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 尼強鰯協壓魁尚貧議侭嗤梓囚<E6A293>連酌油匂
 | ||
| 	static void startAllKeyboardListenersBindWithScene(
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 嶷尼鰯協壓魁尚貧議侭嗤梓囚<E6A293>連酌油匂
 | ||
| 	static void stopAllKeyboardListenersBindWithScene(
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 航軟鰯協壓魁尚貧議侭嗤酌油匂
 | ||
| 	static void waitAllListenersBindWithScene(
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 嶷尼鰯協壓魁尚貧議侭嗤酌油匂
 | ||
| 	static void notifyAllListenersBindWithScene(
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 賠腎鰯協壓魁尚貧議侭嗤酌油匂
 | ||
| 	static void clearAllListenersBindWithScene(
 | ||
| 		EScene * pParentScene
 | ||
| 	);
 | ||
| 
 | ||
| 	// 航軟鰯協壓准泣貧議侭嗤酌油匂
 | ||
| 	static void waitAllListenersBindWithNode(
 | ||
| 		ENode * pParentNode
 | ||
| 	);
 | ||
| 
 | ||
| 	// 嶷尼鰯協壓准泣貧議侭嗤酌油匂
 | ||
| 	static void notifyAllListenersBindWithNode(
 | ||
| 		ENode * pParentNode
 | ||
| 	);
 | ||
| 
 | ||
| 	// 賠腎鰯協壓准泣貧議侭嗤酌油匂
 | ||
| 	static void clearAllListenersBindWithNode(
 | ||
| 		ENode * pParentNode
 | ||
| 	);
 | ||
| 
 | ||
| private:
 | ||
| 	static void MouseProc(
 | ||
| 		UINT message,
 | ||
| 		WPARAM wParam,
 | ||
| 		LPARAM lParam
 | ||
| 	);
 | ||
| 
 | ||
| 	static void KeyboardProc(
 | ||
| 		UINT message,
 | ||
| 		WPARAM wParam,
 | ||
| 		LPARAM lParam
 | ||
| 	);
 | ||
| };
 | ||
| 
 | ||
| } |