通常手动输入的字符串都是const char*(即LPCSTR)类型的,因此只需将该句中的MessageBox改为MessageBoxA即可。
解决方法二:
参数使用“_T”宏:
MessageBox(NULL,_T("Open image failed!"),_T("error"),MB_OK)
或是:
MessageBox(NULL, L"Openimage failed!", L"error",MB_OK)
/*
************************************************************************************************************************************************
* 当工程是Unicode编码时烂神,_T将括号内的字符串以Unicode方式保存;当工程是多字节编码时,_T将括号内的字符串以ANSI方式保存
* 关键字“L”,则是不管编码环境是什么,都是敬凳将其后面的字符串以Unicode方式保存。
*************************************************************************************************************************************************
*/
1、用THCAR代替char
2、字符串加_T(""),如_T("你好")
3、用_tcscpy等代替strcpy等
ANSI *** 作函数以str开头,如strcpy(),strcat(),strlen();
Unicode *** 作函数以wcs开头,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode互为兼容的 *** 作函数以_tcs开头 _tcscpy(C运行期库);
ANSI/Unicode互为兼容的 *** 作函数以lstr开头 lstrcpy(Windows函数);
考虑ANSI和Unicode的兼容,需要使用饥稿亏以_tcs开头或lstr开头的通用字符串 *** 作函数。
最后加上头文件 #include <tchar.h>
世界上有widechartomultibyte和widechartomultibyte两个燃野卜函数强制类型转换是不行的,因为一个脊改是字符占一个字节,一个事占两皮穗个字节,但是sprintf等函数是不知道的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)