我在QT中调windows API: GetWindowText获取窗口名称。GetWindowText需要传进去一个PSTR来存储窗口名称。我按照官方文档中的用法(见下面代码),结果报错:error: cannot convert 'WCHAR {aka wchar_t**}’ to ‘LPWSTR {aka wchar_t*}’ for argument ‘2’ to ‘int GetWindowTextW(HWND, LPWSTR, int)’**
HWND winHandle = GetForegroundWindow();
int cTxtLen = GetWindowTextLength(winHandle);
PSTR pszMem = (PSTR) VirtualAlloc((LPVOID) NULL,
(DWORD) (cTxtLen + 1), MEM_COMMIT,
PAGE_READWRITE);
GetWindowText(winHandle, pszMem,
cTxtLen + 1);
在网上搜了一下找到了一个解决方案:
- 在.pro文件中加入:DEFINES -= UNICODE
- 在.cpp文件中加入:#define UNICODE
问题解决。网上有人说**#define UNICODE要加在.cpp文件的最顶端,在#include “windows.h”**之前。我尝试这样做会报错:重复定义unicode。最后加载有所#include之后就好了。