注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dp: 生活的脚步,进步的点滴...

Cam、DSP、FPGA、PM、Life、More ...

 
 
 

日志

 
 

error C2664:无法从“char *”转换为“LPCWSTR”  

2014-10-15 09:57:12|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
问题:
定义了一个char text[31]数组,用来接收选中的TV_ITEM item的item.pszText。然后将该字符数组的值显示给一个static
text 控件。即,显示当前选中的树形目录的item的标题。在执行语句:
item.pszText = text
时,报错:“无法将char[] 转换为 LPWSTR”。


解决:

1.思路一:
使用CA2W字符转换宏(ATL and MFC String Conversion Macros
)。根据MSDN描述,这个宏用于将ANSI转换为Wide Character(UNICODE)
代码如下:
1 LPWSTR   aaa   =   CA2W(text);
2 item.pszText = aaa;
2.思路二:
使用int MultiByteToWideChar()函数。根据MSDN描述,这个方法:This
function maps a character string to a wide-character (Unicode)
string。
代码如下:

1 TCHAR aaa[31];
2 MultiByteToWideChar(0,0,text,31,aaa,62);
总结:

 使用第一种方法,直接用类型LPWSTR(错误信息里要求)来定义一个变量,然后接收转换过后字符串。简单明了,参数也少。
 第二种方法,MultiByteToWideChar()函数,首先得用TCHAR来定义一个数组,其次参数太多,引入新的理解问题。

 另外:网上有另外推荐将项目的unicode环境关掉,就可避免这个问题。不推荐,这实际上是回避问题。现在已经是Unicode的应用已经越来越广,程序不支持Unicode环境,走的了一时,走不了一世。
  评论这张
 
阅读(321)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016