这是VS2005/VC++生成的一段程序void CTreeTestDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
CString str=m_Tree1.GetItemText(pNMTreeView->itemNew.hItem);
m_Static1.SetWindowText(str);}期中的这个语句LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);的功能是什么?我知道前半部分是定义了一个指向对性LPNMTREEVIEW 的指针变量 pNMTreeView,后半部分阶段reinterpret_cast<LPNMTREEVIEW>(pNMHDR);是什么意思呢?请高手给解释一下,多谢!

解决方案 »

  1.   

    就是一种类型转换,书上说MC++有五种方法,此为其中的一种,另外还不dynamic_cast,static_cast,const_cast,_try_cast,各种不太一样。
      

  2.   

    reinterpret_cast,指针类型的转换
      

  3.   

    这个语句的作用搞明白了LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);这是一个类型转换和赋值的语句,是把 NMHDR * 类型的变量 pNMHDR 的值转换成 LPNMTREEVIEW 类型,并赋值给 变量 pNMTreeView 。reinterpret_cast 是将 pNMHDR 值不进行任何改变的赋给变量 pNMTreeView ,或者说是一种强制型的类型转换。