版权声明:本文为博主原创文章,转载须注明出处。 https://blog.csdn.net/aptx704610875/article/details/49130475
在使用OpenGL加载纹理图的过程中,遇到了Unicode字符集的问题:auxDIBImageLoad函数。
查看定义我们发现系统将函数define为auxDIBImageLoadW函数,而auxDIBImageLoadW函数的参数为LPCWSTR。
通过查阅资料,MultiByteToWideChar函数是解决这个问题的最方便的一种。
解决方法:(LPCWSTR实际上也是CONST WCHAR *类型)
char *filename = "data/map.bmp";
WCHAR wfilename[256];
memset(wfilename,0,sizeof(wfilename));
MultiByteToWideChar(CP_ACP,0,Filename,strlen(Filename)+1,wfilename,sizeof(wfilename)/sizeof(wfilename[0]));
auxDIBImageLoad(wfilename);
------------------------------------------------------------------------------------------------------------------------------------------------------
补充一点:如果直接使用“...”的字符串的话,只需要在前面加上L即可完成转化。
例如:
auxDIBImageLoad(L("data/map.bmp"));
或者
MessageBox(NULL,L"Turn to next level!",L"Congratulation",MB_OK)
但是如果是变量字符串,则需使用auxDIBImageLoadW函数做转换。