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转句柄或指针