帮我看下这代码,搞好久了,不知道char*要怎样转成LPCWSTR
帮我看下这代码,搞好久了,不知道char*要怎样转成LPCWSTR
//auxDIBImageLoad(Filename);这函数要的是个LPCWSTR类型,怎么转换,
//强制转的话是乱码,char*指向8位的ANSI字符串,LPCWSTR指向16位的Unicode字符串
AUX_RGBImageRec *LoadBMP(char * Filename)// 载入位图图象
{
FILE *File=NULL;// 文件句柄
if (!Filename)// 确保文件名已提供
{
return NULL;// 如果没提供,返回 NULL
}
File=fopen(Filename,"r");// 尝试打开文件
if (File)// 文件存在么?
{
fclose(File);// 关闭句柄
return auxDIBImageLoad(Filename);//(LPCWSTR)Filename); // 载入位图并返回指针
}
return NULL;// 如果载入失败,返回 NULL
}
在线等,好心人帮帮我
[解决办法]
#include <windows.h>#include <atlstr.h>#define STRSAFE_NO_DEPRECATE#include <strsafe.h> // for String... functions#include <crtdbg.h> // for _ASSERTE CStringW ConvertW(CString str, int sourceCodepage) { //int len=str.GetLength(); int unicodeLen=MultiByteToWideChar(sourceCodepage,0,str,-1,NULL,0) + 1; wchar_t* pUnicode; pUnicode=new wchar_t[unicodeLen]; memset(pUnicode,0,(unicodeLen)*sizeof(wchar_t)); MultiByteToWideChar(sourceCodepage, CP_ACP, str, -1, (LPWSTR)pUnicode, unicodeLen); CStringW rt = pUnicode; //delete pUnicode; SAFE_DELETEGROUP( pUnicode ); return rt; }
[解决办法]
原来是我打错了。
应该是
include Atlconv.h
文件。
[解决办法]
现调用setlocal
然后就可以用
mbstowcs
wcstombs
[解决办法]
"minox.bmp"改为:_L"minox.bmp",不知道要不要加括号变成_L("minox.bmp"),忘记了,都试试吧。