|
|
// 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_
|