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);
}