使用char变量:"const char *" 类型的实参与 "LPCWSTR"类型的形参不兼容

出现这个问题的原因是由于字符编码问题引起的,详细理论就不赘述了,网上都有。这里主要说解决方法:


1.直接输入文本

类似于这种:

HWND pdfwind;
pdfwind = FindWindow(NULL, "OLE2017_2.pdf");

解决方法有几种:

(1):改变项目编码格式

项目——属性使用char变量:"const char *" 类型的实参与 "LPCWSTR"类型的形参不兼容
配置属性——常规——字符集——改成Unicode字符集(如果你就是这个就改成“未设置”)
使用char变量:"const char *" 类型的实参与 "LPCWSTR"类型的形参不兼容

(2):改变代码

在文本前面加上大写L

HWND pdfwind;
pdfwind = FindWindow(NULL,L "OLE2017_2.pdf");

将文本写在TEXT中:

HWND pdfwind;
pdfwind = FindWindow(NULL,TEXT( "OLE2017_2.pdf"));

这两种方法均可。

2.使用MessageBox

MessageBox函数改为MessageBoxA函数,内容不变。

3.使用char变量

有时候需要设置变量传文本,以上办法除了第一条,其他均不适用,在此提供新的方法:
原代码:

char WindowTitle[100] = { 0 };
::GetWindowText(hWnd, WindowTitle, 100);

使用TCHAR代替char :

TCHAR WindowTitle[100] = { 0 };
::GetWindowText(hWnd, WindowTitle, 100);