Jak najlepiej przekonwertować CString na BSTR, aby przekazać go jako parametr „in” do metody COM?
Muszę przekonwertowaćCString
przykład do odpowiednio przydzielonegoBSTR
i przekazać toBSTR
w metodę COM. Aby kod był kompilowany i działał w sposób identyczny dla używanego ANSI i UnicodeCString::AllocSysString()
konwertować dowolny formatCString
do Unicode BSTR.
Ponieważ nikt nie jest właścicielem zwróconego BSTR-a, muszę się nim zająć i wypuścić go po wykonaniu połączenia w sposób możliwie najbardziej wyjątkowy i możliwie jak najmniejszy.
Obecnie używamATL::CComBSTR
do zarządzania przez całe życie:
ATL::CComBSTR converted;
converted.Attach( sourceString.AllocSysString() ); //simply attaches to BSTR, doesn't reallocate it
interface->CallMethod( converted );
Nie podoba mi się to, że potrzebuję dwóch oddzielnych stwierdzeń, aby skonstruowaćATL::CComBSTR
związany z wynikiem konwersji.
Czy jest lepszy sposób na wykonanie tego samego zadania?