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.
191 lines
4.9 KiB
191 lines
4.9 KiB
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
abobj.h
|
|
|
|
Abstract:
|
|
|
|
Class definition for CCommonAbObj
|
|
|
|
Environment:
|
|
|
|
Fax send wizard
|
|
|
|
|
|
--*/
|
|
|
|
#ifndef __ABOBJ_H_
|
|
#define __ABOBJ_H_
|
|
|
|
/*
|
|
The following pre-processor directives were added so that fxswzrd.dll no longer depends on msvcp60.dll.
|
|
That dependency raised deployment issues with point-and-print installation on down-level operating systems.
|
|
|
|
Undefining _MT, _CRTIMP, and _DLL causes the STL set implementation to be non-thread-safe (no locks when accessing data).
|
|
|
|
In the fax send wizard, the set is used to keep the list of recipient unique.
|
|
Since the wizard (at that stage) has only a single thread, thread safety is not an issue anymore.
|
|
|
|
*/
|
|
|
|
#undef _MT
|
|
#undef _CRTIMP
|
|
#undef _DLL
|
|
#pragma warning (disable: 4273)
|
|
#include <set>
|
|
using namespace std;
|
|
|
|
typedef struct
|
|
{
|
|
LPTSTR DisplayName;
|
|
LPTSTR BusinessFax;
|
|
LPTSTR HomeFax;
|
|
LPTSTR OtherFax;
|
|
LPTSTR Country;
|
|
} PICKFAX, * PPICKFAX;
|
|
|
|
struct CRecipCmp
|
|
{
|
|
/*
|
|
Comparison operator 'less'
|
|
Compare two PRECIPIENT by recipient's name and fax number
|
|
*/
|
|
bool operator()(const PRECIPIENT pcRecipient1, const PRECIPIENT pcRecipient2) const;
|
|
};
|
|
|
|
|
|
typedef set<PRECIPIENT, CRecipCmp> RECIPIENTS_SET;
|
|
|
|
|
|
class CCommonAbObj {
|
|
|
|
protected:
|
|
|
|
LPADRBOOK m_lpAdrBook;
|
|
LPADRLIST m_lpAdrList;
|
|
|
|
LPMAILUSER m_lpMailUser;
|
|
|
|
HWND m_hWnd;
|
|
|
|
// DWORD m_PickNumber;
|
|
|
|
RECIPIENTS_SET m_setRecipients;
|
|
|
|
BOOL m_bUnicode; // The Unicode is supported by Address Book
|
|
|
|
ULONG StrCoding() { return m_bUnicode ? MAPI_UNICODE : 0; }
|
|
|
|
LPTSTR StrToAddrBk(LPCTSTR szStr, DWORD* pdwSize = NULL); // return allocated string converted to the Address book encoding
|
|
LPTSTR StrFromAddrBk(LPSPropValue pValue); // return allocated string converted from the Address book encoding
|
|
|
|
BOOL StrPropOk(LPSPropValue lpPropVals);
|
|
BOOL ABStrCmp(LPSPropValue lpPropVals, LPTSTR pStr);
|
|
|
|
enum eABType {AB_MAPI, AB_WAB};
|
|
|
|
virtual eABType GetABType()=0;
|
|
|
|
BOOL GetAddrBookCaption(LPTSTR szCaption, DWORD dwSize);
|
|
|
|
LPSPropValue FindProp(LPSPropValue rgprop,
|
|
ULONG cprop,
|
|
ULONG ulPropTag);
|
|
|
|
virtual HRESULT ABAllocateBuffer(
|
|
ULONG cbSize,
|
|
LPVOID FAR * lppBuffer
|
|
) = 0;
|
|
|
|
virtual ULONG ABFreeBuffer(
|
|
LPVOID lpBuffer
|
|
) = 0;
|
|
|
|
virtual BOOL isInitialized() const = 0;
|
|
|
|
DWORD GetRecipientInfo(
|
|
LPSPropValue SPropVals,
|
|
ULONG cValues,
|
|
PRECIPIENT pRecipient,
|
|
PRECIPIENT pOldRecipList
|
|
);
|
|
|
|
BOOL
|
|
GetOneOffRecipientInfo(
|
|
LPSPropValue SPropVals,
|
|
ULONG cValues,
|
|
PRECIPIENT pRecipient,
|
|
PRECIPIENT pOldRecipList
|
|
);
|
|
|
|
LPTSTR GetEmail(
|
|
LPSPropValue SPropVals,
|
|
ULONG cValues
|
|
);
|
|
|
|
|
|
DWORD InterpretAddress(
|
|
LPSPropValue SPropVals,
|
|
ULONG cValues,
|
|
PRECIPIENT *ppNewRecipList,
|
|
PRECIPIENT pOldRecipList
|
|
);
|
|
LPTSTR
|
|
InterpretEmailAddress(
|
|
LPSPropValue SPropVal,
|
|
ULONG cValues
|
|
);
|
|
|
|
DWORD InterpretDistList(
|
|
LPSPropValue SPropVals,
|
|
ULONG cValues,
|
|
PRECIPIENT *ppNewRecipList,
|
|
PRECIPIENT pOldRecipList
|
|
);
|
|
|
|
PRECIPIENT FindRecipient(
|
|
PRECIPIENT pRecipList,
|
|
PICKFAX* pPickFax
|
|
);
|
|
|
|
PRECIPIENT FindRecipient(
|
|
PRECIPIENT pRecipient,
|
|
PRECIPIENT pRecipList
|
|
);
|
|
|
|
DWORD AddRecipient(
|
|
PRECIPIENT* ppNewRecip,
|
|
PRECIPIENT pRecipient,
|
|
BOOL bFromAddressBook
|
|
);
|
|
|
|
BOOL GetRecipientProps(PRECIPIENT pRecipient,
|
|
LPSPropValue* pMapiProps,
|
|
DWORD* pdwPropsNum);
|
|
|
|
|
|
public:
|
|
|
|
CCommonAbObj(HINSTANCE hInstance);
|
|
~CCommonAbObj();
|
|
|
|
BOOL
|
|
Address(
|
|
HWND hWnd,
|
|
PRECIPIENT pRecip,
|
|
PRECIPIENT * ppNewRecip
|
|
);
|
|
|
|
LPTSTR
|
|
AddressEmail(
|
|
HWND hWnd
|
|
);
|
|
|
|
static HINSTANCE m_hInstance;
|
|
} ;
|
|
|
|
|
|
#endif
|