- LPWSTR ConvertAnsiToUnicode(LPCSTR szAnsi, LPWSTR szUnicode=NULL, size_t dwUnicodeLen=0)
- {
- LPWSTR szCvt = szUnicode;
- size_t dwAnsiLen = 0;
- for(size_t i=0;i<strlen(szAnsi);i++)
- {
- if(szAnsi[i] < 0)
- {
- dwAnsiLen++;
- i++;
- continue;
- }
- else
- {
- dwAnsiLen++;
- }
- }
- if(szCvt == NULL)
- {
- szCvt = new WCHAR[dwAnsiLen+1];
- }
- ::MultiByteToWideChar(CP_ACP,0,szAnsi,strlen(szAnsi),szCvt,dwAnsiLen+1);
- szCvt[szUnicode?(dwUnicodeLen>dwAnsiLen?dwAnsiLen:dwUnicodeLen):dwAnsiLen] = 0;
- return szCvt;
- }