vc 如何判断鼠标光标在某个矩形框内,如果在,显示一个子窗口

 我来答
y5254y
2012-02-15 · TA获得超过893个赞
知道小有建树答主
回答量:219
采纳率:50%
帮助的人:139万
展开全部
用BOOL GetCursorPos( LPPOINT lpPoint);得到鼠标的坐标。
然后用BOOL PtInRect(
CONST RECT *lprc, // rectangle
POINT pt // point
);
判断这个点是不是在指点的矩形里。如个在显示子窗口。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MFC问题
2012-02-15 · TA获得超过101个赞
知道答主
回答量:118
采纳率:0%
帮助的人:113万
展开全部
也可以在MouseMove 中进行判断,鼠标的位置MouseMove的参数自动给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83140a0
2012-02-16
知道答主
回答量:7
采纳率:0%
帮助的人:3万
展开全部
GetCursorPos获取鼠标坐标
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式