const char* 转化成 LPCWSTR LPCSTR

     VC6里面的ascii/unicode编码真让人头疼, windows API里面参数大多是LPCSTR/LPCWSTR/DWORD/WORD等这样的类型,一些很简单的指针类型和字符串类型,居然整这么多道道. VS08之类的版本貌似对这方面支持的比较好,有些能自动转化. 

// 一般情况下,直接加上个L就行了,比较方便.
HWND hWnd=FindWindow(NULL,L"ipcrev");

// 常量
char *szName="ipcrev";
// 强转会丧失精度,不可行
// HWND hWnd=FindWindow(NULL,(LPCWSTR)szName);

// 正确方式
#include <atlbase.h>

USES_CONVERSION; // 这个宏一定要加上,否则会出一堆错误
LPCWSTR pName=T2W(szName); // tchar ---> wchar 
// LPCTSTR pName=W2T(szName); // wchar ---> tchar 
HWND hWnd=FindWindowW(L"MainWClass",pName);

// 如果定义了_UNICODE宏,可以使用MFC的类CString
CString str=szName;
LPCWSTR pName=(LPCWSTR)str;

 

    

     

你可能感兴趣的:(char * LPCWSTR)