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之后就好了。

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