SHGetFileInfo(path,0,psfi,sizeof(SHFILEINFO),SHGFI_LARGEICON);
path是我的路径
psfi是这么定义的SHFILEINFOW *psfi;这句代码哪里有问题呢 ,怎么一运行就报错。
设置断点调试的话才调试两步就一样报错。
好像进入到了operator PCXSTR() const throw()
{
return( m_pszData );
}
错误为:Unhandled exception at 0x747de825 in testlistcontrol2getiteminfo.exe: 0xC0000005: Access violation writing location 0xcccccccc.

解决方案 »

  1.   


    SHFILEINFOW sfi = {0};
    SHGetFileInfo(path,0,&sfi,sizeof(SHFILEINFO),SHGFI_LARGEICON);
    没有分配空间,函数执行会填充那个结构体。
      

  2.   

    SHFILEINFO sfi = {0};
    DWORD dwRet = SHGetFileInfo(path,0,&sfi,sizeof(SHFILEINFO),SHGFI_ICON|SHGFI_LARGEICON);
    试下这样。
      

  3.   

    为什么在public 那边定义SHFILEINFOW psfi = {NULL};的话报错,显示Error :data member initializer is not allowed。而在我所在的函数那里就可以呢。
      

  4.   

    DWORD dwRet= 要怎么用呢~是什么呢
      

  5.   

    建议多看看MSDN和函数的参数表示的意义。返回值总是有用的,MSDN上都要说明
      

  6.   

    建议多看看MSDN和函数的参数表示的意义。返回值总是有用的,MSDN上都要说明ok.不过有时候看不太明白