Frage
Alle Ideen, wie einen BSTR aus einem LPCOLESTR zu machen? Dumme Sache zu bekommen aufgehängt auf ..
Lösung
Ein LPCOLESTR
ist nur ein const wchar_t*
, so können Sie verwenden SysAllocString()
eine BSTR
zu erstellen:
LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);
Seien Sie sicher, SysFreeString()
, wenn Sie fertig sind mit Ihre BSTR
. Siehe auch die MSDN-Dokumentation auf BSTR
s
Andere Tipps
Der Unterschied zwischen BSTR und LPCOLESTR ist, dass BSTR die Länge der Zeichenfolge vor dem String als Präfix hat, LPCOLESTR nicht hat.
Ein BSTR nicht notwendigerweise eine Endung \ 0 Markierung Ende der Zeichenfolge haben, da die Länge der Zeichenfolge vorangestellt ist, ich die Klasse verwenden CComBSTR in der Regel zu konvertieren (atlcomcli.h), nimmt die Ctor entweder BSTR oder LPCOLESTR als Argument und es ist Mitglied BSTR (), um die BSTR Darstellung zu erhalten:
CComBSTR b( yourolestring )
// b.BSTR()
CComBSTR die Aufteilung des Griff / befreien, so dass keine Gefahr von Speicherverlust.