1. char --> WCHAR
MultiByteToWideChar
int ConvertCharToWChar(char* pMultiByteStr, WCHAR* pWideCharStr, size_t BytesOfWideCharStr)
{
memset(pWideCharStr, 0, BytesOfWideCharStr);
return MultiByteToWideChar(CP_ACP,0, pMultiByteStr, -1, pWideCharStr, BytesOfWideCharStr / 2 - 1);
}
2. WCHAR --> char
WideCharToMultiByte
int ConvertWCharToChar(WCHAR* pWideCharStr, char* pMultiByteStr, size_t BytesOfCharStr)
{
memset(pMultiByteStr, 0, BytesOfCharStr);
return WideCharToMultiByte(CP_ACP, 0, pWideCharStr, -1, pMultiByteStr, BytesOfCharStr - 1, NULL, NULL);
}
3. CString --> char
void ConvertCStringToChar(CString& source, char* pMultiByteStr, size_t BytesOfCharStr)
{
memset(pMultiByteStr, 0, BytesOfCharStr);
char* dest = pMultiByteStr;
LPTSTR p = source.GetBuffer();
#ifdef UNICODE
WideCharToMultiByte(CP_ACP, 0, p, -1, dest, BytesOfCharStr - 1, NULL, NULL);
dest[BytesOfCharStr - 1] = '\0';
#else /*UNICODE*/
int i = 0;
for (; i < (BytesOfCharStr - 1) && p[i] != 0; i++)
{
dest[i] = p[i];
}
dest[i] = 0;
#endif /*UNICODE*/
}
4. CString --> WCHAR
void ConvertCStringToWChar(CString& source, WCHAR* pWideCharStr, size_t BytesOfWideCharStr)
{
memset(pWideCharStr, 0, BytesOfWideCharStr);
WCHAR* dest = pWideCharStr;
int length = BytesOfWideCharStr / 2;
LPTSTR p = source.GetBuffer();
#ifdef UNICODE
int i = 0;
for (; i < (length - 1) && p[i] != 0; i++ )
{
dest[i] = p[i];
}
dest[i] = 0;
#else /*UNICODE*/
MultiByteToWideChar(CP_ACP,0, p, -1, dest, length - 1);
dest[length - 1] = 0;
#endif /*UNICODE*/
}
5. char --> CString
6. WCHAR --> CString