遍历窗口中的所有控件

要操作对话框中的子控件,可以根据当前鼠标点击的point 进行判断.

PtInRect可以判断点击是否在目标区域内,然后返回对应的窗口句柄.

以下都是测试代码,用于作个笔记。

1.遍历控件对象

	HWND hWindow   =m_hWnd; 
	CString strText ; 
	int nIndex = 0 ; 
	hWindow =::GetWindow(hWindow,GW_CHILD|GW_HWNDFIRST);; 
	if(hWindow)
	{
		Control.Add( hWindow); 
	}
	else
	{
		return -1;
	}

	while (hWindow)
	{
		hWindow =  ::GetNextWindow(hWindow,  GW_HWNDNEXT  );
		Control.Add( hWindow); 
	}
 
	return 0;

2.判断当前鼠标点击了哪个控件

HWND hWindow = 0 ; 

	int iSize = Control.GetSize() -1; 

	for (int i=iSize ;i>0;i--)
	{
		CWnd*pWnd = FromHandle(Control[i]) ; 
		if(::IsWindow(Control[i]) ==FALSE)
		{
			continue;  
		}

		CRect r ; 
		pWnd->GetWindowRect(r);
		ScreenToClient(&r);

		if(PtInRect(&r,pt))
		{
			return Control[i];
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白的编程日志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值