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;
例程:
方法1:
BOOL AcameraCT::PreTranslateMessage(MSG* pMsg) { int buID; buID= GetWindowLong(pMsg->hwnd,GWL_ID);//由窗口句柄获得ID号,GetWindowLong为获得窗口的ID号。 if(pMsg->message==WM_LBUTTONDOWN) { if(buID==IDC_BUTTON_CT1) //按下 { //在这里添加单击按下事件的程序 } } if(pMsg->message==WM_LBUTTONUP) { if(buID==IDC_BUTTON_CT1) { //在这里添加单击松开事件的程序 } } return CDialog::PreTranslateMessage(pMsg);}
方法2:
BOOL AcameraCT::PreTranslateMessage(MSG* pMsg) { int buID; CWnd* pWnd=WindowFromPoint(pMsg->pt); //获得指定点句柄 buID=pWnd->GetDlgCtrlID();//获得该句柄的ID号。 if(pMsg->message==WM_LBUTTONDOWN) { if(buID==IDC_BUTTON_CT1) //按下 { //在这里添加单击按下事件的程序 } } if(pMsg->message==WM_LBUTTONUP) { if(buID==IDC_BUTTON_CT1) { //在这里添加单击松开事件的程序 } } return CDialog::PreTranslateMessage(pMsg);}