本来要写个输出所有窗口的代码,但是结果文字一直不输出,又试了试发现只是汉字不输出:
#include <windows.h>
#include <iostream>
#include <vector>
#include <string>
std::vector<std::wstring> windowTitles;
using namespace std;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
wchar_t windowTitle[256];
if (GetWindowTextW(hwnd, windowTitle, sizeof(windowTitle)/sizeof(windowTitle[0])) > 0) {
windowTitles.push_back(windowTitle);
}
return TRUE;
}
int main() {
std::wcout << L"Start enumerating windows..." << std::endl;
// 枚举所有窗口
if (!EnumWindows(EnumWindowsProc, 0)) {
std::wcout << L"EnumWindows failed" << std::endl;
}
std::wcout << L"Finished enumerating windows." << std::endl;
for (const auto& title : windowTitles) {
std::wcout << title << std::endl;
}
return 0;
}
只要加上以下代码就好了:
std::wcout.imbue(std::locale("chs"));
让我一通乱找,还以为是编码方式的问题。