2
如何将TCHAR转换为带有Unicode字符的字符*。我使用follwong代码从TCHAR转换为字符*在Unicode中支持unicode字符
//BROWSE FOLDER - Opens a browse folder dialog.
char* browse_folder(void)
{
char *selected_path = NULL;
TCHAR path[MAX_PATH];
BROWSEINFO bi = { 0 };
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl != 0)
{
// get the name of the folder and put it in path
SHGetPathFromIDList(pidl, path);
//Set the current directory to path
SetCurrentDirectory(path);
// free memory used
IMalloc* imalloc = 0;
if (SUCCEEDED(SHGetMalloc(&imalloc)))
{
imalloc->Free(pidl);
imalloc->Release();
}
//selected_path = ;
USES_CONVERSION;
selected_path = T2A(path);
}
}
我已经启用在Visual Studio项目中的Unicode settings.i我使用这个功能来浏览文件夹,我在路径(TCHAR)得到确切值,当我将其转换为char * Unicode字符替换为(?????)符号。
如果你想要char数据,为什么你不使用windows API函数的ansi对象(例如SHGetPathFromIDListA,SetCurrentDirectoryA ...)? – 2013-03-22 11:16:20
你为什么要混合使用TCHAR和char?不要以为你应该尝试进行任何转换。只需用相应的Windows数据类型TCHAR替换char即可。 – duleshi 2013-03-22 14:34:23
我在npapi中使用这段代码,并且npapi需要字符指针将此值传递给javascript。 – ragu 2013-03-23 14:39:23