//--------------------------------------------------------------
//
//  MAPI.H 
//
//  This is a header file containing definitions for various
//  numeric properties of form controls, which used to be 
//  enumerated.
// 
//  Dependencies: WIN32API.H
//
//  dBASE Samples Group
//
//  $Revision:   1.2  $
//
//  Portions copyright (c) 1993-1995, Microsoft Corp. 
//
//---------------------------------------------------------------

//
//  M A P I . H
//
//  Messaging Applications Programming Interface.
//
//  Purpose:
//
//    This file defines the structures and constants used by that
//    subset of the Messaging Applications Programming Interface
//    which is supported under Windows by Microsoft Mail for PC
//    Networks version 3.x.
//


#ifndef MAPI_H
#define MAPI_H

#include <WINDEF.H>

//
//  Types.
//


#define LPULONG              CPTR ULONG
#define FLAGS                ULONG

#ifndef LHANDLE
#define LHANDLE              ULONG
#define LPLHANDLE            CPTR ULONG
#endif

#ifndef LPBYTE
#define LPBYTE               CPTR
#endif

#define    lhSessionNull     (0)

#define MapiFileDesc         CPTR
#define lpMapiFileDesc       CPTR

#define MAPI_OLE             0x00000001
#define MAPI_OLE_STATIC      0x00000002


#define MapiFileTagExt       CPTR
#define lpMapiFileTagExt     CPTR

#define MapiRecipDesc        CPTR
#define lpMapiRecipDesc      CPTR

#ifndef MAPI_ORIG               // also defined in mapix.h
#define MAPI_ORIG   0           // Recipient is message originator
#define MAPI_TO     1           // Recipient is a primary recipient
#define MAPI_CC     2           // Recipient is a copy recipient
#define MAPI_BCC    3           // Recipient is blind copy recipient 
#endif

#define MapiMessage          CPTR
#define lpMapiMessage        CPTR

#define MAPI_UNREAD             0x00000001
#define MAPI_RECEIPT_REQUESTED  0x00000002
#define MAPI_SENT               0x00000004

//
//  Entry points.
//

//
//  flFlags values for Simple MAPI entry points. All documented flags are
//  shown for each call. Duplicates are commented out but remain present
//  for every call.
//

// MAPILogon() flags.

#define MAPI_LOGON_UI           0x00000001  // Display logon UI
#ifndef MAPI_PASSWORD_UI
#define MAPI_PASSWORD_UI        0x00020000  // prompt for password only
#endif
#define MAPI_NEW_SESSION        0x00000002  // Don't use shared session
#define MAPI_FORCE_DOWNLOAD     0x00001000  // Get new mail before return
#define MAPI_ALLOW_OTHERS       0x00000008  // Make this a shared session
#define MAPI_EXPLICIT_PROFILE   0x00000010  // Don't use default profile
#define MAPI_EXTENDED           0x00000020  // Extended MAPI Logon
#define MAPI_USE_DEFAULT        0x00000040  // Use default profile in logon

#define MAPI_SIMPLE_DEFAULT  (bitor(bitor(MAPI_LOGON_UI, MAPI_FORCE_DOWNLOAD), MAPI_ALLOW_OTHERS))
#define MAPI_SIMPLE_EXPLICIT (bitor(bitor(MAPI_NEW_SESSION, MAPI_FORCE_DOWNLOAD), MAPI_EXPLICIT_PROFILE))

// MAPILogoff() flags.

#define MAPI_LOGOFF_SHARED      0x00000001  // Close all shared session
#define MAPI_LOGOFF_UI          0x00000002  // It's OK to present UI

// MAPISendMail() flags.

// #define MAPI_LOGON_UI        0x00000001   // Display logon UI
// #define MAPI_NEW_SESSION     0x00000002   // Don't use shared session

#ifndef MAPI_DIALOG             // also defined in property.h 
#define MAPI_DIALOG             0x00000008  // Display a send note UI
#endif
// #define MAPI_USE_DEFAULT     0x00000040   // Use default profile in logon

// MAPIFindNext() flags.

#define MAPI_UNREAD_ONLY        0x00000020  // Only unread messages
#define MAPI_GUARANTEE_FIFO     0x00000100  // use date order
#define MAPI_LONG_MSGID         0x00004000  // allow 512 char returned ID

// MAPIReadMail() flags.

#define MAPI_PEEK               0x00000080  // Do not mark as read.
#define MAPI_SUPPRESS_ATTACH    0x00000800  // header + body, no files
#define MAPI_ENVELOPE_ONLY      0x00000040  // Only header information
#define MAPI_BODY_AS_FILE       0x00000200

// MAPISaveMail() flags.

// #define MAPI_LOGON_UI        0x00000001  //  Display logon UI
// #define MAPI_NEW_SESSION     0x00000002  //  Don't use shared session
// #define MAPI_LONG_MSGID      0x00004000  //  allow 512 char returned ID

// MAPIAddress() flags.

// #define MAPI_LOGON_UI        0x00000001   // Display logon UI
// #define MAPI_NEW_SESSION     0x00000002   // Don't use shared session

// MAPIDetails() flags.

// #define MAPI_LOGON_UI        0x00000001   // Display logon UI            
// #define MAPI_NEW_SESSION     0x00000002   // Don't use shared session
#define MAPI_AB_NOMODIFY        0x00000400   // Don't allow mods of AB entries

// MAPIResolveName() flags.

// #define MAPI_LOGON_UI        0x00000001     Display logon Ui
// #define MAPI_NEW_SESSION     0x00000002     Don't use shared session
// #define MAPI_DIALOG          0x00000008     Prompt for choices if ambiguous
// #define MAPI_AB_NOMODIFY     0x00000400     Don't allow mods of AB entries 

#ifndef SUCCESS_SUCCESS
#define SUCCESS_SUCCESS                 0
#endif
#define MAPI_USER_ABORT                 1
#define MAPI_E_USER_ABORT               MAPI_USER_ABORT
#define MAPI_E_FAILURE                  2
#define MAPI_E_LOGON_FAILURE            3
#define MAPI_E_LOGIN_FAILURE            MAPI_E_LOGON_FAILURE
#define MAPI_E_DISK_FULL                4
#define MAPI_E_INSUFFICIENT_MEMORY      5
#define MAPI_E_ACCESS_DENIED            6
#define MAPI_E_TOO_MANY_SESSIONS        8
#define MAPI_E_TOO_MANY_FILES           9
#define MAPI_E_TOO_MANY_RECIPIENTS      10
#define MAPI_E_ATTACHMENT_NOT_FOUND     11
#define MAPI_E_ATTACHMENT_OPEN_FAILURE  12
#define MAPI_E_ATTACHMENT_WRITE_FAILURE 13
#define MAPI_E_UNKNOWN_RECIPIENT        14
#define MAPI_E_BAD_RECIPTYPE            15
#define MAPI_E_NO_MESSAGES              16
#define MAPI_E_INVALID_MESSAGE          17
#define MAPI_E_TEXT_TOO_LARGE           18
#define MAPI_E_INVALID_SESSION          19
#define MAPI_E_TYPE_NOT_SUPPORTED       20
#define MAPI_E_AMBIGUOUS_RECIPIENT      21
#define MAPI_E_AMBIG_RECIP              MAPI_E_AMBIGUOUS_RECIPIENT
#define MAPI_E_MESSAGE_IN_USE           22
#define MAPI_E_NETWORK_FAILURE          23
#define MAPI_E_INVALID_EDITFIELDS       24
#define MAPI_E_INVALID_RECIPS           25
#define MAPI_E_NOT_SUPPORTED            26

#endif // MAPI_H
