遍历窗口中所有控件的id

HWND是句柄,CWnd是MFC窗体类。

HWND是Windows系统中对所有窗口的一种唯一标识。
CWnd是MFC类库中所有窗口类的基类,其中封装了HWND句柄成员对象是m_hWnd。

如何得到窗口对象指针CWnd * pCWnd
1,在窗体里,直接用 this->,//this就是本窗体的窗口对象指针
2,pCWnd=GetDlgItem(ID_EDIT_NAME);

如何得到窗口句柄 HWND Handle
1,Handle=this->m_hWnd
2,Handle=GetDlgItem(ID_EDIT_NAME);

转换
CWnd * pCWnd;
HWND Handle;
pCWnd=FromHandle(Handle);//句柄到指针
Handle=GetSafeHwnd(pCWnd); //或者Handle=pCWnd->m_hWnd;//指针到句柄

遍历 窗口所有控件
HWND hWnd = ::GetWindow(m_hWnd, GW_CHILD);//句柄
while (hWnd)
{
int nID = ::GetDlgCtrlID(hWnd);//句柄转id
XXXXX;
hWnd = ::GetWindow(hWnd, GW_HWNDNEXT);
}

窗口ID,句柄,指针三者相互转换函数
ID–HANDLE–HWND三者之间的互相转换
id->句柄-----------hWnd = ::GetDlgItem(hParentWnd,id);
id->指针-----------CWnd=::GetDlgItem();
句柄->id-----------id = GetWindowLong(hWnd,GWL_ID);
句柄->指针--------CWnd *pWnd=CWnd::FromHandle(hWnd);
指针->ID----------id = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);
指针->句柄--------hWnd=cWnd.GetSafeHandle() or mywnd->m_hWnd;

GetDlgCtrlID(hWnd或者pWnd);//获得id
GetDlgItem(id)//由id转句柄或指针

来自 https://blog.csdn.net/cy757/article/details/4423756

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值