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);能出现泡泡,其他情况都是没有反应
但这种情况的结果是。

右下角的泡泡为我点击的位置。
主要是想解决位置不对的问题。
展开
 我来答
空雪梦见
推荐于2018-05-09 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1156万
展开全部
GetCursorPos之后,
::MapWindowPoints(NULL, GetSafeHwnd(), &pt, 1);
将屏幕坐标转换为窗口客户区坐标看看行不行。因为WM_LBUTTONDOWN要求的坐标是客户端坐标

另外,消息的参数不是这样传的。WM_LBUTTONDOWN中,WPARAM参数为(WPARAM)MK_LBUTTON似乎会比较好
然后LPARAM参数为 (LPARAM)MAKELONG(pt.x, pt.y)

试试看
wangpaishi
2013-11-28 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:749万
展开全部
SendMessage 了解其参数,看是需要的屏幕坐标还是相对于窗口(或视图)的坐标
了解GetCursorPos获取的是屏幕坐标还是相对于窗口(或视图)的坐标
转换一下,为SendMessage需要的坐标
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
stoneleafs
2013-11-29 · TA获得超过102个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:107万
展开全部
你直接调用鼠标单击时的响应函数不就好了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式