Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

172 lines
6.0 KiB

  1. // ==============================================================================
  2. // MIMEOLE'd Attachment Manger v2. - brettm
  3. // ==============================================================================
  4. #ifndef __ATTMAN_H
  5. #define __ATTMAN_H
  6. // ==============================================================================
  7. // Depends On
  8. // ==============================================================================
  9. #include "mimeolep.h"
  10. #define ATTN_RESIZEPARENT 10000
  11. // from common\dragdrop.h
  12. typedef struct tagDATAOBJINFO *PDATAOBJINFO;
  13. // ==============================================================================
  14. // Defines
  15. // ==============================================================================
  16. //#define BASE_ATTACH_CMD_ID (ULONG)(WM_USER + 1)
  17. // ==============================================================================
  18. // CAttMan Definition
  19. // ==============================================================================
  20. class CAttMan :
  21. public IDropSource,
  22. public IPersistMime
  23. {
  24. public:
  25. // *** IUnknown methods ***
  26. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
  27. ULONG STDMETHODCALLTYPE AddRef(void);
  28. ULONG STDMETHODCALLTYPE Release(void);
  29. // *** IDropSource methods ***
  30. HRESULT STDMETHODCALLTYPE QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState);
  31. HRESULT STDMETHODCALLTYPE GiveFeedback(DWORD dwEffect);
  32. // IPersistMime
  33. HRESULT STDMETHODCALLTYPE Load(LPMIMEMESSAGE pMsg);
  34. HRESULT STDMETHODCALLTYPE Save(LPMIMEMESSAGE pMsg, DWORD dwFlags);
  35. HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClsID);
  36. CAttMan ();
  37. ~CAttMan ();
  38. // Load function, unload and close
  39. HRESULT HrInit (HWND hwnd, BOOL fReadOnly, BOOL fDeleteVCards, BOOL fAllowUnsafe);
  40. HRESULT HrUnload();
  41. HRESULT HrClose();
  42. HRESULT HrIsDragSource();
  43. HRESULT HrGetAttachCount(ULONG *pcAttach);
  44. HRESULT HrIsDirty();
  45. HRESULT HrClearDirtyFlag();
  46. LPTSTR GetUnsafeAttachList();
  47. ULONG GetUnsafeAttachCount();
  48. // handling of windows messages
  49. BOOL WMCommand(HWND hwndCmd, INT id, WORD wCmd);
  50. BOOL WMNotify(int idFrom, NMHDR *pnmhdr);
  51. BOOL WMContextMenu (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  52. static BOOL CALLBACK InsertFileDlgHookProc(HWND, UINT, WPARAM, LPARAM);
  53. // handlign of WM_DROPFILE
  54. HRESULT HrDropFiles(HDROP hDrop, BOOL fMakeLinks);
  55. // toobar and menu update
  56. HRESULT HrUpdateToolbar(HWND);
  57. // external sizing
  58. HRESULT HrGetHeight(INT cxWidth, ULONG *pcy);
  59. HRESULT HrSetSize (RECT *prc);
  60. HWND Hwnd() {return m_hwndList;};
  61. // enable flags for the browser menus
  62. HRESULT HrCmdEnabled(UINT idm, LPBOOL pbEnable);
  63. HRESULT HrFVCard();
  64. HRESULT HrShowVCardProp();
  65. HRESULT HrCheckVCardExists(BOOL fMail);
  66. HRESULT GetTabStopArray(HWND *rgTSArray, int *pcArrayCount);
  67. HRESULT HrAddAttachment (LPWSTR lpszPathName, LPSTREAM pstm, BOOL fShortCut);
  68. HRESULT HrSwitchView(DWORD dwView);
  69. HRESULT HrGetRequiredAction(DWORD *pdwEffect, POINTL pt);
  70. HRESULT HrDropFileDescriptor(LPDATAOBJECT pDataObj, BOOL fLink);
  71. HRESULT CheckAttachNameSafeWithCP(CODEPAGEID cpID);
  72. private:
  73. LPMIMEMESSAGE m_pMsg;
  74. HIMAGELIST m_himlSmall;
  75. HIMAGELIST m_himlLarge;
  76. ULONG m_cRef;
  77. HWND m_hwndList,
  78. m_hwndParent; // we stuff this for UI when there's no m_hwndList
  79. CLIPFORMAT m_cfAccept;
  80. DWORD m_dwDragType,
  81. m_grfKeyState,
  82. m_dwEffect;
  83. int m_cxMaxText,
  84. m_cyHeight;
  85. BOOL m_fReadOnly :1,
  86. m_fDirty :1,
  87. m_fDragSource :1,
  88. m_fDropTargetRegister :1,
  89. m_fShowingContext :1,
  90. m_fRightClick :1,
  91. m_fModal :1,
  92. m_fDeleteVCards :1,
  93. m_fWarning :1,
  94. m_fSafeOnly :1;
  95. LPATTACHDATA *m_rgpAttach;
  96. ULONG m_cAttach,
  97. m_cAlloc,
  98. m_cUnsafeAttach;
  99. HMENU m_hMenuSaveAttach;
  100. INT m_iVCard;
  101. LPTSTR m_szUnsafeAttachList;
  102. // Listview stuff
  103. HRESULT HrInitImageLists();
  104. HRESULT HrFillListView();
  105. HRESULT HrCreateListView(HWND hwnd);
  106. HRESULT HrAddToList(LPATTACHDATA pAttach, BOOL fIniting);
  107. HRESULT HrBuildAttachList();
  108. // menu stuff
  109. HRESULT HrGetAttMenu(HMENU *phMenu, BOOL fContextMenu);
  110. HRESULT HrCleanMenu(HMENU hMenu);
  111. HRESULT HrGetAttachmentById(HMENU hMenu, ULONG id, HBODY *phBody);
  112. HRESULT HrGetItemTextExtent(HWND hwnd, LPSTR szDisp, LPSIZE pSize);
  113. HRESULT HrAttachFromMenuID(int idm, LPATTACHDATA *ppAttach);
  114. HRESULT HrInsertFile();
  115. HRESULT HrRemoveAttachments();
  116. HRESULT HrRemoveAttachment(int ili);
  117. HRESULT HrDeleteAttachments();
  118. HRESULT HrExecFile(int iVerb);
  119. HRESULT HrInsertFileFromStgMed(LPWSTR pwszFileName, LPSTGMEDIUM pstgmed, BOOL fLink);
  120. HRESULT HrBeginDrag();
  121. HRESULT HrBuildHDrop(PDATAOBJINFO *ppdoi);
  122. HRESULT HrResizeParent();
  123. HRESULT HrDblClick(int idFrom, NMHDR *pnmhdr);
  124. HRESULT HrCheckVCard();
  125. // data table
  126. HRESULT HrFreeAllData();
  127. HRESULT HrAddData(HBODY hAttach);
  128. HRESULT HrAddData(LPWSTR lpszPathName, LPSTREAM pstm, LPATTACHDATA *ppAttach);
  129. HRESULT HrAllocNewEntry(LPATTACHDATA pAttach);
  130. // Attachment commands
  131. HRESULT HrDoVerb(LPATTACHDATA pAttach, INT nVerb);
  132. HRESULT HrSaveAs(LPATTACHDATA lpAttach);
  133. HRESULT HrGetTempFile(LPATTACHDATA lpAttach);
  134. HRESULT HrCleanTempFile(LPATTACHDATA lpAttach);
  135. HRESULT HrSave(HBODY hAttach, LPWSTR lpszFileName);
  136. };
  137. typedef CAttMan *LPATTMAN;
  138. #endif __ATTMAN_H