70 lines
2 KiB
C
70 lines
2 KiB
C
|
// Strings.h : Declaration of the CStrings
|
||
|
|
||
|
#ifndef __STRINGS_H_
|
||
|
#define __STRINGS_H_
|
||
|
|
||
|
#include "resource.h" // main symbols
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CStrings
|
||
|
class ATL_NO_VTABLE CStrings :
|
||
|
public CComObjectRootEx<CComSingleThreadModel>,
|
||
|
public CComCoClass<CStrings, &CLSID_Strings>,
|
||
|
public IDispatchImpl<IStrings, &IID_IStrings, &LIBID_DEVCON2Lib>
|
||
|
{
|
||
|
protected:
|
||
|
BSTR *pMultiStrings;
|
||
|
ULONG ArraySize;
|
||
|
ULONG Count;
|
||
|
VARIANT_BOOL IsCaseSensative;
|
||
|
|
||
|
public:
|
||
|
CStrings()
|
||
|
{
|
||
|
pMultiStrings = NULL;
|
||
|
ArraySize = 0;
|
||
|
Count = 0;
|
||
|
IsCaseSensative = VARIANT_FALSE;
|
||
|
}
|
||
|
|
||
|
virtual ~CStrings();
|
||
|
|
||
|
DECLARE_REGISTRY_RESOURCEID(IDR_STRINGS)
|
||
|
|
||
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||
|
|
||
|
BEGIN_COM_MAP(CStrings)
|
||
|
COM_INTERFACE_ENTRY(IStrings)
|
||
|
COM_INTERFACE_ENTRY(IDispatch)
|
||
|
END_COM_MAP()
|
||
|
|
||
|
// IStrings
|
||
|
public:
|
||
|
STDMETHOD(get_CaseSensative)(/*[out, retval]*/ VARIANT_BOOL *pVal);
|
||
|
STDMETHOD(put_CaseSensative)(/*[in]*/ VARIANT_BOOL newVal);
|
||
|
STDMETHOD(Find)(/*[in]*/ BSTR name,/*[out,retval]*/ long *pFound);
|
||
|
STDMETHOD(Remove)(/*[in]*/ VARIANT Index);
|
||
|
STDMETHOD(Insert)(/*[in]*/ VARIANT Index,/*[in]*/ VARIANT Value);
|
||
|
STDMETHOD(Add)(/*[in]*/ VARIANT Value);
|
||
|
STDMETHOD(get__NewEnum)(/*[out, retval]*/ IUnknown** ppUnk);
|
||
|
STDMETHOD(Item)(/*[in]*/ VARIANT Index,/*[out, retval]*/ VARIANT * pVal);
|
||
|
STDMETHOD(get_Count)(/*[out, retval]*/ long *pVal);
|
||
|
|
||
|
//
|
||
|
// helpers
|
||
|
//
|
||
|
BOOL InternalEnum(DWORD index,BSTR *pNext);
|
||
|
HRESULT GetIndex(VARIANT *pIndex,DWORD *pAt);
|
||
|
HRESULT FromMultiSz(LPCWSTR pMultiSz);
|
||
|
HRESULT GetMultiSz(LPWSTR *pResult,DWORD *pSize);
|
||
|
HRESULT InternalInsertString(DWORD Index,BSTR pString);
|
||
|
HRESULT InternalInsertCollection(DWORD Index,IEnumVARIANT * pEnum);
|
||
|
HRESULT InternalInsertArray(DWORD Index, VARTYPE vt,SAFEARRAY * pArray);
|
||
|
HRESULT InternalInsertArrayDim(CComObject<CStrings> *pStringTemp, VARTYPE vt, SAFEARRAY *pArray,long *pDims,UINT dim,UINT dims);
|
||
|
HRESULT InternalInsert(DWORD Index,LPVARIANT Value);
|
||
|
HRESULT InternalAdd(LPCWSTR Value,UINT len);
|
||
|
BOOL IncreaseArraySize(DWORD strings);
|
||
|
};
|
||
|
|
||
|
#endif //__STRINGS_H_
|