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