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

Windows编程

开发平台:

Visual C++

  1. /*
  2.  -  C L I E N T . H
  3.  -
  4.  *  Purpose:
  5.  *      Header file for the sample mail client based on Extended MAPI.
  6.  *
  7.  *      Copyright 1995, Microsoft Corporation. All Rights Reserved.
  8.  */
  9. #ifndef __CLIENT_H__
  10. #define __CLIENT_H__
  11. /* Menu Item IDs */
  12. #define IDM_LOGON       100
  13. #define IDM_LOGOFF      101
  14. #define IDM_EXIT        102
  15. #define IDM_READ        103
  16. #define IDM_SEND        104
  17. #define IDM_ABOUT       105
  18. #define IDM_OPEN        106
  19. #define IDM_HIER        107
  20. #define IDM_ROUTE       108
  21. #define IDM_NEWFORM     109
  22. /* Resource IDs */
  23. #define ICON_NOMAIL     200
  24. #define ICON_MAIL       201
  25. #define IDB_ENVELOPE    300
  26. /* Address Book Control IDs */
  27. #define IDT_ADDRESS     101
  28. #define IDC_ADDRESS     102
  29. #define IDT_LIST        103
  30. #define IDC_LIST        104
  31. #define IDC_ADD         105
  32. #define IDC_REMOVE      106
  33. /* Compose Note Control IDs */
  34. #define IDC_SEND        101
  35. #define IDC_RESOLVE     102
  36. #define IDC_ATTACH      103
  37. #define IDC_OPTIONS     104
  38. #define IDC_ADDRBOOK    105
  39. #define IDT_TO          106
  40. #define IDC_TO          107
  41. #define IDT_CC          108
  42. #define IDC_CC          109
  43. #define IDT_SUBJECT     110
  44. #define IDC_SUBJECT     111
  45. #define IDC_NOTE        112
  46. #define IDC_LINE1       -1
  47. #define IDC_LINE2       -1
  48. #define IDC_CATTACHMENT 113
  49. #define IDT_CATTACHMENT -1
  50. #define IDC_ADDROUTESLIP 115
  51. //RouteNote control IDs
  52. #define IDC_RTCC            101
  53. #define IDT_RTCC            -1
  54. #define IDT_RTSUBJECT           -1
  55. #define IDC_RTSUBJECT           102
  56. #define IDC_RTNOTE          103
  57. #define IDC_RTROUTE         104
  58. #define IDC_RTATTACH            105
  59. #define IDC_RTEDITROUTESLIP 106
  60. #define IDC_RTATTACHLIST        107
  61. #define IDT_RTATTACHLIST        108
  62. #define IDC_RTSAVEATTACH        109
  63. #define IDC_RTDELATTACH         110
  64. /* InBox Control IDs */
  65. #define IDT_MSG         101
  66. #define IDC_MSG         102
  67. #define IDC_NEW         103
  68. #define IDC_READ        104
  69. #define IDC_DELETE      105
  70. #define IDC_CLOSE       106
  71. #define IDC_DOWN                107     // Hierarchy Table only
  72. #define IDC_FLUSH       108
  73. /* ReadNote Control IDs */
  74. #define IDC_SAVECHANGES 101
  75. #define IDC_SAVEATTACH  102
  76. #define IDC_REPLY       103
  77. #define IDC_REPLYALL    104
  78. #define IDC_FORWARD     105
  79. #define IDT_RFROM       106
  80. #define IDT_RDATE       107
  81. #define IDT_RTO         108
  82. #define IDT_RCC         109
  83. #define IDT_RSUBJECT    110
  84. #define IDC_RFROM       111
  85. #define IDC_RDATE       112
  86. #define IDC_RTO         113
  87. #define IDC_RCC         114
  88. #define IDC_RSUBJECT    115
  89. #define IDC_READNOTE    116
  90. #define IDT_ATTACHMENT  117
  91. #define IDC_ATTACHMENT  118
  92. /* Options Control IDs */
  93. #define IDC_RETURN      101
  94. /* Details Control IDs */
  95. #define IDT_NAME        100
  96. #define IDC_NAME        101
  97. #define IDT_TYPE        102
  98. #define IDC_TYPE        103
  99. #define IDT_ADDR        104
  100. #define IDC_ADDR        105
  101. /* About Box Control IDs */
  102. #define IDC_VERSION             101
  103. /* Route Box Control IDs*/
  104. #define IDC_ROUTE               100            
  105. #define IDC_ADDRLISTOLD         101
  106. #define IDC_ADDRLISTACTIVE      102
  107. #define IDC_ADDADDR             103
  108. #define IDC_REMOVEADDR          104
  109. #define IDC_MOVEUP              105
  110. #define IDC_MOVEDOWN            106
  111. #define IDC_STATIC                      -1
  112. #define LENGTHOLD        80
  113. #define LENGTHACTIVE 80
  114. #define LBLENGTH (LENGTHOLD + LENGTHACTIVE) /*sum of the lengths of the two listboxes in RouteNote DlgBox*/
  115. #define DELTA 5  /*distance between the bottom of the first LB and the top of the second
  116.                     DELATA is not used directly in the .rc file. it has to be calculated manualy*/
  117. #define LBX 70  /* The x coordinate of the left edges of the listboxes*/
  118. #define DELTAX 140 /*the width of the listboxes*/
  119. #define OLDY   5        /*the y coordinate of the top of the first listbox*/
  120. #define MINY   40 /*the min height of a listbox*/
  121. /* String Table IDs */
  122. #define MAPI_ERROR_MAX          30
  123. #define IDS_LOGONFAIL           (MAPI_ERROR_MAX + 1)
  124. #define IDS_ADDRBOOKFAIL        (MAPI_ERROR_MAX + 2)
  125. #define IDS_RESOLVEFAIL         (MAPI_ERROR_MAX + 3)
  126. #define IDS_UNRESOLVEDNAMES     (MAPI_ERROR_MAX + 4)
  127. #define IDS_SENDERROR           (MAPI_ERROR_MAX + 5)
  128. #define IDS_DETAILS_TOO_MANY    (MAPI_ERROR_MAX + 6)
  129. #define IDS_DETAILSFAIL         (MAPI_ERROR_MAX + 7)
  130. #define IDS_NORECIPS            (MAPI_ERROR_MAX + 8)
  131. #define IDS_SAVEATTACHERROR     (MAPI_ERROR_MAX + 9)
  132. #define IDS_READFAIL            (MAPI_ERROR_MAX + 10)
  133. #define IDS_STORETBLFAIL        (MAPI_ERROR_MAX + 11)
  134. #define IDS_QUERYROWFAIL        (MAPI_ERROR_MAX + 12)
  135. #define IDS_OPENSTOREFAIL       (MAPI_ERROR_MAX + 13)
  136. #define IDS_STATUSTBLFAIL       (MAPI_ERROR_MAX + 14)
  137. #define IDS_OPENFOLDERFAIL      (MAPI_ERROR_MAX + 15)
  138. #define IDS_GETRCVFAIL          (MAPI_ERROR_MAX + 16)
  139. #define IDS_SETRCVFAIL          (MAPI_ERROR_MAX + 17)
  140. #define IDS_SETPROPFAIL         (MAPI_ERROR_MAX + 18)
  141. #define IDS_NOENTRYID           (MAPI_ERROR_MAX + 19)
  142. #define IDS_OPERATION           (MAPI_ERROR_MAX + 20)
  143. #define IDS_NODEFAULTSTORE      (MAPI_ERROR_MAX + 21)
  144. #define IDS_SETCOLFAIL          (MAPI_ERROR_MAX + 22)
  145. #define IDS_CRTOUTMSG                   (MAPI_ERROR_MAX + 23)
  146. #define IDS_SHOWFORM                    (MAPI_ERROR_MAX + 24)
  147. #define IDS_OPENAB                              (MAPI_ERROR_MAX + 25)
  148. #define IDS_INIDIAG                             (MAPI_ERROR_MAX + 26)
  149. #define IDS_UNXERR                              (MAPI_ERROR_MAX + 27)
  150. #define IDS_OPENOUTF                    (MAPI_ERROR_MAX + 28)
  151. #define IDS_MAPIINIF                    (MAPI_ERROR_MAX + 29)
  152. #define IDS_OPENSTOREWARN               (MAPI_ERROR_MAX + 30)
  153. #define IDS_OPENABWARN                  (MAPI_ERROR_MAX + 31)
  154. #define IDS_LASTRECIP                   (MAPI_ERROR_MAX + 32)
  155. #define IDS_IPM                 (MAPI_ERROR_MAX + 42)
  156. #define IDS_IPM_COMMENT         (MAPI_ERROR_MAX + 43)
  157. #define IDS_INBOX               (MAPI_ERROR_MAX + 44)
  158. #define IDS_INBOX_COMMENT       (MAPI_ERROR_MAX + 45)
  159. #define IDS_OUTBOX              (MAPI_ERROR_MAX + 46)
  160. #define IDS_OUTBOX_COMMENT      (MAPI_ERROR_MAX + 47)
  161. #define IDS_SENTMAIL            (MAPI_ERROR_MAX + 48)
  162. #define IDS_SENTMAIL_COMMENT    (MAPI_ERROR_MAX + 49)
  163. #define IDS_FILTER              (MAPI_ERROR_MAX + 50)
  164. #define IDS_OPENOUTB                    (MAPI_ERROR_MAX + 51)
  165. /* Manifest Constants */
  166. #define MBS_ERROR           (MB_ICONSTOP | MB_OK)
  167. #define MBS_INFO            (MB_ICONINFORMATION | MB_OK)
  168. #define MBS_OOPS            (MB_ICONEXCLAMATION | MB_OK)
  169. /* Structure Definitions */
  170. typedef struct _msgid *LPMSGID;
  171. typedef struct _msgid
  172. {
  173.     ULONG           cbEID;
  174.     LPENTRYID       lpEID;
  175.     BOOL        fHasAttach;
  176.     BOOL        fUnRead;
  177.     LPSTR       lpszFrom;
  178.     LPSTR       lpszSubject;
  179.     LPSTR       lpszDateRec;
  180.     LPMSGID     lpPrev;
  181.     LPMSGID     lpNext;
  182. } MSGID;
  183. typedef struct _inboxdata
  184. {
  185.     LPMSGID         lpMsgIdList;
  186.     LPMAPIFOLDER pfld;
  187. } INBOXDATA, FAR * LPINBOXDATA;
  188. typedef struct _oar *LPOAR;
  189. typedef struct _oar
  190. {
  191.     LPOAR                   lpNext;
  192.     LPOAR                   lpPrev;
  193.     ULONG                   cValues;
  194.     LPSPropValue    lpProps;
  195. } OAR;
  196. /* Types of MAPI Tables shown by common dialog */
  197. enum {
  198.     iStores,
  199.     iHierarchy
  200. };
  201. /* Data structure used by CommonDlgProc */
  202. typedef struct {
  203.     int             iDlgType;       // dialog type.  see "enum" above
  204.     LPOAR           poarHead;       // chain of rows within the dialog
  205.     ULONG           cbEntryID;
  206.     LPENTRYID       lpEntryID;
  207. } DIALOGDATA, FAR * LPDIALOGDATA;
  208. /* Globals */
  209. extern LPMAPISESSION pses;
  210. extern LPADRBOOK pabAddrB;
  211. extern LPMDB pmdb;
  212. extern HANDLE hInst;
  213. extern HCURSOR hWaitCur;
  214. extern LPMAPIFOLDER pfldOutBox;
  215. extern LPSPropValue pvalSentMailEID;
  216. /* Function Prototypes */
  217. int  PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
  218. BOOL InitApplication(HANDLE);
  219. BOOL InitInstance(HANDLE, int);
  220. void DeinitApplication(void);
  221. BOOL ClientLogon(HWND);
  222. VOID ClientLogoff(HWND);
  223. BOOL InitMAPI (HWND);
  224. void DeinitMAPI();
  225. LPMDB OpenDefaultStore(HWND); 
  226. long FAR PASCAL MainWndProc(HWND, UINT, UINT, LPARAM);
  227. BOOL CALLBACK CommonDlgProc(HWND, UINT, WPARAM, LPARAM);
  228. BOOL CALLBACK InBoxDlgProc(HWND, UINT, WPARAM, LPARAM);
  229. BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
  230. BOOL CALLBACK ComposeDlgProc(HWND, UINT, WPARAM, LPARAM);
  231. BOOL CALLBACK ReadMailDlgProc(HWND, UINT, WPARAM, LPARAM);
  232. BOOL CALLBACK OptionsDlgProc(HWND, UINT, WPARAM, LPARAM);
  233. BOOL CALLBACK DetailsDlgProc(HWND, UINT, WPARAM, LPARAM);
  234. void    MakeMessageBox(HWND, SCODE, UINT, LPMAPIERROR, UINT);
  235. HRESULT HrCreateChildFolder (HWND, LPMAPIFOLDER, ULONG, ULONG, LPTSTR, ULONG, LPMAPIFOLDER FAR *);
  236. VOID    PopulateStores ( HWND hDlg, LPOAR FAR * ppoarHead, int idlgType, ULONG cb, LPENTRYID lpeid);
  237. VOID    FreeOarList (LPOAR FAR *ppoarHead);
  238. VOID    DrawOarItem (DRAWITEMSTRUCT FAR * pdis, int idlgType);
  239. VOID    PopulateMessages( HWND hDlg, LPINBOXDATA pibData );
  240. LPMSGID MakeMsgNode(LPSRow);
  241. LPMSGID FindNode (LPMSGID lpMsgHead, LPENTRYID pEntryID, ULONG cbEntryID);
  242. void    InsertMsgNode(LPMSGID, LPMSGID *);
  243. void    DeleteMsgNode(LPMSGID, LPMSGID *);
  244. void    FreeMsgList(LPMSGID);
  245. void    LogSendMail(ULONG);
  246. void    ToggleMenuState(HWND, BOOL);   
  247. void    FormatMessageID(ULONG, LPBYTE, LPSTR);
  248. void    FormatFILETIME(FILETIME *, LPSTR);
  249. LPDIALOGDATA CreateDialogData(int iDlgType);
  250. BOOL READ_OnCommand(HWND hDlg, int id, HWND hwndCtl, UINT codeNotify);
  251. BOOL READ_OnInitDialog(HWND hDlg, HWND hwndFocus, LPARAM lParam);
  252. void INBOX_OnCommand(HWND hDlg, int id, HWND hwndCtl, UINT codeNotify);
  253. LONG MAIN_OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify);
  254. BOOL Common_OnCommand(HWND hDlg, int id, HWND hwndCtl, UINT codeNotify);
  255. HRESULT DeliverNow(HWND hWnd);
  256. void SecureMenu(HWND hWnd, BOOL fBeforeLogon);
  257. #endif