QT中使用PSTR報錯

我在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);

在網上搜了一下找到了一個解決方案:

  1. 在.pro文件中加入:DEFINES -= UNICODE
  2. 在.cpp文件中加入:#define UNICODE

問題解決。網上有人說**#define UNICODE要加在.cpp文件的最頂端,在#include “windows.h”**之前。我嘗試這樣做會報錯:重複定義unicode。最後加載有所#include之後就好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章