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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值