[ATL] Add CString.AllocSysString

This commit is contained in:
Mark Jansen 2017-12-24 01:28:16 +01:00
parent 6c92d5c14a
commit fa3e173515

View file

@ -143,6 +143,12 @@ public:
return ::vswprintf(pszDest, pszFormat, args); return ::vswprintf(pszDest, pszFormat, args);
} }
static BSTR __cdecl AllocSysString(
_In_z_ LPCWSTR pszSource,
_In_ int nLength)
{
return ::SysAllocStringLen(pszSource, nLength);
}
}; };
@ -269,6 +275,19 @@ public:
return ::vsprintf(pszDest, pszFormat, args); return ::vsprintf(pszDest, pszFormat, args);
} }
static BSTR __cdecl AllocSysString(
_In_z_ LPCSTR pszSource,
_In_ int nLength)
{
int nLen = ChTraitsCRT<wchar_t>::GetBaseTypeLength(pszSource, nLength);
BSTR bstr = ::SysAllocStringLen(NULL, nLen);
if (bstr)
{
ChTraitsCRT<wchar_t>::ConvertToBaseType(bstr, nLen, pszSource, nLength);
}
return bstr;
}
}; };
@ -797,8 +816,14 @@ public:
} }
BSTR AllocSysString() const
{
return StringTraits::AllocSysString(CThisSimpleString::GetString(), CThisSimpleString::GetLength());
}
}; };
} //namespace ATL } //namespace ATL
#endif #endif