读书人

vs2010停wh=:FindWindow(NULL,quot;360任务

发布时间: 2014-01-14 23:14:00 作者: rapoo

vs2010下wh=::FindWindow(NULL,"360任务管理器");
HWND wh;
void CLlkDlg::OnStartOporate() {
wh=::FindWindow(NULL,"360任务管理器");
.
.
.
}

1>d:\documents\visual studio 2010\projects\llk\llk\llkdlg.cpp(172): error C2664: “FindWindowW”: 不能将参数 2 从“const char [22]”转换为“LPCWSTR”

在C++6.0下可以的啊,换成vs2010就不可以。这是why什么呢?
[解决办法]

引用:
Quote: 引用:

vs现在默认是Unicode编码了。

现在需要用 wh=::FindWindow(NULL,L"360任务管理器");



为什么这样写又不行了呢?
HWND wh;
CONST PCHAR taskCaption="360任务管理器";
void CLlkDlg::OnStartOporate() {
wh=::FindWindow(NULL,L(taskCaption));
.
.
.
}

因为L用错了,L只能和"XXX"搭配,1L已经帮你把现成的都写出来了,你何必要自己搞创新呢~
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

vs现在默认是Unicode编码了。

现在需要用 wh=::FindWindow(NULL,L"360任务管理器");



为什么这样写又不行了呢?
HWND wh;
CONST PCHAR taskCaption="360任务管理器";
void CLlkDlg::OnStartOporate() {
wh=::FindWindow(NULL,L(taskCaption));
.
.
.
}

因为L用错了,L只能和"XXX"搭配,1L已经帮你把现成的都写出来了,你何必要自己搞创新呢~



因为多个地方要用到"xxx",所以想定义一个,以后改起来也方便,不用多处修改。

还有一楼用的_T也远比L好,_T是根据你的项目是否使用Unicode来决定到底是L还是没有L,你一股脑的用L,一旦什么时候你项目又变成多字节了,你就杯具了。你不能因为看到_T前面有个_,就觉得麻烦,人家就是这么设定的,看起来不好看,不代表功能就烂

读书人网 >C++

热点推荐