- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
XTPCalendarMAPIWrapper.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:14k
源码类别:
对话框与窗口
开发平台:
Visual C++
- // XTPCalendarMAPIWrapper.h: interface for the CXTPCalendarMAPIWrapper class.
- //
- // This file is a part of the XTREME CALENDAR MFC class library.
- // (c)1998-2008 Codejock Software, All Rights Reserved.
- //
- // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
- // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
- // CONSENT OF CODEJOCK SOFTWARE.
- //
- // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
- // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
- // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
- // SINGLE COMPUTER.
- //
- // CONTACT INFORMATION:
- // support@codejock.com
- // http://www.codejock.com
- //
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_CODEJOCK_PRIVATE
- #if !defined(__XTPCALENDARMAPIWRAPPER_H__)
- #define __XTPCALENDARMAPIWRAPPER_H__
- //}}AFX_CODEJOCK_PRIVATE
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include "Calendar/mapi/mapidefs.h"
- #include "Calendar/mapi/mapicode.h"
- #include "Calendar/mapi/mapiguid.h"
- #include "Calendar/mapi/mapitags.h"
- #include "Calendar/mapi/mapix.h"
- //{{AFX_CODEJOCK_PRIVATE
- #define TYPEDEF_WRAPPER_POINTER(val, type, proc)
- const int xtpWrapper##proc = val;
- const LPCSTR xtpWrapperProc##proc = #proc;
- typedef type (__stdcall* PFN##proc)
- #define TYPEDEF_WRAPPER_PTR_NUM(val, type, proc, num)
- const int xtpWrapper##proc = val;
- const LPCSTR xtpWrapperProc##proc = #proc"@"#num;
- typedef type (__stdcall* PFN##proc)
- TYPEDEF_WRAPPER_POINTER(0, HRESULT, MAPIInitialize)(LPVOID);
- TYPEDEF_WRAPPER_POINTER(1, void, MAPIUninitialize)();
- TYPEDEF_WRAPPER_POINTER(2, HRESULT, MAPILogonEx)(ULONG, LPTSTR, LPTSTR, FLAGS, LPMAPISESSION FAR *);
- TYPEDEF_WRAPPER_POINTER(3, ULONG, MAPIFreeBuffer)(LPVOID);
- TYPEDEF_WRAPPER_PTR_NUM(4, ULONG, UlRelease, 4)(LPVOID);
- TYPEDEF_WRAPPER_PTR_NUM(5, void, FreeProws, 4)(LPSRowSet);
- TYPEDEF_WRAPPER_PTR_NUM(6, HRESULT, HrQueryAllRows, 24)(LPMAPITABLE, LPSPropTagArray, LPSRestriction, LPSSortOrderSet, LONG, LPSRowSet FAR *);
- TYPEDEF_WRAPPER_PTR_NUM(7, HRESULT, HrGetOneProp, 12)(LPMAPIPROP, ULONG, LPSPropValue FAR *);
- TYPEDEF_WRAPPER_PTR_NUM(8, HRESULT, HrSetOneProp, 8)(LPMAPIPROP, LPSPropValue);
- TYPEDEF_WRAPPER_POINTER(9, SCODE, MAPIAllocateBuffer)(ULONG, LPVOID FAR *);
- TYPEDEF_WRAPPER_PTR_NUM(10, HRESULT, HrThisThreadAdviseSink, 8)(LPMAPIADVISESINK, LPMAPIADVISESINK FAR *);
- TYPEDEF_WRAPPER_PTR_NUM(11, HRESULT, HrAllocAdviseSink, 12)(LPNOTIFCALLBACK, LPVOID, LPMAPIADVISESINK FAR *);
- //}}AFX_CODEJOCK_PRIVATE
- //===========================================================================
- // Summary:
- // The CXTPCalendarMAPIWrapper class wraps the mapi32.dll API.
- //===========================================================================
- class _XTP_EXT_CLASS CXTPCalendarMAPIWrapper
- {
- public:
- //-----------------------------------------------------------------------
- // Summary:
- // Constructs a CXTPCalendarMAPIWrapper object.
- //-----------------------------------------------------------------------
- CXTPCalendarMAPIWrapper();
- //-----------------------------------------------------------------------
- // Summary:
- // Destroys a CXTPCalendarMAPIWrapper object, handles cleanup and
- // deallocation.
- //-----------------------------------------------------------------------
- virtual ~CXTPCalendarMAPIWrapper();
- /////////////////////////////////////////////////////////////////////////
- // Wrapped methods
- //-----------------------------------------------------------------------
- // Summary:
- // Increments the MAPI subsystem reference count and initializes
- // global data for the MAPI DLL.
- // Parameters:
- // lpMapiInit - [in] Pointer to a MAPIINIT_0 structure.
- // The lpMapiInit parameter can be set to NULL.
- // Returns:
- // Returns S_OK if MAPI subsystem was initialized successfully,
- // or an error value otherwise.
- //-----------------------------------------------------------------------
- HRESULT MAPIInitialize(LPVOID lpMapiInit);
- //-----------------------------------------------------------------------
- // Summary:
- // Decrements the reference count, cleans up, and deletes
- // per-instance global data for the MAPI DLL.
- //-----------------------------------------------------------------------
- void MAPIUninitialize();
- //-----------------------------------------------------------------------
- // Summary:
- // Logs a client application on to a session with the messaging system..
- // Parameters:
- // ulUIParam - [in] Handle to the window to which the logon dialog box is modal.
- // If no dialog box is displayed during the call,
- // the ulUIParam parameter is ignored. This parameter can be zero..
- // lpszProfileName - [in] Pointer to a string containing the name of the profile to use
- // when logging on. This string is limited to 64 characters.
- // lpszPassword - [in] Pointer to a string containing the password of the profile.
- // The lpszPassword parameter can be NULL whether or not the
- // lpszProfileName parameter is NULL. This string is limited to 64 characters. .
- // flFlags - [in] Bitmask of flags used to control how logon is performed.
- // See API MAPILogonEx description for more info.
- // lppSession - [out] Pointer to a pointer to the MAPI session interface.
- // Returns:
- // S_OK - The logon succeeded.
- // MAPI_E_LOGON_FAILED - The logon did not succeed, either because one or more of the
- // parameters to MAPILogonEx were invalid or because there were
- // too many sessions open already.
- // MAPI_E_TIMEOUT - MAPI serializes all logons through a mutex. This is returned if
- // the MAPI_TIMEOUT_SHORT flag was set and another thread held the mutex.
- // MAPI_E_USER_CANCEL - The user canceled the operation, typically by clicking
- // the Cancel button in a dialog box.
- //-----------------------------------------------------------------------
- HRESULT MAPILogonEx(ULONG ulUIParam, LPTSTR lpszProfileName, LPTSTR lpszPassword, FLAGS flFlags, LPMAPISESSION FAR * lppSession);
- //-----------------------------------------------------------------------
- // Summary:
- // Frees a memory buffer allocated with a call to the MAPIAllocateBuffer
- // function or the MAPIAllocateMore function.
- // Parameters:
- // lpBuffer - [in] Pointer to a previously allocated memory buffer.
- // If NULL is passed in the lpBuffer parameter, MAPIFreeBuffer does nothing. .
- // Returns:
- // Returns S_OK if the call succeeded and freed the memory requested.
- // MAPIFreeBuffer can also return S_OK on already freed locations or
- // if memory block is not allocated with MAPIAllocateBuffer and MAPIAllocateMore.
- //-----------------------------------------------------------------------
- ULONG MAPIFreeBuffer(LPVOID lpBuffer);
- //-----------------------------------------------------------------------
- // Summary:
- // Provides an alternative way to invoke the OLE method IUnknown::Release. .
- // Parameters:
- // punk - [in] Pointer to an interface derived from the IUnknown interface,
- // in other words any MAPI interface.
- // Returns:
- // Returns S_OK if the call succeeded and has returned the expected value or values.
- // MAPI_E_CALL_FAILED - An error of unexpected or unknown origin
- // prevented the operation from completing.
- //-----------------------------------------------------------------------
- ULONG UlRelease(LPVOID punk);
- //-----------------------------------------------------------------------
- // Summary:
- // Destroys an SRowSet structure and frees associated memory, including
- // memory allocated for all member arrays and structures.
- // Parameters:
- // prows - [in] Pointer to the SRowSet structure to be destroyed.
- //-----------------------------------------------------------------------
- void FreeProws(LPSRowSet prows);
- //-----------------------------------------------------------------------
- // Summary:
- // Retrieves all rows of a table.
- // Parameters:
- // ptable - [in] Pointer to the MAPI table from which rows are retrieved.
- // ptaga - [in] Pointer to an SPropTagArray structure containing an array of property tags
- // indicating table columns. These tags are used to select the specific columns
- // to be retrieved. If the ptaga parameter is NULL, HrQueryAllRows retrieves the
- // entire column set of the current table view passed in the ptable parameter.
- // pres - [in] Pointer to an SRestriction structure containing retrieval restrictions.
- // If the pres parameter is NULL, HrQueryAllRows makes no restrictions.
- // psos - [in] Pointer to an SSortOrderSet structure identifying the sort order of the
- // columns to be retrieved. If the psos parameter is NULL,
- // the default sort order for the table is used.
- // crowsMax-[in] Maximum number of rows to be retrieved. If the value of the crowsMax
- // parameter is zero, no limit on the number of rows retrieved is set.
- // pprows - [out] Pointer to a pointer to the returned SRowSet structure containing
- // an array of pointers to the retrieved table rows.
- // Returns:
- // Returns S_OK if the call succeeded and retrieved the expected rows of a table.
- // MAPI_E_TABLE_TOO_BIG - The number of rows in the table is larger than
- // the number passed for the crowsMax parameter.
- //-----------------------------------------------------------------------
- HRESULT HrQueryAllRows(LPMAPITABLE ptable, LPSPropTagArray ptaga, LPSRestriction pres, LPSSortOrderSet psos, LONG crowsMax, LPSRowSet FAR * pprows);
- //-----------------------------------------------------------------------
- // Summary:
- // Retrieves the value of a single property from a property interface,
- // that is, an interface derived from IMAPIProp.
- // Parameters:
- // pmp - [in] Pointer to the IMAPIProp interface from which
- // the property value is to be retrieved.
- // ulPropTag - [in] Property tag of the property to be retrieved.
- // ppprop - [out] Pointer to a pointer to the returned SPropValue
- // structure defining the retrieved property value.
- // Returns:
- // MAPI_E_NOT_FOUND - The requested property is not available from
- // the specified interface.
- //-----------------------------------------------------------------------
- HRESULT HrGetOneProp(LPMAPIPROP pmp, ULONG ulPropTag, LPSPropValue FAR * ppprop);
- //-----------------------------------------------------------------------
- // Summary:
- // Sets or changes the value of a single property on a property
- // interface, that is, an interface derived from IMAPIProp.
- // Parameters:
- // pmp - [in] Pointer to an IMAPIProp interface on which the
- // property value is to be set or changed.
- // pprop - [in] Pointer to the SPropValue structure defining the
- // property to be set or changed.
- // Returns:
- // MAPI_E_NOT_FOUND - The requested property is not available from
- // the specified interface.
- //-----------------------------------------------------------------------
- HRESULT HrSetOneProp(LPMAPIPROP pmp, LPSPropValue pprop);
- //-----------------------------------------------------------------------
- // Summary:
- // Allocates a memory buffer.
- // Parameters:
- // cbSize - [in] Size, in bytes, of the buffer to be allocated.
- // lppBuffer - [out] Pointer to the returned allocated buffer.
- // Returns:
- // Returns S_OK if the call succeeded and has returned
- // the expected value or values.
- //-----------------------------------------------------------------------
- SCODE MAPIAllocateBuffer(ULONG cbSize, LPVOID FAR * lppBuffer);
- //-----------------------------------------------------------------------
- // Summary:
- // Creates an advise sink that wraps an existing advise sink for
- // thread safety.
- // Parameters:
- // lpAdviseSink - [in] Pointer to the advise sink to be wrapped.
- // lppAdviseSink - [out] Pointer to a pointer to a new advise sink
- // that wraps the advise sink pointed to by the
- // lpAdviseSink parameter.
- //-----------------------------------------------------------------------
- HRESULT HrThisThreadAdviseSink(LPMAPIADVISESINK lpAdviseSink, LPMAPIADVISESINK FAR * lppAdviseSink);
- //-----------------------------------------------------------------------
- // Summary:
- // Creates an advise sink object, given a context specified by the
- // calling implementation and a callback function to be triggered by
- // an event notification..
- // Parameters:
- // lpfnCallback - [in] Pointer to a callback function based on the
- // NOTIFCALLBACK prototype that MAPI is to call when
- // a notification event occurs for the newly created
- // advise sink. .
- // lpvContext - [in] Pointer to caller data passed to the callback
- // function when MAPI calls it. The caller data can
- // represent an address of significance to the client
- // or provider. Typically, for C++ code, the lpvContext
- // parameter represents a pointer to the address of
- // an object.
- // lppAdviseSink - [out] Pointer to a pointer to an advise sink object.
- //-----------------------------------------------------------------------
- HRESULT HrAllocAdviseSink(LPNOTIFCALLBACK lpfnCallback, LPVOID lpvContext, LPMAPIADVISESINK FAR * lppAdviseSink);
- private:
- LPVOID m_ptrWrappers[12]; // Wrapper pointer
- HMODULE m_hMapiDll; // Handle to the mapi32 dll.
- };
- /////////////////////////////////////////////////////////////////////////////
- #endif // !defined(__XTPCALENDARMAPIWRAPPER_H__)