Windows2003-3790/inetcore/outlookexpress/inetcomm/mimeole/partial.h
2020-09-30 16:53:55 +02:00

106 lines
4.7 KiB
C++

// --------------------------------------------------------------------------------
// Partial.h
// Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
// Steven J. Bailey
// --------------------------------------------------------------------------------
#ifndef __PARTIAL_H
#define __PARTIAL_H
// --------------------------------------------------------------------------------
// Depends
// --------------------------------------------------------------------------------
#include "mimeole.h"
// --------------------------------------------------------------------------------
// PARTINFO
// --------------------------------------------------------------------------------
typedef struct tagPARTINFO {
BYTE fRejected; // Rejected in CombineParts
IMimeMessage *pMessage; // The message object...
} PARTINFO, *LPPARTINFO;
// --------------------------------------------------------------------------------
// CMimeMessageParts
// --------------------------------------------------------------------------------
class CMimeMessageParts : public IMimeMessageParts
{
public:
// ----------------------------------------------------------------------------
// Construction
// ----------------------------------------------------------------------------
CMimeMessageParts(void);
~CMimeMessageParts(void);
// ----------------------------------------------------------------------------
// IUnknown
// ----------------------------------------------------------------------------
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// ----------------------------------------------------------------------------
// IMimeMessageParts
// ----------------------------------------------------------------------------
STDMETHODIMP CombineParts(IMimeMessage **ppMessage);
STDMETHODIMP AddPart(IMimeMessage *pMessage);
STDMETHODIMP SetMaxParts(ULONG cParts);
STDMETHODIMP CountParts(ULONG *pcParts);
STDMETHODIMP EnumParts(IMimeEnumMessageParts **ppEnum);
private:
// ----------------------------------------------------------------------------
// Private Data
// ----------------------------------------------------------------------------
LONG m_cRef; // Reference count
ULONG m_cParts; // Valid elements in m_prgpPart
ULONG m_cAlloc; // Size of m_prgPart
LPPARTINFO m_prgPart; // Array of partinfo structures;
CRITICAL_SECTION m_cs; // Thread safety
};
// --------------------------------------------------------------------------------
// CMimeEnumMessageParts
// --------------------------------------------------------------------------------
class CMimeEnumMessageParts : public IMimeEnumMessageParts
{
public:
// ----------------------------------------------------------------------------
// Construction
// ----------------------------------------------------------------------------
CMimeEnumMessageParts(void);
~CMimeEnumMessageParts(void);
// ----------------------------------------------------------------------------
// IUnknown
// ----------------------------------------------------------------------------
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// ----------------------------------------------------------------------------
// IMimeEnumMessageParts
// ----------------------------------------------------------------------------
STDMETHODIMP Next(ULONG cParts, IMimeMessage **prgpMessage, ULONG *pcFetched);
STDMETHODIMP Skip(ULONG cParts);
STDMETHODIMP Reset(void);
STDMETHODIMP Clone(IMimeEnumMessageParts **ppEnum);
STDMETHODIMP Count(ULONG *pcParts);
// ----------------------------------------------------------------------------
// CMimeEnumMessageParts
// ----------------------------------------------------------------------------
HRESULT HrInit(ULONG iPart, ULONG cParts, LPPARTINFO prgPart);
private:
// ----------------------------------------------------------------------------
// Private Data
// ----------------------------------------------------------------------------
LONG m_cRef; // Reference count
ULONG m_iPart; // Current Part
ULONG m_cParts; // Total number of parts
LPPARTINFO m_prgPart; // Array of parts to enumerate
CRITICAL_SECTION m_cs; // Thread safety
};
#endif // __PARTIAL_H