Leaked source code of windows server 2003
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

/*++
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