原先代码是在VC6.0里面写的,然后我把加载略缩图的图像移植到VS2012里面去,结果发现程序会奔溃,经过断点调试,我发现是如下代码有问题:
Bitmap *img = Bitmap::FromFile(strPath.AllocSysString());这行代码执行后,img依然是0,我看了strPath的值,它确实存储了图片的路径,但是img却没有成功的被创建,
换成下面代码也是一样的(当然后面的调用方式会随着改变):Bitmap img( strPath.AllocSysString() );换成这行代码后,img依然没有值。我开始以为是中文路径的问题,可是在单步调试过程中,有几次(虽然不多)运行成功了,但是大部分时候都会失败。
请问:可能的原因有哪些?VS2012默认的UNICODE对此有没有影响?
图像处理gdivs2012调试unicode

解决方案 »

  1.   

    strPath.AllocSysString() 对吗?
      

  2.   

    strPath如果是CString,为什么还要转一次,直接传进去不就行了?
      

  3.   

    FromFile(strPath.AllocSysString());参数有问题吧
    这样试试
    WCHAR wszWideString[strPath.GetLength()];
    wcscpy(wszWideString, CT2CW(strPath));
    Bitmap *img = Bitmap::FromFile(wszWideString);
      

  4.   

    为什么要用AllocSysString()?
    Bitmap *img = Bitmap::FromFile(strPath);不行吗?
    AllocSysString()是在传递字符串给COM组件接口时才用的另外你使用的是GDI+,不是GDI。
    初始化过了吗?GdiplusStartup
      

  5.   


    AllocSysString()的使用是正确的,我的问题在于没有初始化,问题解决了。