CheaderCtrl更新项时FromHandlePermant找不到m_hwnd是什么原因?  简单点说就是:  
  setHeader()
  {
  HDITEM hdi;
memset(&hdi,0,sizeof(HDITEM));
hdi.mask = HDI_TEXT | HDI_WIDTH | HDI_FORMAT;
hdi.fmt = HDF_STRING | HDF_CENTER | HDF_OWNERDRAW;      pHeader = new CHeadCtrl;
  pHeader->CreateEx(0,HDS_BUTTONS,CRect(2,2,160,20),this,1024);  for(int i= 0 ; i < 1240; i++)
{
hdi.cxy = 80;   
pHeader->InsertItem( i,&hdi);   
}
}
/////////////////////
refreshHeader()
{  HDITEM hdi;
memset(&hdi,0,sizeof(HDITEM));
hdi.mask = HDI_TEXT | HDI_WIDTH | HDI_FORMAT;
hdi.fmt = HDF_STRING | HDF_CENTER | HDF_OWNERDRAW;  for(int i= 0 ; i < 1240; i++)
{
hdi.cxy = 80;   
pHeader->SetItem( i,&hdi); //执行到这句的时候,出错,具体就是
}}
具体就是FromHandlePermant找不到m_hwnd,就是pHeader的m_hwnd在fromhandlepermant中找不到 报错,程序崩溃 具体是什么原因?

解决方案 »

  1.   

    CheaderCtrl的SetItem时FromHandlePermant找不到m_hwnd是什么原因? 
      

  2.   

    1.注意大小写
    2.注意在你使用HWND类型变量的时候在确定这个变量是否是一个有效的句柄
    造成楼主原因多半是你调用FromHandlePermant的时候要么m_hWnd为空,要么是因为窗口还没有创建,或者是窗口已经销毁导致m_hWnd已经无效了,再调用就会有断言失败.