//********************************************************************* //* Microsoft Windows ** //* Copyright(c) Microsoft Corp., 1994-1999 ** //********************************************************************* // // MAPICALL.H - Header file for MAPI callout module // // // HISTORY: // // 1/27/95 jeremys Created. // 96/03/26 markdu Put #ifdef __cplusplus around extern "C" // #ifndef _MAPICALL_H_ #define _MAPICALL_H_ #undef MAPI_DIM #define MAPI_DIM 10 #ifdef __cplusplus extern "C" { #endif // __cplusplus #include #include #include #include #define MAPI_NOWIDECHAR // MAPI guys...don't map lstr*W to MNLS_lstr*W #include #include #include #include #include "inetprop.h" #ifdef DEBUG #undef Assert // more MAPI guys! #include #endif #ifdef __cplusplus } #endif // __cplusplus // prototype for function pointer for MAPI util function typedef HRESULT (CALLBACK * LPHRQUERYALLROWS) (LPMAPITABLE, LPSPropTagArray, LPSRestriction, LPSSortOrderSet,LONG,LPSRowSet FAR *); extern HINSTANCE hInstMAPIDll; // handle to MAPI dll we load explicitly // structure used in determining if a service is present in a MAPI profile, // and to install the service typedef struct tagMSGSERVICE { BOOL fPresent; // TRUE if service is present UINT uIDServiceName; // ID of str resource with service name (non-UI) UINT uIDServiceDescription; // ID of str resource with service desc (for UI) BOOL fNeedConfig; // TRUE if create-time config proc should be called UINT uIDStoreFilename; // name to try for message store for UINT uIDStoreFilename1; // name to use to generate other message store names UINT uPropID; // prop val ID for message store property for this service } MSGSERVICE; #define NUM_SERVICES 3 // number of services in table of MSGSERVICEs // class to aid in releasing interfaces. When you obtain an OLE interface, // you can contruct a RELEASE_ME_LATER object with the pointer to the interface. // When the object is destructed, it will release the interface. class RELEASE_ME_LATER { private: LPUNKNOWN _lpInterface; public: RELEASE_ME_LATER(LPUNKNOWN lpInterface) { _lpInterface = lpInterface; } ~RELEASE_ME_LATER() { if (_lpInterface) _lpInterface->Release(); } }; // defines needed by route 66 config DLL. Note: don't change these! #define CONNECT_TYPE_LAN 1 #define CONNECT_TYPE_REMOTE 2 #define DOWNLOAD_OPTION_HEADERS 1 #define DOWNLOAD_OPTION_MAIL_DELETE 3 class ENUM_MAPI_PROFILE { private: LPSRowSet _pProfileRowSet; UINT _iRow; UINT _nEntries; public: ENUM_MAPI_PROFILE(); ~ENUM_MAPI_PROFILE(); BOOL Next(LPWSTR * ppProfileName, BOOL * pfDefault); UINT GetEntryCount() { return _nEntries; } }; class ENUM_MAPI_SERVICE { private: LPSRowSet _pServiceRowSet; UINT _iRow; UINT _nEntries; public: ENUM_MAPI_SERVICE(LPWSTR pszProfileName); ~ENUM_MAPI_SERVICE(); BOOL Next(LPWSTR * ppServiceName); UINT GetEntryCount() { return _nEntries; } }; #endif // _MAPICALL_H_