(顶者有分)巨奇怪的问题,关于将ishellfolder2->GetDetailsOf中的sd.str.pOleStr转为ansi的问题.都两天没怎么睡觉了,分不够就加
代码如下:
SHELLDETAILS sd;
TCHAR szTemp[MAX_PATH];
SHGetMalloc(&pMalloc);
hr = pIShellFolder2->GetDetailsOf (pidlRel1 , iSubItem, &sd);
if (SUCCEEDED (hr))
{
CString strTEMP = str;
switch (sd.str.uType)
{
case STRRET_CSTR:
_tcscpy (szTemp, sd.str.cStr);
break;
case STRRET_OFFSET:
break;
case STRRET_WSTR:
WideCharToMultiByte (CP_ACP, 0, sd.str.pOleStr, -1, szTemp, sizeof(szTemp), NULL, NULL);
pMalloc->Free (sd.str.pOleStr);
break;
}
现象:
得到显示名,类型名都没问题,关键是得到modified time字段时,如果sd.str.pOleStr的值是"2006-1-25",则szTemp的值被格式化正确,但有时sd.str.pOleStr的值是"25-1-2006",szTemp的值被格式化成"?2006?-?1?-25?",why????
问题
1:为什么sd.str.pOleStr的值有时会得到象这样的"25-1-2006"字符串?而且没有任何规律,有时同一文件得到的又是正确的"2006-1-25"
2:为什么在处理sd.str.uType为STRRET_WSTR类型既宽字符类型时,要将sd.str.pOleStr转成ANSI的字符集?没道理吧
3:如何才能转化sd.str.pOleStr成正确格式的szTemp?
请帮帮忙,都两天没怎么睡觉了,555555:(,谢谢谢谢谢谢谢谢,分不够就加,顶者有分