home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
vc98
/
include
/
wabapi.h
< prev
next >
Wrap
C/C++ Source or Header
|
1998-04-25
|
7KB
|
199 lines
#ifndef _WABAPI_H_
#define _WABAPI_H_
#ifdef __cplusplus
extern "C" {
#endif
#ifdef WIN16
#ifdef GetLastError
#undef GetLastError
#endif // GetLastError
#endif // WIN16
/* IWABObject Interface ---------------------------------------------------- */
#define CBIWABOBJECT sizeof(IWABOBJECT)
#define WAB_IWABOBJECT_METHODS(IPURE) \
MAPIMETHOD(GetLastError) \
(THIS_ HRESULT hResult, \
ULONG ulFlags, \
LPMAPIERROR FAR * lppMAPIError) IPURE; \
MAPIMETHOD(AllocateBuffer) \
(THIS_ ULONG cbSize, \
LPVOID FAR * lppBuffer) IPURE; \
MAPIMETHOD(AllocateMore) \
(THIS_ ULONG cbSize, \
LPVOID lpObject, \
LPVOID FAR * lppBuffer) IPURE; \
MAPIMETHOD(FreeBuffer) \
(THIS_ LPVOID lpBuffer) IPURE; \
MAPIMETHOD(Backup) \
(THIS_ LPTSTR lpFileName) IPURE; \
MAPIMETHOD(Import) \
(THIS_ LPTSTR lpFileName) IPURE; \
MAPIMETHOD(Find) \
(THIS_ LPADRBOOK lpIAB, \
HWND hWnd) IPURE; \
MAPIMETHOD(VCardDisplay) \
(THIS_ LPADRBOOK lpIAB, \
HWND hWnd, \
LPTSTR lpszFileName) IPURE; \
MAPIMETHOD(LDAPUrl) \
(THIS_ LPADRBOOK lpIAB, \
HWND hWnd, \
ULONG ulFlags, \
LPTSTR lpszURL, \
LPMAILUSER *lppMailUser) IPURE; \
MAPIMETHOD(VCardCreate) \
(THIS_ LPADRBOOK lpIAB, \
ULONG ulFlags, \
LPTSTR lpszVCard, \
LPMAILUSER lpMailUser) IPURE; \
MAPIMETHOD(VCardRetrieve) \
(THIS_ LPADRBOOK lpIAB, \
ULONG ulFlags, \
LPTSTR lpszVCard, \
LPMAILUSER *lppMailUser) IPURE; \
MAPIMETHOD(GetMe) \
(THIS_ LPADRBOOK lpIAB, \
ULONG ulFlags, \
DWORD * lpdwAction, \
SBinary * lpsbEID, \
ULONG ulReserved) IPURE; \
MAPIMETHOD(SetMe) \
(THIS_ LPADRBOOK lpIAB, \
ULONG ulFlags, \
SBinary sbEID, \
ULONG ulReserved) IPURE; \
#undef INTERFACE
#define INTERFACE IWABObject
DECLARE_MAPI_INTERFACE_(IWABObject, IUnknown)
{
BEGIN_INTERFACE
MAPI_IUNKNOWN_METHODS(PURE)
WAB_IWABOBJECT_METHODS(PURE)
};
DECLARE_MAPI_INTERFACE_PTR(IWABObject, LPWABOBJECT);
#undef INTERFACE
#define INTERFACE struct _IWABOBJECT
#undef METHOD_PREFIX
#define METHOD_PREFIX IWABOBJECT_
#undef LPVTBL_ELEM
#define LPVTBL_ELEM lpvtbl
#undef MAPIMETHOD_
#define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, IWABOBJECT_)
MAPI_IUNKNOWN_METHODS(IMPL)
WAB_IWABOBJECT_METHODS(IMPL)
#undef MAPIMETHOD_
#define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, IWABOBJECT_)
MAPI_IUNKNOWN_METHODS(IMPL)
WAB_IWABOBJECT_METHODS(IMPL)
#undef MAPIMETHOD_
#define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
DECLARE_MAPI_INTERFACE(IWABOBJECT_)
{
BEGIN_INTERFACE
MAPI_IUNKNOWN_METHODS(IMPL)
WAB_IWABOBJECT_METHODS(IMPL)
};
// WABObject_LDAPUrl flag
// If this flag is specified and the LDAPUrl returns a single
// query result, instructs the WAB to return the result in the
// form of a MailUser object instead of displaying Details on it
// If there are multiple results to the query, fail ..
#define WABOBJECT_LDAPURL_RETURN_MAILUSER 0x00000001
// WABObject_GetMe returned parameter
// If the GetMe call results in the creation of a new 'Me' contact,
// the lpdwAction returned parameter will contain this value
// indicating to the caller that the object is freshly created and
// does not have an properties in it
#define WABOBJECT_ME_NEW 0x00000001
// IWABObject_VCard Create/Retrieve
// Flags the WAB whether the lpszVCard parameter is a filename or if
// it is a NULL terminated string containing the compelte VCard contents
//
#define WAB_VCARD_FILE 0x00000000
#define WAB_VCARD_STREAM 0x00000001
#ifdef WIN16
BOOL WINAPI WABInitThread();
#endif
//
// Input information to pass to WABOpen
//
typedef struct _tagWAB_PARAM
{
ULONG cbSize; // sizeof(WAB_PARAM).
HWND hwnd; // hWnd of calling client Application. Can be NULL
LPTSTR szFileName; // WAB File name to open. if NULL, opens default.
ULONG ulFlags; // Currently no flags.
} WAB_PARAM, * LPWAB_PARAM;
//
// Root public entry points for WAB API
//
STDMETHODIMP WABOpen(LPADRBOOK FAR * lppAdrBook, LPWABOBJECT FAR * lppWABObject,
LPWAB_PARAM lpWP, DWORD Reserved2);
typedef HRESULT (STDMETHODCALLTYPE WABOPEN)(
LPADRBOOK FAR * lppAdrBook,
LPWABOBJECT FAR * lppWABObject,
LPWAB_PARAM lpWP,
DWORD Reserved2
);
typedef WABOPEN FAR * LPWABOPEN;
STDMETHODIMP WABOpenEx(LPADRBOOK FAR * lppAdrBook,
LPWABOBJECT FAR * lppWABObject,
LPWAB_PARAM lpWP,
DWORD Reserved,
ALLOCATEBUFFER * fnAllocateBuffer,
ALLOCATEMORE * fnAllocateMore,
FREEBUFFER * fnFreeBuffer);
typedef HRESULT (STDMETHODCALLTYPE WABOPENEX)(
LPADRBOOK FAR * lppAdrBook,
LPWABOBJECT FAR * lppWABObject,
LPWAB_PARAM lpWP,
DWORD Reserved,
ALLOCATEBUFFER * fnAllocateBuffer,
ALLOCATEMORE * fnAllocateMore,
FREEBUFFER * fnFreeBuffer
);
typedef WABOPENEX FAR * LPWABOPENEX;
#ifndef WIN16
#define WAB_DLL_NAME "WAB32.DLL"
#else
#define WAB_DLL_NAME "WAB16.DLL"
#endif
#define WAB_DLL_PATH_KEY TEXT("Software\\Microsoft\\WAB\\DLLPath")
#ifdef __cplusplus
}
#endif
#endif /* _WABAPI_H */