使用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获取鼠标位置并显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)