不能将参数 2 从“const wchar_t [8]”转换为“LPCSTR”

QQ413769707 2011-04-05 01:58:31
HWND hwnd = CreateWindowEx( 0, WC_LINK,
TEXT("For more information, <A HREF=\"e:\\OA\">click here</A> or <A ID=\"idInfo\">here</A>"),
WS_VISIBLE | WS_CHILD | WS_TABSTOP,
0, 0, 100, 100,
hwnd, (HMENU) (IDC_SYSLINK), NULL, NULL);

error C2664: “CreateWindowExA”: 不能将参数 2 从“const wchar_t [8]”转换为“LPCSTR”
请问要如何改正?工程属性中字符集是使用多字节字符集。
...全文
3374 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
许文君 2011-04-07
  • 打赏
  • 举报
回复
error C2664: “CreateWindowExA”:
CreateWindowEx -> CreateWindowExW
QQ413769707 2011-04-07
  • 打赏
  • 举报
回复
就是的啊。vs2010中的。[Quote=引用 13 楼 arong1234 的回复:]
如果是系统头文件,你不应该能改动。这个commctrl.h应该不是微软提供的commctrl.h吧?至少我在微软的头文件中没看到这个定义




引用 12 楼 arong1234 的回复:
大家不是已经告诉你么?应该把L去掉,改为_T("Syslink")

引用 11 楼 qq413769707 的回复:
commctrl.h头文件中是这样定义的#define WC_LINK……
[/Quote]
xengine-qyt 2011-04-05
  • 打赏
  • 举报
回复
把你的宏定义
#define WC_LINK L""

这样改
HowToP2p 2011-04-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 arong1234 的回复:]
说加L的人,到底有没有了解为什么需要加L什么时候加L:)
[/Quote]
我看错了,转换看反了,参数也看错了,报错的是参数2不是参数3

:)
Eleven 2011-04-05
  • 打赏
  • 举报
回复
你的当前工程属性中字符集是使用多字节字符集,用TEXT宏应该是没有这个问题的
arong1234 2011-04-05
  • 打赏
  • 举报
回复
说加L的人,到底有没有了解为什么需要加L什么时候加L:)
arong1234 2011-04-05
  • 打赏
  • 举报
回复
我想他就是因为误加了L才有问题。这里显然在找不是wchar_t类型的字符串。把WC_LINK中的L去掉,用_T宏括起来,如同第三个参数一样
[Quote=引用 2 楼 howtop2p 的回复:]
或者字符串前面加上 L
[/Quote]
aibielilxb 2011-04-05
  • 打赏
  • 举报
回复
WC_LINK的参数的类型声明或者定义有问题.
当前情况下你使用的CreateWindowEx是ANSI版本,
需要一个const char*类型的数据作为第二个参数.即WC_LINK,
但它被声明或定义为const wchar_t* 类型了.
估计是某个宏没用好
oyljerry 2011-04-05
  • 打赏
  • 举报
回复
你参数字符不匹配,加等来L""符合
oldmtn 2011-04-05
  • 打赏
  • 举报
回复
TEXT("For more information, <A HREF=\"e:\\OA\">click here</A> or <A ID=\"idInfo\">here</A>")

改为L"你的内容"
arong1234 2011-04-05
  • 打赏
  • 举报
回复
如果是系统头文件,你不应该能改动。这个commctrl.h应该不是微软提供的commctrl.h吧?至少我在微软的头文件中没看到这个定义



[Quote=引用 12 楼 arong1234 的回复:]
大家不是已经告诉你么?应该把L去掉,改为_T("Syslink")

引用 11 楼 qq413769707 的回复:
commctrl.h头文件中是这样定义的#define WC_LINK L"Syslink",我需要怎样改?
[/Quote]
arong1234 2011-04-05
  • 打赏
  • 举报
回复
大家不是已经告诉你么?应该把L去掉,改为_T("Syslink")[Quote=引用 11 楼 qq413769707 的回复:]
commctrl.h头文件中是这样定义的#define WC_LINK L"Syslink",我需要怎样改?
[/Quote]
HowToP2p 2011-04-05
  • 打赏
  • 举报
回复
或者字符串前面加上 L
HowToP2p 2011-04-05
  • 打赏
  • 举报
回复
字符串用包围起来 _T(“字符串”)
QQ413769707 2011-04-05
  • 打赏
  • 举报
回复
commctrl.h头文件中是这样定义的#define WC_LINK L"Syslink",我需要怎样改?

1,662

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