Magic_Game/Easy2D/Tool/EMsgManager.cpp

116 lines
2.1 KiB
C++

#include "..\etools.h"
#include "..\Win\winbase.h"
#include <vector>
// 鼠标消息
e2d::EMouseMsg mouseMsg;
// 鼠标消息监听器
std::vector<e2d::EMouseListener*> m_vMouseListeners;
// 按键消息监听器
//std::vector<e2d::EKeyListener*> m_vKeyListeners;
DWORD e2d::EMouseMsg::getX()
{
return LOWORD(mouseMsg.m_lParam);
}
DWORD e2d::EMouseMsg::getY()
{
return HIWORD(mouseMsg.m_lParam);
}
e2d::EPoint e2d::EMouseMsg::getPos()
{
return EPoint(LOWORD(mouseMsg.m_lParam), HIWORD(mouseMsg.m_lParam));
}
bool e2d::EMouseMsg::isLButtonDown()
{
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_LBUTTON;
}
bool e2d::EMouseMsg::isMButtonDown()
{
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_MBUTTON;
}
bool e2d::EMouseMsg::isRButtonDown()
{
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_RBUTTON;
}
bool e2d::EMouseMsg::isShiftDown()
{
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_SHIFT;
}
bool e2d::EMouseMsg::isCtrlDown()
{
return GET_KEYSTATE_WPARAM(mouseMsg.m_wParam) == MK_CONTROL;
}
DWORD e2d::EMouseMsg::getWheelDelta()
{
return GET_WHEEL_DELTA_WPARAM(mouseMsg.m_wParam);
}
e2d::EMouseMsg::MSG e2d::EMouseMsg::getMsg()
{
return MSG(mouseMsg.m_nMsg);
}
void e2d::EMsgManager::MouseProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// 保存鼠标消息
mouseMsg.m_nMsg = message;
mouseMsg.m_wParam = wParam;
mouseMsg.m_lParam = lParam;
// 执行鼠标消息监听函数
for (auto mlistener : m_vMouseListeners)
{
if (mlistener->isRunning())
{
mlistener->runCallback();
}
}
}
void e2d::EMsgManager::KeyboardProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
case WM_KEYUP:
case WM_CHAR:
break;
}
for (auto mlistener : m_vMouseListeners)
{
if (mlistener->isRunning())
{
mlistener->runCallback();
}
}
}
void e2d::EMsgManager::addListener(e2d::EMouseListener * listener)
{
if (listener)
{
listener->start();
listener->retain();
listener->setParentScene(EApp::get()->getLoadingScene());
m_vMouseListeners.push_back(listener);
}
}
void e2d::EMsgManager::__exec()
{
}