关于auxDIBImageLoad函数:char * 转 LPCWSTR

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

你可能感兴趣的:(OpenGL,LPCWSTR,加载纹理)