问题
It's been years since I have done C++ let alone ATL code
I have this method that needs surgical help :(
This is for a mobile app so I don't want to use CString and MFC
I need to convert the BSTR* str to the correct type LPCTSTR for use in the registry Set.Value method
STDMETHODIMP CAXSampleCtl::SendMSG(BSTR* str)
{
CRegKey key;
key.Create(HKEY_LOCAL_MACHINE, _T("MyKeyName"));
key.SetValue( str <<<--- nope, _T("MyValueName"));
key.Flush();
key.Close();
return S_OK;
}
回答1:
COLE2T
macro is just for you, see String Conversion Classes and Macros
To convert to a BSTR, pass the existing string to the constructor of CComBSTR. To convert from a BSTR, use COLE2[C]DestinationType[EX], such as COLE2T.
来源:https://stackoverflow.com/questions/7654998/atl-how-to-convert-bstr-str-to-registry-key-setvaluelpctstr-str-type