一个unicode的工程.
使用 CString sz;
sz+=L"你好";
sz+="你好";
都可以正常工作,但是每当执行完 SHGetFileInfo 后, 再使用sz+="你好";就乱码了.真奇怪啊.
SHFILEINFO *fi = (SHFILEINFO *)new byte[sizeof SHFILEINFO];
LONG lResult = SHGetFileInfo(L"c:\\boot.ini",
FILE_ATTRIBUTE_NORMAL,
fi,
1024*80,
SHGFI_SMALLICON |SHGFI_ICON /*| SHGFI_USEFILEATTRIBUTES */);
我后来发现的解决办法:
因为在Unicode下 CString += char* 中文乱码也是情有可原的。应该是非标准的办法。
我发现先转成 _variant_t 然后再加到CString就OK了
比如 sz += _variant_t("大家好");