的SHGetFolderPath

时间:2012-04-08 10:30:17

标签: winapi visual-c++

此代码适用于Windows 7 但不适用于Windows XP(仅输出启动文件夹路径的一部分)

#include <iostream>
#include <shlobj.h>

using namespace std;
int main()
{
    wchar_t startupFolder[1024];
    HRESULT hr = SHGetFolderPath(0, CSIDL_STARTUP, 0, 0, startupFolder);
    if (SUCCEEDED(hr))
        wcout << L"Startup folder = " << startupFolder << endl;
    else
        cout << "Error when getting startup folder\n";
    getchar();
    return 0;
}

输出是: 启动文件夹= C:\ Documents and Settings \ Admin \&lt; - 光标在这里。 不提供换行符。 我也有俄语窗口xp。我认为这是unicode问题。

当我使用wprintf时,我得到了: C:\ Documents and Settings \ Admin \ ???????? .....

感谢。

1 个答案:

答案 0 :(得分:2)

问题是XP控制台使用的字体不包含您尝试输出的俄语字符的字形。 Windows 7附带并在其控制台中默认使用的字体确实具有更广泛的Unicode代码点覆盖范围。您需要将控制台配置为使用包含所需字形的字体。