MFC 判断鼠标是否在控件范围内

本文介绍了四种检测鼠标是否位于特定控件区域内的方法。这些方法包括使用WINDOWPLACEMENT结构获取控件位置并判断鼠标坐标是否在该范围内、通过GetWindowRect与ScreenToClient组合获取屏幕坐标系下的控件位置等。
部署运行你感兴趣的模型镜像
共有以下几种办法:
   //----------------------------------------------------------------------------------------------------------------1---------------------------//
void C********::OnMouseMove(UINT nFlags, CPoint point) 
{
WINDOWPLACEMENT wp;   
RECT rect;   
GetDlgItem(IDC_SLIDER)-> GetWindowPlacement(&wp);  //client坐标系  
rect=wp.rcNormalPosition;   
if(point.x> rect.left && point.x < rect.right   
&& point.y> rect.top && point.y <rect.bottom)   
{  
       MessageBox(_T("yeah"));  
}
}  
   //----------------------------------------------------------------------------------------------------------------------2---------------------//
//另,仍可以用另一种方法  
void C********::OnMouseMove(UINT nFlags, CPoint point) 
{
CRect rect  
GetDlgItem( 图像控件ID)-> GetwindowRect(&rect);  //screen坐标系  
ScreenToClient(&rect);   
if(point.x> rect.left&&point.x <rect.right&&point.y <rect.bottom&&point.y> rect.top)   
{   
    //...  
}   
}
//------------------------------------------------------------------------------------------------------------------------3-------------------//
void C********::OnMouseMove(UINT nFlags, CPoint point) 
{
ClientToScreen(&point);
CRect rect;
GetDlgItem(图像控件ID)->GetClientRect(rect);
GetDlgItem(图像控件ID)->ClientToScreen(rect);
if(rect.PtInRect(point) ) //鼠标是否在控件范围之内
{

}
CDialog::OnMouseMove(nFlags, point);
}
  //------------------------------------------------------------------------------------------------------------------------4-------------------//
CRect rect;
	GetDlgItem(图像控件ID)->GetClientRect(rect);
GetDlgItem(图像控件ID)->ClientToScreen(rect);
	CPoint point;
	GetCursorPos(&point);  //通过系统API获得当前鼠标位置
	if(rect.PtInRect(point) )   //鼠标是否在控件范围之内
	{
		/////,,,,,,,,,,,,,,,,
	}

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值