GetWindowText无法处理TradeMark符号

时间:2015-04-08 23:25:45

标签: c++ windows unicode encoding

HWND ForeWindow = GetForegroundWindow();
wchar_t WindowTxt[1024] = { L'\0' };
GetWindowTextW(ForeWindow, WindowTxt, 1024);
wprintf(L"%s\n", WindowTxt);
std::wstring Str(WindowTxt);
std::wcout << L"Wnd: " << Str << L"\n";

使用上面的代码获取skype的窗口,这是&#34; Skype™&#34;我得到了输出:

  

&#34;?的Skype&#34;

(wcout行无法执行)

1)为什么GetWindowText的宽字符版本无法处理此字符

2)为什么std :: wstring无法解析wchar_t数组然后将其打印到控制台

1 个答案:

答案 0 :(得分:2)

CMD游戏机不能很好地处理Unicode。将输出发送到文件并在编辑器中打开它,我怀疑你会得到你期望的实际角色。