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中找不到 报错,程序崩溃 具体是什么原因?
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中找不到 报错,程序崩溃 具体是什么原因?
2.注意在你使用HWND类型变量的时候在确定这个变量是否是一个有效的句柄
造成楼主原因多半是你调用FromHandlePermant的时候要么m_hWnd为空,要么是因为窗口还没有创建,或者是窗口已经销毁导致m_hWnd已经无效了,再调用就会有断言失败.