1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| size_t ConvertAnsiToUnicode(LPWSTR &lpDest, LPCSTR lpSrc, size_t cbSrcLen)
{
size_t cbDestLen;
cbSrcLen = (cbSrcLen == -1) ? strlen(lpSrc) : cbSrcLen;
cbDestLen = MultiByteToWideChar(CP_ACP, 0, lpSrc, cbSrcLen, NULL, 0);
lpDest = new WCHAR[cbDestLen + 1];
MultiByteToWideChar(CP_ACP, 0, lpSrc, cbSrcLen, lpDest, cbDestLen);
lpDest[cbDestLen] = 0;
return cbDestLen;
}
size_t ConvertUnicodeToAnsi(LPSTR &lpDest, LPCWSTR lpSrc, size_t cbSrcLen)
{
size_t cbDestLen;
cbSrcLen = (cbSrcLen == -1) ? wcslen(lpSrc) : cbSrcLen;
cbDestLen = WideCharToMultiByte(CP_ACP, 0, lpSrc, cbSrcLen, NULL, 0, NULL, NULL);
lpDest = new CHAR[cbDestLen + 1];
WideCharToMultiByte(CP_ACP, 0, lpSrc, cbSrcLen, lpDest, cbDestLen, NULL, NULL);
lpDest[cbDestLen] = 0;
return cbDestLen;
}
LPTSTR ConvertAnsiToT(LPCSTR lpSrc)
{
LPTSTR lpDest;
#ifdef UNICODE
ConvertAnsiToUnicode(lpDest, lpSrc);
#else
lpDest = _tcsdup(lpSrc);
#endif
return lpDest;
}
LPTSTR ConvertUnicodeToT(LPCWSTR lpSrc)
{
LPTSTR lpDest;
#ifdef UNICODE
lpDest = _tcsdup(lpSrc);
#else
ConvertUnicodeToAnsi(lpDest, lpSrc);
#endif
return lpDest;
} |
Partager