⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mouse.cpp

📁 墨香完整原代码 C++ 值得研究 可以编译
💻 CPP
字号:
// Mouse.cpp: implementation of the CMouse class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Mouse.h"

CMouse g_mouse;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

//#define _INPUTDEBUG_
#ifdef _INPUTDEBUG_
FILE* inputtestFile;
#endif

CMouse::CMouse()
{
	m_WheelMsg = 0;

#ifdef _INPUTDEBUG_
	inputtestFile = fopen("../inputtest.txt","w");
#endif
	
}

CMouse::~CMouse()
{

#ifdef _INPUTDEBUG_
	fclose(inputtestFile);
#endif

}

#ifdef _INPUTDEBUG_
#define INPUTLOG(a)		fprintf(inputtestFile,"%s  %d\n",a,gCurTime)
#else
#define INPUTLOG(a)
#endif

void CMouse::GetWindowMessage(HWND hWnd, DWORD wmsg,WPARAM wParam,LPARAM lParam)
{
	m_hWnd = hWnd;
	switch(wmsg)
	{	
	case WM_LBUTTONUP:			m_LMousePressed = 0;		INPUTLOG("L UP");		break;
	case WM_RBUTTONUP:			m_RMousePressed = 0;		INPUTLOG("R UP");		break;
	case WM_MBUTTONUP:			m_MMousePressed = 0;		INPUTLOG("M UP");		break;

	case WM_LBUTTONDOWN:		m_LMousePressed = 1;	    INPUTLOG("L DN");		break;
	case WM_RBUTTONDOWN:		m_RMousePressed = 1;		INPUTLOG("R DN");		break;
	case WM_MBUTTONDOWN:		m_MMousePressed = 1;		INPUTLOG("M DN");		break;

	case WM_LBUTTONDBLCLK:		m_LMouseDblPressed = 1;		INPUTLOG("L DB");		break;
	case WM_RBUTTONDBLCLK:		m_RMouseDblPressed = 1;		INPUTLOG("R DB");		break;
	case WM_MBUTTONDBLCLK:		m_MMouseDblPressed = 1;		INPUTLOG("M DB");		break;

	case 0x020A:	//WM_MOUSEWHEEL
		{
			int xPos = LOWORD(lParam); // horizontal position of pointer 
			int yPos = HIWORD(lParam); // vertical position of pointer 
			if(int(wParam) > 0)		//wheel up
				++m_WheelMsg;
			else								//wheel down
				--m_WheelMsg;
		}
		break;
	}
}


