MFC中,关于得到鼠标在对话框上的坐标值

MFC中,关于得到鼠标在对话框上的坐标值,第1张

使用GetCursorPos()函数

假设是用pciture控件显示。

那么可以先改变控件的ID,然后定义一个CSTATIC 类型的变量如m_ctrlPic。

先得到当前鼠标坐标

CPoint point;

GetCursorPos( &point );

然后得到picture控件rect。

CRect rect;

::GetClientRect(m_ctrlPicGetSafeHwnd(), &rect);

然后把当前鼠标坐标转为相对于rect的坐标。

::ScreenToClient(m_ctrlPicGetSafeHwnd(), &point);

然后判断该点坐标是否在rect内,在就显示

if(rectPtInRect(point))

{

CString strPos;

strPosFormat("%d:%d", pointx, pointy);

AfxMessageBox(strPos);

}

}

CRect r(0,0,100,100); //控件区域

CPoint pt(0,0);

ScreenToClient(&r);

ScreenToClient(&pt);

#include <iostream>

#include <windowsh>

int main()

{

POINT pt;

while(1)

{

GetCursorPos(&pt);//调用API函数

printf("%d,%d\n",ptx,pty);

Sleep(100);

}

return 0;

}

控件不会默认捕获鼠标消息,因此处理代码放在对话框的OnLButtonDown这样的鼠标消息中即可。

鼠标消息函数会默认带入鼠标位置,而框的位置可以通过控件变量或指针的GetWindowRect获取。

之后通过rectPtInRect(point)函数即可判断鼠标是否在上,至于上的具体位置,就需要你通过CRect或者CRgn来一一记录了(这并不太容易),之后依然是通过PtInRect和CRgn的PtInRegion来判断是否在区域(这需要一个循环语句)。

至于显示另一个,通过CBitmap导入资源后,就是控件的SetBitmap就可以了。

参考一下

point

是相对CLYHchxuView的坐标

如果你要获的是相对CLYHchxuView左上角的坐标

就不需要转换

如果你你要获的是相对程序主窗口左上角的坐标

可以这样算

void CLYHchxuView::OnLButtonDblClk(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CRect rc;

GetParent()->GetWindowRect(&rc);

ClientToScreen(&point);

docx=pointx-rcleft;

docy=pointy-rctop;

Invalidate();

CView::OnLButtonDblClk(nFlags, point);

}

以上就是关于MFC中,关于得到鼠标在对话框上的坐标值全部的内容,包括:MFC中,关于得到鼠标在对话框上的坐标值、mfc 获取鼠标坐标 我需要在某个控件内获取 不是整个对话框、mfc获取鼠标位置并显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9875612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存