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

Windows编程

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  File Name 
  4. //      CMDEXT.H
  5. //
  6. //  Description
  7. //      Interface Methods are declared in this file for cmdext.cpp.
  8. //
  9. //  Author
  10. //      Gary Peluso
  11. //
  12. //  Revision: 1.00
  13. //
  14. // Written for Microsoft Windows Developer Support
  15. // Copyright (c) 1992-1995 Microsoft Corporation. All rights reserved.
  16. //
  17. #ifndef _CMDEXT_H_
  18. #define _CMDEXT_H_
  19. #include <WINDOWS.H> 
  20. #include <COMMCTRL.H>
  21. #include <MAPIX.H>
  22. #include <MAPIUTIL.H>
  23. #include <MAPIFORM.H>
  24. #include <INITGUID.H>
  25. #include <MAPIGUID.H>
  26. #include <EXCHEXT.H>
  27. #include "RESOURCE.H"
  28. ///////////////////////////////////////////////////////////////////////////////
  29. //    prototypes
  30. void GetFolderStats(LPMAPIFOLDER lpFolder, ULONG FAR * ulSubFolders, 
  31.                     ULONG FAR * ulReadMsgs, ULONG FAR * ulUnReadMsgs);
  32. ///////////////////////////////////////////////////////////////////////////////
  33. //    forward declarations
  34. class MyExchExt;
  35. class MyExchExtCommands;
  36. class MyExchExtUserEvents;
  37. extern "C"
  38. {
  39.     LPEXCHEXT CALLBACK ExchEntryPoint(void);
  40. }
  41. class MyExchExt : public IExchExt
  42. {
  43.  
  44.  public:
  45.     MyExchExt ();
  46.     STDMETHODIMP QueryInterface
  47.                     (REFIID                     riid,
  48.                      LPVOID *                   ppvObj);
  49.     inline STDMETHODIMP_(ULONG) AddRef
  50.                     () { ++m_cRef; return m_cRef; };
  51.     inline STDMETHODIMP_(ULONG) Release
  52.                     () { ULONG ulCount = --m_cRef;
  53.                          if (!ulCount) { delete this; }
  54.                          return ulCount;};
  55.     STDMETHODIMP Install (LPEXCHEXTCALLBACK pmecb, 
  56.                         ULONG mecontext, ULONG ulFlags);
  57.  private:
  58.     ULONG m_cRef;
  59.     UINT  m_context;
  60.     MyExchExtCommands * m_pExchExtCommands;
  61.     MyExchExtUserEvents * m_pExchExtUserEvents;
  62. };
  63. class MyExchExtCommands : public IExchExtCommands
  64. {
  65.  public:
  66.     MyExchExtCommands () 
  67.         { m_cRef = 0; m_context = 0; 
  68.           m_cmdid = 0;  m_itbb = 0; m_itbm = 0;  m_hWnd = 0; };
  69.     STDMETHODIMP QueryInterface
  70.                     (REFIID                     riid,
  71.                      LPVOID *                   ppvObj);
  72.     inline STDMETHODIMP_(ULONG) AddRef
  73.                     () { ++m_cRef; return m_cRef; };
  74.     inline STDMETHODIMP_(ULONG) Release
  75.                     () { ULONG ulCount = --m_cRef;
  76.                          if (!ulCount) { delete this; }
  77.                          return ulCount;};
  78.     STDMETHODIMP InstallCommands(LPEXCHEXTCALLBACK pmecb, 
  79.                                 HWND hwnd, HMENU hmenu,
  80.                                 UINT FAR * cmdidBase, LPTBENTRY lptbeArray,
  81.                                 UINT ctbe, ULONG ulFlags);                                                                              
  82.     STDMETHODIMP DoCommand(LPEXCHEXTCALLBACK pmecb, UINT mni);
  83.     STDMETHODIMP_(VOID) InitMenu(LPEXCHEXTCALLBACK pmecb);
  84.     STDMETHODIMP Help(LPEXCHEXTCALLBACK pmecb, UINT mni);
  85.     STDMETHODIMP QueryHelpText(UINT mni, ULONG ulFlags, LPTSTR sz, UINT cch);
  86.     STDMETHODIMP QueryButtonInfo(ULONG tbid, UINT itbb, LPTBBUTTON ptbb,
  87.                                 LPTSTR lpsz, UINT cch, ULONG ulFlags);
  88.     STDMETHODIMP ResetToolbar(ULONG tbid, ULONG ulFlags);
  89.     inline VOID SetContext
  90.                 (ULONG eecontext) { m_context = eecontext; };
  91.     inline UINT GetCmdID() { return m_cmdid; };
  92.   
  93.  private:
  94.     ULONG m_cRef;
  95.     ULONG m_context;
  96.     UINT  m_cmdid;     // cmdid for menu extension command
  97.     UINT  m_itbb;      // toolbar
  98.     UINT  m_itbm;
  99.     HWND  m_hWnd;          
  100. };
  101. class MyExchExtUserEvents : public IExchExtUserEvents
  102. {
  103.  public:
  104.     MyExchExtUserEvents() { m_cRef = 0; m_context = 0;
  105.                             m_pExchExt = NULL; };
  106.     STDMETHODIMP QueryInterface
  107.                 (REFIID                     riid,
  108.                  LPVOID *                   ppvObj);
  109.     inline STDMETHODIMP_(ULONG) AddRef
  110.                 () { ++m_cRef; return m_cRef; };
  111.     inline STDMETHODIMP_(ULONG) Release
  112.                 () { ULONG ulCount = --m_cRef;
  113.                      if (!ulCount) { delete this; }
  114.                      return ulCount;};
  115.     STDMETHODIMP_(VOID) OnSelectionChange(LPEXCHEXTCALLBACK pmecb);
  116.     STDMETHODIMP_(VOID) OnObjectChange(LPEXCHEXTCALLBACK pmecb);
  117.     inline VOID SetContext
  118.                 (ULONG eecontext) { m_context = eecontext; };
  119.     inline VOID SetIExchExt
  120.                 (MyExchExt * pExchExt) { m_pExchExt = pExchExt; };
  121.  private:
  122.     ULONG m_cRef;
  123.     ULONG m_context;
  124.     
  125.     MyExchExt * m_pExchExt;
  126. };
  127. #endif // _CMDEXT_H_