GDI 图像处理有关问题

GDI 图像处理问题
原先代码是在VC6.0里面写的,然后我把加载略缩图的图像移植到VS2012里面去,结果发现程序会奔溃,经过断点调试,我发现是如下代码有问题:
Bitmap *img = Bitmap::FromFile(strPath.AllocSysString());

这行代码执行后,img依然是0,我看了strPath的值,它确实存储了图片的路径,但是img却没有成功的被创建,
换成下面代码也是一样的(当然后面的调用方式会随着改变):

Bitmap img( strPath.AllocSysString() );

换成这行代码后,img依然没有值。我开始以为是中文路径的问题,可是在单步调试过程中,有几次(虽然不多)运行成功了,但是大部分时候都会失败。
请问:可能的原因有哪些?VS2012默认的UNICODE对此有没有影响?
图像处理 gdi vs2012 调试 unicode

------解决方案--------------------
strPath.AllocSysString() 对吗?

------解决方案--------------------
strPath如果是CString,为什么还要转一次,直接传进去不就行了?
------解决方案--------------------
FromFile(strPath.AllocSysString());参数有问题吧
这样试试
WCHAR wszWideString[strPath.GetLength()];
wcscpy(wszWideString, CT2CW(strPath));
Bitmap *img = Bitmap::FromFile(wszWideString);
------解决方案--------------------
为什么要用AllocSysString()?
Bitmap *img = Bitmap::FromFile(strPath);不行吗?
AllocSysString()是在传递字符串给COM组件接口时才用的

另外你使用的是GDI+,不是GDI。
初始化过了吗?GdiplusStartup