“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);
展开
1个回答
展开全部
看到以上代码,可以看出提问者好像对 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字符格式的话,那么你需要采用方案一。
采纳哦
采纳哦
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询