CString str("C:\\Documents and Settings\\Administrator\\桌面\\HT_Com\\up\\"); //如果固定就这么几种需要转换的,可以直接转换. str.Replace("Documents and Settings","Docume~1"); str.Replace("Administrator","Admini~1"); //否则就得查找"\\"进行分段,把超过一定长度的子字符串截取前6个字符,再加上~1
不知道windows有没有提供这样的函数呢
CString sShort; GetShortPathName(C:\\Documents and Settings\\Administrator\\桌面\\HT_Com\\up\\", sShort.GetBuffer(MAX_PATH), MAX_PATH); sShort.ReleaseBuffer(); AfxMessageBox(sShort);
//如果固定就这么几种需要转换的,可以直接转换.
str.Replace("Documents and Settings","Docume~1");
str.Replace("Administrator","Admini~1");
//否则就得查找"\\"进行分段,把超过一定长度的子字符串截取前6个字符,再加上~1
GetShortPathName(C:\\Documents and Settings\\Administrator\\桌面\\HT_Com\\up\\",
sShort.GetBuffer(MAX_PATH), MAX_PATH);
sShort.ReleaseBuffer();
AfxMessageBox(sShort);