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;
相关推荐
static void Gb2312ToUtf8(char* pstrOut, u32 dwOutLen, const char* pstrIn, u32 dwInLen); static BOOL IsNumeric(string text); static void UnicodeToGb2312(char* pstrOut, u32 dwOutLen, const wchar_t* ...
* LPCSTR (const char \*) 转换为 System.String * LPCWSTR (const wchar_t \*) 转换为 System.String * PCAHR (char \*) 转换为 System.String * BSTR 转换为 System.String 三、结构体类型转换 在 C++ 中,...
`LPCTSTR`在Unicode环境下等价于`LPCWSTR`,在非Unicode环境下等价于`LPCSTR`。当我们将`CString`对象转换为`LPCTSTR`时,它会返回一个指向内部缓冲区的常量指针。例如: ```cpp CString cstr("asdd"); const ...
这里的`LPCTSTR`在Unicode编译环境下实际上是`LPCWSTR`,在非Unicode环境下是`LPCSTR`,因此转换是安全的。 2. **char\* to CString**: `char*`可以直接赋值给`CString`,因为`CString`有一个构造函数能处理`const ...
例如,`LPCTSTR`是一个指向`const TCHAR`的指针,它在UNICODE和ANSI编译模式下分别对应`LPCWSTR`和`LPCSTR`。所以,`char* zStr = (char*)(LPCTSTR)cStr;`可以将`CString`转换为`char*`。 2. **char\* to CString**...
* CString( const unsigned char* psz ); * CString( LPCWSTR lpsz ); * CString( LPCSTR lpsz ); 这些构造函数可以用来初始化 CString 对象,例如: CString s1; // 默认构造函数 CString s2( "cat" ); // 使用...
- **C++:** `LPCSTR (const char*)` **-> C#:** `System.String` - **C++:** `LPCWSTR (const wchar_t*)` **-> C#:** `System.String` - **C++:** `PCAHR (char*)` **-> C#:** `System.String` - **C++:** `BSTR...
9. **LPCSTR (const char\*)**:指向以"NULL"结尾的8位Windows(ANSI)字符串的常量指针,强调其为远指针类型。 10. **WCHAR (wchar_t)**:16位Unicode字符类型,用于存储单个Unicode字符。 11. **PWCH (WCHAR\*)*...
- **LPCSTR (const char*) - System.String** - `const char*`在C++中表示指向一个只读字符串的指针,在C#中对应`System.String`。 - **LPCWSTR (const wchar_t*) - System.String** - 类似于`LPWSTR`,`const ...
- **LPCSTR (CONST CHAR\*)**:与PCSTR类似,也是指向只读字符串的常量指针,但在某些情况下可能被用于更明确地表明其为常量。 #### 3. Unicode 字符类型 随着全球化的需求增加,Unicode成为处理多语言文本的标准...
* LPCSTR (const char *) ---- System.String * LPCWSTR (const wchar_t *) ---- System.String * PCAHR (char *) ---- System.String * BSTR ---- System.String * FLOAT (float) ---- System.Single * DOUBLE ...
13. **LPCSTR**: 指向常量非Unicode字符串的指针,相当于`const char*`。 14. **LPCWSTR**: 指向常量Unicode字符串的指针,相当于`const wchar_t*`。 在实际编程中,从C/C++数据类型转换为Windows API数据类型通常...
在Windows API中,`LPSTR`和`LPCSTR`分别代表可变和不可变的ANSI字符串指针,而`LPWSTR`和`LPCWSTR`则是Unicode版本的。 在转换和操作这些字符串类型时,有一些常用的方法: 1. **数据类型转换**: - 使用`itoa`...
* CString(const unsigned char* psz):创建一个 CString 对象,并将其初始化为 unsigned char 类型的字符串 psz。 * CString(LPCSTR lpsz):创建一个 CString 对象,并将其初始化为 ASCII 字符串 lpsz。 成员函数 ...
13. **LPCSTR**: 在 Win32 API 中表示为指向常量字符串的指针,在 C 语言中对应的是 `const char*`。 14. **LPWSTR**: 在 Win32 API 中表示为指向宽字符字符串的指针,在 C 语言中对应的是 `wchar_t*`。 15. **...
因此,LPCTSTR可以指向ANSI字符串(char*)或Unicode字符串(const wchar_t*)。在不修改字符串内容的情况下,使用LPCTSTR是安全的。 4. LPSTR和LPCSTR: LPSTR是“Long Pointer to String”的缩写,它是一个指向...
5. **与CString的转换**: 使用`CString`类的`AllocSysString`方法可以直接创建一个BSTR,但需要确保释放。例如: ```cpp CString str1 = ...; BSTR bs = str1.AllocSysString(); SomeMethod(bs); // ... 使用...
* `CString(const unsigned char* psz);`:创建一个字符串对象,内容是字符串 `psz`。 * `CString(LPCSTR lpsz);`:创建一个字符串对象,内容是字符串 `lpsz`。 获取字符串长度 `int GetLength() const;`:返回...
15. LPCSTR(const char *) ---- System.String 在C++中,LPCSTR是一个常量字符串指针,在C#中,System.String是一个字符串类型。 16. LPCWSTR(const wchar_t *) ---- System.String 在C++中,LPCWSTR是一个常量宽...
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar); ``` 参数`Code...