void CMouse::MouseStateCheck()
{
	//////////////////////////////////////////////////////////////////////////
	// 付快胶 泅犁 惑怕 掘绢坷绰 何盒
	POINT pt;
	GetCursorPos(&pt);
	ScreenToClient(m_hWnd,&pt);
	m_MouseX = pt.x;
	m_MouseY = pt.y;	
	//////////////////////////////////////////////////////////////////////////
	

	m_LMouse = m_LMousePressed;
	m_RMouse = m_RMousePressed;

    if ( m_LMouse  == m_LMouseOld )			m_LMouseCheck = 0;
	else									m_LMouseCheck = 1;
    if ( m_RMouse  == m_RMouseOld )			m_RMouseCheck = 0;
	else									m_RMouseCheck = 1;
    if ( m_MMouse  == m_MMouseOld )			m_MMouseCheck = 0;
	else									m_MMouseCheck = 1;

	if ( m_LMouse==1 && m_LMouseCheck==1 )  m_LMouseDown = 1;
    else									m_LMouseDown = 0;
	if ( m_RMouse==1 && m_RMouseCheck==1 )  m_RMouseDown = 1;
	else									m_RMouseDown = 0;
	if ( m_MMouse==1 && m_MMouseCheck==1 )  m_MMouseDown = 1;
	else									m_MMouseDown = 0;

	if ( m_LMouse==0 && m_LMouseCheck==1 )  m_LMouseUp = 1;
    else									m_LMouseUp = 0;
	if ( m_RMouse==0 && m_RMouseCheck==1 )  m_RMouseUp = 1;
	else									m_RMouseUp = 0;
	if ( m_MMouse==0 && m_MMouseCheck==1 )  m_MMouseUp = 1;
	else									m_MMouseUp = 0;

    if ( m_LMouse==1 && m_LMouseCheck==0 )	m_LMouseDrag = 1;
	else									m_LMouseDrag = 0;
    if ( m_RMouse==1 && m_RMouseCheck==0 )	m_RMouseDrag = 1;
	else									m_RMouseDrag = 0;
    if ( m_MMouse==1 && m_MMouseCheck==0 )	m_MMouseDrag = 1;
	else									m_MMouseDrag = 0;

	if( m_LMouseDblPressed == 0 && (m_LMouseDblClickOld != m_LMouseDblPressed) )
		m_LMouseDblClick = 1;
	else
		m_LMouseDblClick = 0;

	if( m_RMouseDblPressed == 0 && (m_RMouseDblClickOld != m_RMouseDblPressed) )
		m_RMouseDblClick = 1;
	else
		m_RMouseDblClick = 0;

	if( m_MMouseDblPressed == 0 && (m_MMouseDblClickOld != m_MMouseDblPressed) )
		m_MMouseDblClick = 1;
	else
		m_MMouseDblClick = 0;

	m_Wheel = m_WheelMsg;
	m_WheelMsg = 0;

	m_LMouseOld = m_LMouse;
	m_RMouseOld = m_RMouse;
	m_MMouseOld = m_MMouse;

	m_LMouseDblClickOld = m_LMouseDblPressed;
	m_RMouseDblClickOld = m_RMouseDblPressed;
	m_MMouseDblClickOld = m_MMouseDblPressed;

	m_LMouseDblPressed = 0;
	m_RMouseDblPressed = 0;
	m_MMouseDblPressed = 0;
	
	m_MouseAxisX = m_MouseOldX - m_MouseX;
	m_MouseAxisY = m_MouseOldY - m_MouseY;

	m_MouseOldX = m_MouseX;
	m_MouseOldY = m_MouseY;
	
}

int CMouse::GetMouseX()
{
	return m_MouseX;
}

int CMouse::GetMouseY()
{
	return m_MouseY;
}

int  CMouse::GetMouseAxisX()
{
	return m_MouseAxisX;
}

int  CMouse::GetMouseAxisY()
{
	return m_MouseAxisY;
}

BOOL CMouse::LButtonPressed()
{
	return m_LMousePressed;
}
BOOL CMouse::RButtonPressed()
{
	return m_RMousePressed;
}
BOOL CMouse::MButtonPressed()
{
	return m_MMousePressed;
}

BOOL CMouse::LButtonDown()
{
	return m_LMouseDown;
}
BOOL CMouse::RButtonDown()
{
	return m_RMouseDown;
}
BOOL CMouse::MButtonDown()
{
	return m_MMouseDown;
}

BOOL CMouse::LButtonUp()
{	
	return m_LMouseUp;
}
BOOL CMouse::RButtonUp()
{
	return m_RMouseUp;
}
BOOL CMouse::MButtonUp()
{
	return m_MMouseUp;
}

BOOL CMouse::LButtonClick()
{
	return m_LMouseUp;
}
BOOL CMouse::RButtonClick()
{
	return m_RMouseUp;
}
BOOL CMouse::MButtonClick()
{
	return m_MMouseUp;
}

BOOL CMouse::LButtonDrag()
{
	return m_LMouseDrag;
}
BOOL CMouse::RButtonDrag()
{
	return m_RMouseDrag;
}
BOOL CMouse::MButtonDrag()
{
	return m_MMouseDrag;
}



BOOL CMouse::LButtonDoubleClick()
{
	return m_LMouseDblClick;
}
BOOL CMouse::RButtonDoubleClick()
{
	return m_RMouseDblClick;
}
BOOL CMouse::MButtonDoubleClick()
{
	return m_MMouseDblClick;
}

int CMouse::GetWheel()
{
	return m_Wheel;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -