vc 如何判断鼠标光标在某个矩形框内,如果在,显示一个子窗口
展开全部
用BOOL GetCursorPos( LPPOINT lpPoint);得到鼠标的坐标。
然后用BOOL PtInRect(
CONST RECT *lprc, // rectangle
POINT pt // point
);
判断这个点是不是在指点的矩形里。如个在显示子窗口。
然后用BOOL PtInRect(
CONST RECT *lprc, // rectangle
POINT pt // point
);
判断这个点是不是在指点的矩形里。如个在显示子窗口。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也可以在MouseMove 中进行判断,鼠标的位置MouseMove的参数自动给你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GetCursorPos获取鼠标坐标
PtInRect判断某个点是否在区域内
组合一下就搞定 了
PtInRect判断某个点是否在区域内
组合一下就搞定 了
追问
GetCursorPos(&point);
CRect rc;
rc.left=0;
rc.top=70;
rc.right= rc.left+50;
rc.bottom= rc.top+200;
if(rc.PtInRect(point))
{
Cffdlg *pki=new Cffdlg;
pki->Create(IDD_DIALOG3,this);
pki->ShowWindow(SW_SHOW);
}
else
{
Cffdlg *pki=new Cffdlg;
pki->Create(IDD_DIALOG3,this);
pki->ShowWindow(SW_HIDE);
}
这样做对吗?为什么不显示呢?
追答
你是什么时候调用的这个操作啊;
标号@1有问题,每次都new一个?你可以创建一个,然后控制它显示、隐藏就行了,不用每次都创建。
下面更符合你的要求(响应WM_MOUSEMOVE消息):
LRESULT 你的窗口类::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// TODO: Add your message handler code here and/or call default
POINT pt;
pt.x = LOWORD(lParam);
pt.y = HIWORD(lParam);
CRect rc;
rc.left=0;
rc.top=70;
rc.right= rc.left+50;
rc.bottom= rc.top+200;
if(rc.PtInRect(pt))
{
Cffdlg *pki=new Cffdlg;//@1
pki->Create(IDD_DIALOG3,this);//@1
pki->ShowWindow(SW_SHOW);//显示
}
else
{
Cffdlg *pki=new Cffdlg;//@1
pki->Create(IDD_DIALOG3,this);//@1
pki->ShowWindow(SW_HIDE);//隐藏
}
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询