当前位置: 代码迷 >> VC >> 帮小弟我看上这代码,搞好久了,不知道char*要怎样转成LPCWSTR
  详细解决方案

帮小弟我看上这代码,搞好久了,不知道char*要怎样转成LPCWSTR

热度:8005   发布时间:2013-02-25 00:00:00.0
帮我看下这代码,搞好久了,不知道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
}
在线等,好心人帮帮我

------解决方案--------------------------------------------------------
C/C++ code
#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"),忘记了,都试试吧。
  相关解决方案