触摸屏 触摸操作 鼠标点击事件

环境:window

语言:C++

触摸屏 触摸操作实现。通过鼠标左键或者右键点击事件,获取首尾点坐标(down时获取首点坐标,up时获取尾点坐标),计算x、y距离差值。根据差值判断移动方向。

代码:

1.在PreTranslateMessage()中,预先对消息事件进行处理。 m_bLeftButtonDown为鼠标左键Down标志位,用于记录鼠标左键是否点击,在右键Up信息中,只有此标志位为真,才记录鼠标左键Up信息(尾点)。

BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此添加专用代码和/或调用基类
	if(WM_LBUTTONDOWN== pMsg->message)
	{ 
		
		if (m_bLeftButtonDown==FALSE)
		{
			int xPos = LOWORD(pMsg->lParam);
			int yPos = HIWORD(pMsg->lParam);
			
			m_LastPoint.x=xPos;
			m_LastPoint.y=yPos;
			::ClientToScreen(pMsg->hwnd,&m_LastPoint);
			m_bLeftButtonDown=TRUE;

		}
		
	}else if (WM_LBUTTONUP==pMsg->message)
	{	
 		if (m_bLeftButtonDown)
 		{
			int xPos = LOWORD(pMsg->lParam);
			int yPos = HIWORD(pMsg->lParam);
			m_CrrentPoint.x=xPos;
			m_CrrentPoint.y=yPos;
			::ClientToScreen(pMsg->hwnd,&m_CrrentPoint);
			m_bLeftButtonDown=FALSE;
			CreateDirectMessage();
		}
	}

	return CDialogEx::PreTranslateMessage(pMsg);
}


2. 在CreateDirectMessage()函数中进行首尾点坐标计算,通过两点差值判断移动方向,函数返回值为int类型 。可通过此值调用后续的向上滑动、向下滑动、向左滑动、向右滑动的事件函数(SendUpMessage(),SendDownMessage(),SendLeftMessage(),SendRightMessage())。 函数中设定当鼠标down ,up首尾点差值大于30时判定调用滑动事件(即x,y移动距离大于30才判定为滑动事件,否者为点击事件)。


int CMyDlg::CreateDirectMessage()
{
	int iWidh=m_LastPoint.x-m_CrrentPoint.x;
	int iHei=m_LastPoint.y-m_CrrentPoint.y;
	
	if (abs(iHei)>abs(iWidh))
	{
		if (iHei>30)
		{
			
			SendUpMessage();
		
			return 1;
		}else if(iHei<-30)
		{
			SendDownMessage();
			return 2;
		}else
		{
			return 0;
		}
	}else 
	{
		if (iWidh>30)
		{
			SendLeftMessage();
			return 3;
		}else if(iWidh<-30)
		{
			SendRightMessage();
			
			return 4;
		}else
		{
			return 0;
		}
	}
}



  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值