我在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之後就好了。