mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
// 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_
|