MFC 发送鼠标单击的消息
我想在MFC中做一个程序,鼠标单击时出现一个圆,目前已经实现了,可是我想进一步处理鼠标长按的消息,结果主要代码如下:boolButtonUp;ButtonUp=true;...
我想在MFC中做一个程序,鼠标单击时出现一个圆,目前已经实现了,可是我想进一步处理鼠标长按的消息,结果主要代码如下:
bool ButtonUp;
ButtonUp=true;
void CXXXPPView::OnLButtonDown(UINT nFlags, CPoint point)
{
.........................
ButtonUp=false;
this->Invalidate(true);
CView::OnLButtonDown(nFlags, point);
}
void CXXXPPView::OnLButtonUp(UINT nFlags, CPoint point)
{
ButtonUp=true;
CView::OnLButtonUp(nFlags, point);
}
在别的地方设了定时器,这里就不打了;问题主要是我想在长按状态下每过一段时间就发送一次鼠标左键单击的消息。
void CXXXView::OnTimer(UINT nIDEvent)
{
POINT pt;
GetCursorPos(&pt);
//在这里看别人说的是用SendMessage或者PostMessage
}
我不清楚在上面注释的地方应该怎么添加消息使得能在鼠标当前位置画出一个圆。
试了半天只有::SendMessage(*this,WM_LBUTTONDOWN,pt.x,pt.y);能出现泡泡,其他情况都是没有反应
但这种情况的结果是。
右下角的泡泡为我点击的位置。
主要是想解决位置不对的问题。 展开
bool ButtonUp;
ButtonUp=true;
void CXXXPPView::OnLButtonDown(UINT nFlags, CPoint point)
{
.........................
ButtonUp=false;
this->Invalidate(true);
CView::OnLButtonDown(nFlags, point);
}
void CXXXPPView::OnLButtonUp(UINT nFlags, CPoint point)
{
ButtonUp=true;
CView::OnLButtonUp(nFlags, point);
}
在别的地方设了定时器,这里就不打了;问题主要是我想在长按状态下每过一段时间就发送一次鼠标左键单击的消息。
void CXXXView::OnTimer(UINT nIDEvent)
{
POINT pt;
GetCursorPos(&pt);
//在这里看别人说的是用SendMessage或者PostMessage
}
我不清楚在上面注释的地方应该怎么添加消息使得能在鼠标当前位置画出一个圆。
试了半天只有::SendMessage(*this,WM_LBUTTONDOWN,pt.x,pt.y);能出现泡泡,其他情况都是没有反应
但这种情况的结果是。
右下角的泡泡为我点击的位置。
主要是想解决位置不对的问题。 展开
3个回答
展开全部
GetCursorPos之后,
::MapWindowPoints(NULL, GetSafeHwnd(), &pt, 1);
将屏幕坐标转换为窗口客户区坐标看看行不行。因为WM_LBUTTONDOWN要求的坐标是客户端坐标
另外,消息的参数不是这样传的。WM_LBUTTONDOWN中,WPARAM参数为(WPARAM)MK_LBUTTON似乎会比较好
然后LPARAM参数为 (LPARAM)MAKELONG(pt.x, pt.y)
试试看
::MapWindowPoints(NULL, GetSafeHwnd(), &pt, 1);
将屏幕坐标转换为窗口客户区坐标看看行不行。因为WM_LBUTTONDOWN要求的坐标是客户端坐标
另外,消息的参数不是这样传的。WM_LBUTTONDOWN中,WPARAM参数为(WPARAM)MK_LBUTTON似乎会比较好
然后LPARAM参数为 (LPARAM)MAKELONG(pt.x, pt.y)
试试看
展开全部
SendMessage 了解其参数,看是需要的屏幕坐标还是相对于窗口(或视图)的坐标
了解GetCursorPos获取的是屏幕坐标还是相对于窗口(或视图)的坐标
转换一下,为SendMessage需要的坐标
了解GetCursorPos获取的是屏幕坐标还是相对于窗口(或视图)的坐标
转换一下,为SendMessage需要的坐标
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你直接调用鼠标单击时的响应函数不就好了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询