41 lines
416 B
C++
41 lines
416 B
C++
#pragma once
|
|
#include <OleAuto.h>
|
|
|
|
struct BStrHolder
|
|
{
|
|
BStrHolder() :
|
|
m_Str(NULL)
|
|
{
|
|
}
|
|
|
|
BStrHolder(const wchar_t* str) :
|
|
m_Str(SysAllocString(str))
|
|
{
|
|
}
|
|
|
|
~BStrHolder()
|
|
{
|
|
if (m_Str != NULL)
|
|
SysFreeString(m_Str);
|
|
}
|
|
|
|
operator BSTR() const
|
|
{
|
|
return m_Str;
|
|
}
|
|
|
|
BSTR* operator&()
|
|
{
|
|
if (m_Str != NULL)
|
|
{
|
|
SysFreeString(m_Str);
|
|
m_Str = NULL;
|
|
}
|
|
|
|
return &m_Str;
|
|
}
|
|
|
|
private:
|
|
BSTR m_Str;
|
|
};
|