CMCCLI.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:9k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*
  2.  -  C M C C L I . H
  3.  -
  4.  *  Purpose:
  5.  *      Header file for the sample mail client based on CMC.
  6.  *
  7.  */
  8. #ifndef CMC_H
  9. //#include <xcmc.h>
  10. #endif
  11. #ifndef ULONG
  12. typedef unsigned long ULONG;
  13. #endif
  14. /* Menu Item IDs */
  15. #define IDM_LOGON           100
  16. #define IDM_LOGOFF          101
  17. #define IDM_EXIT            102
  18. #define IDM_COMPOSE_CMC     103
  19. #define IDM_COMPOSE_CUSTOM  104
  20. #define IDM_READ            105
  21. #define IDM_ADDRBOOK        106
  22. #define IDM_ABOUT           107
  23. /* Resource IDs */
  24. #define ICON_NOMAIL     200
  25. #define ICON_MAIL       201
  26. #define IDREAD          300
  27. #define IDREADA         301
  28. #define IDUNREAD        302
  29. #define IDUNREADA       303
  30. /* Address Book Control IDs */
  31. #define IDT_ADDRESS     101
  32. #define IDC_ADDRESS     102
  33. #define IDT_LIST        103
  34. #define IDC_LIST        104
  35. #define IDC_ADD         105
  36. #define IDC_REMOVE      106
  37. /* Compose Note Control IDs */
  38. #define IDC_SEND        101
  39. #define IDC_RESOLVE     102
  40. #define IDC_ATTACH      103
  41. #define IDC_OPTIONS     104
  42. #define IDC_ADDRBOOK    105
  43. #define IDT_TO          106
  44. #define IDC_TO          107
  45. #define IDT_CC          108
  46. #define IDC_CC          109
  47. #define IDT_SUBJECT     110
  48. #define IDC_SUBJECT     111
  49. #define IDC_NOTE        112
  50. #define IDC_LINE1       113
  51. #define IDC_LINE2       114
  52. /* InBox Control IDs */
  53. #define IDT_MSG         101
  54. #define IDC_MSG         102
  55. #define IDC_NEW         103
  56. #define IDC_READ        104
  57. #define IDC_DELETE      105
  58. #define IDC_CLOSE       106
  59. /* ReadNote Control IDs */
  60. #define IDC_SAVECHANGES 101
  61. #define IDC_SAVEATTACH  102
  62. #define IDC_REPLY       103
  63. #define IDC_REPLYALL    104
  64. #define IDC_FORWARD     105
  65. #define IDT_RFROM       106
  66. #define IDT_RDATE       107
  67. #define IDT_RTO         108
  68. #define IDT_RCC         109
  69. #define IDT_RSUBJECT    110
  70. #define IDC_RFROM       111
  71. #define IDC_RDATE       112
  72. #define IDC_RTO         113
  73. #define IDC_RCC         114
  74. #define IDC_RSUBJECT    115
  75. #define IDC_READNOTE    116
  76. #define IDT_ATTACHMENT  117
  77. #define IDC_ATTACHMENT  118
  78. #define IDC_LINE3       119
  79. #define IDC_LINE4       120
  80. /* Options Control IDs */
  81. #define IDC_RETURN      101
  82. #define IDC_PRIORITY    102
  83. #define IDC_URGENT      103
  84. #define IDC_NORMAL      104
  85. #define IDC_LOW         105
  86. /* About Box Control IDs */
  87. #define IDC_VERSION     101
  88. #define IDC_STATIC1     102
  89. #define IDC_STATIC2     103
  90. #define IDC_STATIC3     104
  91. /* String Table IDs */
  92. #define CMC_E_MAX 40
  93. #define IDS_LOGONFAIL           (CMC_E_MAX + 1)
  94. #define IDS_ADDRBOOKFAIL        (CMC_E_MAX + 2)
  95. #define IDS_RESOLVEFAIL         (CMC_E_MAX + 3)
  96. #define IDS_UNRESOLVEDNAMES     (CMC_E_MAX + 4)
  97. #define IDS_SENDERROR           (CMC_E_MAX + 5)
  98. #define IDS_NORECIPS            (CMC_E_MAX + 6)
  99. #define IDS_SAVEATTACHERROR     (CMC_E_MAX + 7)
  100. #define IDS_READFAIL            (CMC_E_MAX + 8)
  101. #define IDS_MAKENEWFAIL         (CMC_E_MAX + 9)
  102. #define IDS_FILTER              (CMC_E_MAX + 50)
  103. /* Manifest Constants */
  104. #define ADDR_MAX            128
  105. #define MAXUSERS            10
  106. #define TO_EDIT_MAX         512
  107. #define CC_EDIT_MAX         512
  108. #define SUBJECT_EDIT_MAX    128
  109. #define NOTE_LINE_MAX       1024
  110. #define FILE_ATTACH_MAX     32
  111. /* Message Box styles */
  112. #define MBS_ERROR           (MB_ICONSTOP | MB_OK)
  113. #define MBS_INFO            (MB_ICONINFORMATION | MB_OK)
  114. #define MBS_OOPS            (MB_ICONEXCLAMATION | MB_OK)
  115. /* Structure Definitions */
  116. typedef struct _msgid FAR *LPMSGID;
  117. typedef struct _msgid
  118. {
  119.     CMC_message_reference   *message_reference;
  120.     CMC_string              from;
  121.     CMC_string              subject;
  122.     CMC_time                time_sent;
  123.     CMC_boolean             fHasAttach;
  124.     CMC_boolean             fRead;
  125.     LPMSGID                 lpPrev;
  126.     LPMSGID                 lpNext;
  127. } MSGID;
  128. /* Function Prototypes */
  129. int  PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
  130. BOOL InitApplication(HINSTANCE);
  131. BOOL InitInstance(HINSTANCE, int);
  132. void DeinitApplication(void);
  133. BOOL InitSimpleCMC (void);
  134. void DeinitSimpleCMC(void);
  135. long FAR PASCAL MainWndProc(HWND, UINT, UINT, LPARAM);
  136. BOOL FAR PASCAL AboutDlgProc(HWND, UINT, UINT, LONG);
  137. BOOL FAR PASCAL InBoxDlgProc(HWND, UINT, UINT, LONG);
  138. BOOL FAR PASCAL ReadMailDlgProc(HWND, UINT, UINT, LONG);
  139. BOOL FAR PASCAL DetailsDlgProc (HWND, UINT, UINT, LONG);
  140. BOOL FAR PASCAL ComposeDlgProc (HWND, UINT, UINT, LONG);
  141. BOOL FAR PASCAL OptionsDlgProc (HWND, UINT, UINT, LONG);
  142. void SecureMenu(HWND hWnd, BOOL fBeforeLogon);
  143.      
  144. void SaveFileAttachments(HWND, CMC_attachment FAR *);
  145. void MakeDisplayNameStr(LPSTR, CMC_enum, ULONG, CMC_recipient FAR *);
  146. ULONG CopyAttachment (CMC_attachment FAR *,CMC_attachment FAR *,CMC_attachment FAR *);
  147. CMC_return_code ResolveFriendlyNames (HWND, LPSTR, CMC_enum, ULONG *, CMC_recipient FAR * *);
  148. CMC_return_code CopyRecipient (CMC_recipient FAR *,CMC_recipient FAR *,CMC_recipient FAR *);
  149. CMC_return_code SaveMsgChanges (HWND,CMC_message far *);
  150. CMC_return_code MakeNewMessage (CMC_message far *, CMC_flags);
  151. CMC_return_code GetNextFile (HWND, ULONG, ULONG *, CMC_attachment FAR * *);
  152. BOOL FNameInList (LPSTR, ULONG, CMC_recipient FAR *);
  153. void DrawMsgItem (DRAWITEMSTRUCT *);
  154. void DrawMsgIcon(HDC , HBITMAP , int , int , int , int);
  155. LPMSGID MakeMsgNode (CMC_message_summary FAR *);
  156. LPMSGID FindNode (LPMSGID, CMC_message_reference FAR *);
  157. void    InsertMsgNode (LPMSGID, LPMSGID *);
  158. void    DeleteMsgNode (LPMSGID, LPMSGID *);
  159. void    FreeMsgList (LPMSGID);
  160. void ConvertDateRec (CMC_time far *, LPSTR);
  161. void MakeMessageBox(HWND, ULONG, UINT, UINT);
  162. void ToggleMenuState(HWND, BOOL);
  163. void LogSendMail(ULONG ulResult);
  164. BOOL fCMCInstalled(void);
  165. /* CMC functions */
  166. extern HINSTANCE    hlibCMC;
  167. typedef CMC_return_code (FAR PASCAL *LPFNCMCQUERYCONFIGURATION)
  168.     (CMC_session_id session, CMC_enum item,CMC_buffer reference,CMC_extension FAR *config_extensions);
  169. extern LPFNCMCQUERYCONFIGURATION lpfnCMCQueryConfiguration;
  170. #define CMCQueryConfiguration           (*lpfnCMCQueryConfiguration)
  171. typedef CMC_return_code (FAR PASCAL *LPFNCMCLOGON)(
  172.     CMC_string              service,
  173.     CMC_string              user,
  174.     CMC_string              password,
  175.     CMC_enum                character_set,
  176.     CMC_ui_id               ui_id,
  177.     CMC_uint16              caller_cmc_version,
  178.     CMC_flags               logon_flags,
  179.     CMC_session_id FAR      *session,
  180.     CMC_extension FAR       *logon_extensions
  181. );
  182. extern LPFNCMCLOGON lpfnCMCLogon;
  183. #define CMCLogon            (*lpfnCMCLogon)
  184. typedef CMC_return_code (FAR PASCAL *LPFNCMCLOGOFF)(
  185.     CMC_session_id          session,
  186.     CMC_ui_id               ui_id,
  187.     CMC_flags               logoff_flags,
  188.     CMC_extension FAR       *logoff_extensions
  189. );
  190. extern LPFNCMCLOGOFF lpfnCMCLogoff;
  191. #define CMCLogoff           (*lpfnCMCLogoff)
  192. typedef CMC_return_code (FAR PASCAL *LPFNCMCFREE)(
  193.     CMC_buffer              memory
  194. );
  195. extern LPFNCMCFREE lpfnCMCFree;
  196. #define CMCFree     (*lpfnCMCFree)
  197. typedef CMC_return_code (FAR PASCAL *LPFNCMCLOOKUP)(
  198.     CMC_session_id          session,
  199.     CMC_recipient FAR       *recipient_in,
  200.     CMC_flags               look_up_flags,
  201.     CMC_ui_id               ui_id,
  202.     CMC_uint32 FAR          *count,
  203.     CMC_recipient FAR * FAR *recipient_out,
  204.     CMC_extension FAR       *look_up_extensions
  205. );
  206. extern LPFNCMCLOOKUP lpfnCMCLookUp;
  207. #define CMCLookUp (*lpfnCMCLookUp)
  208. typedef CMC_return_code (FAR PASCAL *LPFNCMCLIST)(
  209.     CMC_session_id          session,
  210.     CMC_string              message_type,
  211.     CMC_flags               list_flags,
  212.     CMC_message_reference   *seed,
  213.     CMC_uint32 FAR          *count,
  214.     CMC_ui_id               ui_id,
  215.     CMC_message_summary FAR * FAR *result,
  216.     CMC_extension FAR       *list_extensions
  217. );
  218. extern LPFNCMCLIST lpfnCMCList;
  219. #define CMCList  (*lpfnCMCList)
  220. typedef CMC_return_code (FAR PASCAL *LPFNCMCSEND)(
  221.     CMC_session_id          session,
  222.     CMC_message FAR         *message,
  223.     CMC_flags               send_flags,
  224.     CMC_ui_id               ui_id,
  225.     CMC_extension FAR       *send_extensions
  226. );
  227. extern LPFNCMCSEND lpfnCMCSend;
  228. #define CMCSend (*lpfnCMCSend)
  229. typedef CMC_return_code (FAR PASCAL *LPFNCMCREAD)(
  230.     CMC_session_id          session,
  231.     CMC_message_reference   *message_reference,
  232.     CMC_flags               read_flags,
  233.     CMC_message FAR * FAR   *message,
  234.     CMC_ui_id               ui_id,
  235.     CMC_extension FAR       *read_extensions
  236. );
  237. extern LPFNCMCREAD lpfnCMCRead;
  238. #define CMCRead (*lpfnCMCRead)
  239. typedef CMC_return_code (FAR PASCAL *LPFNCMCACTON)(
  240.     CMC_session_id          session,
  241.     CMC_message_reference   *message_reference,
  242.     CMC_enum                operation,
  243.     CMC_flags               act_on_flags,
  244.     CMC_ui_id               ui_id,
  245.     CMC_extension FAR       *act_on_extensions
  246. );
  247. extern LPFNCMCACTON lpfnCMCActOn;
  248. #define CMCActOn (*lpfnCMCActOn)