关于auxDIBImageLoad函数:char * 转 LPCWSTR

来源:互联网 发布:知秋凤凰婚庆破产了? 编辑:程序博客网 时间:2024/05/14 05:22

在使用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函数做转换。

0 0