“CWnd::MessageBoxW”: 不能将参数 1 从“char [100]”转换为“LPCT

怎么回事啊,HANDLEhfile=CreateFile(_T("5.txt"),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRI... 怎么回事啊, HANDLE hfile=CreateFile(_T("5.txt"),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); char buf[100]; DWORD ch; ReadFile(hfile,buf,100,&ch,NULL); buf[ch]=0; CloseHandle(hfile); MessageBoxW(buf); 展开
 我来答
销魂哥1NB10185
2014-07-15 · TA获得超过177个赞
知道答主
回答量:123
采纳率:0%
帮助的人:159万
展开全部
看到以上代码,可以看出提问者好像对 ANSI 和 UNICODE 字符集,不是很了解,char buf[100]; 这显然是采用的 ANSI 字符集,而下面MessageBoxW(buf),函数又是Unicode的版本。当然会触发如上错误。 在此解释一下,MessageBox()分两个版本:MessageBoxA() 和 MessageBoxW() 版本。如果使用 CHAR,那么应该用MessageBoxA(),如果用 WCHAR,那么用MessageBoxW();如果用模板TCHAR,那么用MessageBox()。 所以对于上述问题,将会有两种解决方案。 方案一:将char buf[100]; 改为 WCHAR[100]; 方案二:将MessageBoxW(buf); 改为 MessageBoxA(buf); 其实这段代码标准的写法应该是这样的: 如果你从文件里读的内容是ANSI字符格式的话,那么你必须采用第二种方案;相反,如果你从文件力度的内容是UNICODE字符格式的话,那么你需要采用方案一。

采纳哦
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式