2025-04-27 07:49:33 -04:00

49 lines
1.5 KiB
C++

#pragma once
class __declspec(uuid("4065c728-35e0-4f47-ab1a-f1bc2346501b"))
IViewRow : public IUnknown
{
public:
virtual HRESULT get_Value( /*in*/ int iWhichColumn, /*out,retval*/ BSTR* pbstColumnValue ) = 0;
virtual HRESULT get_Count( /*out,retval*/ int* piColumnCount ) = 0;
};
class __declspec(uuid("b0f49322-2f03-490c-b6a0-55d7f1efe719"))
IWriteableViewRow : public IViewRow
{
public:
virtual HRESULT set_Value( /*in*/ int iWhichColumn, /*in*/ BSTR bstColumnValue ) = 0;
virtual HRESULT set_Count( /*in*/ int iColumnCount, /*in*/ BOOL bClipExtraColumns ) = 0;
};
class CRowObject : public IWriteableViewRow
{
CRITICAL_SECTION m_csColumnDataLock;
int m_iColumnCount, m_iMaxColumns;
_bstr_t *m_pbstColumnData;
LONG m_lRefCount;
HRESULT EnsureColumnSize( int iColumnsRequired );
HRESULT Lock();
HRESULT UnLock();
public:
CRowObject();
~CRowObject();
virtual ULONG STDMETHODCALLTYPE AddRef();
virtual ULONG STDMETHODCALLTYPE Release();
virtual HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppvObject );
virtual HRESULT get_Value( /*in*/ int iWhichColumn, /*out,retval*/ BSTR* pbstColumnValue );
virtual HRESULT set_Value( /*in*/ int iWhichColumn, /*out,retval*/ BSTR pbstColumnValue );
virtual HRESULT get_Count( /*out,retval*/ int* piColumnCount );
virtual HRESULT set_Count( /*out,retval*/ int piColumnCount, BOOL bClipExtras );
};