代码改变世界

ID--HANDLE--HWND三者之间的互相转换(转)

2012-11-05 08:40  龙成  阅读(4006)  评论(0编辑  收藏  举报

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