Commands.h
上传用户:gddssl
上传日期:2007-01-06
资源大小:1003k
文件大小:4k
源码类别:

编辑器/阅读器

开发平台:

DOS

  1. // Commands.h : header file
  2. //
  3. #if !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_)
  4. #define AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_
  5. #include "vsvtypes.h"
  6. class CCommands :
  7. public   CComDualImpl < ICommands,
  8.  &IID_ICommands,
  9.  &LIBID_VisVim >,
  10. public   CComObjectRoot,
  11. public   CComCoClass < CCommands,
  12.  &CLSID_Commands >
  13. {
  14.     protected:
  15. IApplication * m_pApplication;
  16.     public:
  17. CCommands ();
  18. ~CCommands ();
  19. void SetApplicationObject (IApplication * m_pApplication);
  20. IApplication *GetApplicationObject ()
  21. {
  22. return m_pApplication;
  23. }
  24. void UnadviseFromEvents ();
  25. BEGIN_COM_MAP (CCommands)
  26. COM_INTERFACE_ENTRY (IDispatch)
  27. COM_INTERFACE_ENTRY (ICommands)
  28. END_COM_MAP ()
  29. DECLARE_NOT_AGGREGATABLE (CCommands)
  30.     protected:
  31. // This class template is used as the base class for the Application
  32. // event handler object and the Debugger event handler object,
  33. // which are declared below.
  34. template < class IEvents,
  35.         const IID * piidEvents,
  36.         const GUID * plibid,
  37. class XEvents,
  38.         const CLSID * pClsidEvents >
  39. class XEventHandler :
  40. public        CComDualImpl < IEvents,
  41.       piidEvents,
  42.       plibid >,
  43. public        CComObjectRoot,
  44. public        CComCoClass < XEvents,
  45.       pClsidEvents >
  46. {
  47.     public:
  48. BEGIN_COM_MAP (XEvents)
  49. COM_INTERFACE_ENTRY (IDispatch)
  50. COM_INTERFACE_ENTRY_IID (*piidEvents, IEvents)
  51. END_COM_MAP ()
  52. DECLARE_NOT_AGGREGATABLE (XEvents)
  53. void Connect (IUnknown * pUnk)
  54. {
  55. VERIFY (SUCCEEDED (AtlAdvise (pUnk, this, *piidEvents,
  56.       &m_dwAdvise)));
  57. }
  58. void Disconnect (IUnknown * pUnk)
  59. {
  60. AtlUnadvise (pUnk, *piidEvents, m_dwAdvise);
  61. }
  62. CCommands *m_pCommands;
  63.     protected:
  64. DWORD m_dwAdvise;
  65. };
  66. // This object handles events fired by the Application object
  67. class XApplicationEvents : public XEventHandler < IApplicationEvents,
  68. &IID_IApplicationEvents,
  69. &LIBID_VisVim,
  70. XApplicationEvents,
  71. &CLSID_ApplicationEvents >
  72. {
  73.     public:
  74. // IApplicationEvents methods
  75. STDMETHOD (BeforeBuildStart) (THIS);
  76. STDMETHOD (BuildFinish) (THIS_ long nNumErrors, long nNumWarnings);
  77. STDMETHOD (BeforeApplicationShutDown) (THIS);
  78. STDMETHOD (DocumentOpen) (THIS_ IDispatch * theDocument);
  79. STDMETHOD (BeforeDocumentClose) (THIS_ IDispatch * theDocument);
  80. STDMETHOD (DocumentSave) (THIS_ IDispatch * theDocument);
  81. STDMETHOD (NewDocument) (THIS_ IDispatch * theDocument);
  82. STDMETHOD (WindowActivate) (THIS_ IDispatch * theWindow);
  83. STDMETHOD (WindowDeactivate) (THIS_ IDispatch * theWindow);
  84. STDMETHOD (WorkspaceOpen) (THIS);
  85. STDMETHOD (WorkspaceClose) (THIS);
  86. STDMETHOD (NewWorkspace) (THIS);
  87. };
  88. typedef CComObject < XApplicationEvents > XApplicationEventsObj;
  89. XApplicationEventsObj *m_pApplicationEventsObj;
  90. // This object handles events fired by the Application object
  91. class XDebuggerEvents : public XEventHandler < IDebuggerEvents,
  92. &IID_IDebuggerEvents,
  93. &LIBID_VisVim,
  94. XDebuggerEvents,
  95. &CLSID_DebuggerEvents >
  96. {
  97.     public:
  98. // IDebuggerEvents method
  99. STDMETHOD (BreakpointHit) (THIS_ IDispatch * pBreakpoint);
  100. };
  101. typedef CComObject < XDebuggerEvents > XDebuggerEventsObj;
  102. XDebuggerEventsObj *m_pDebuggerEventsObj;
  103.     public:
  104. // ICommands methods
  105. STDMETHOD (VisVimDialog) (THIS);
  106. STDMETHOD (VisVimEnable) (THIS);
  107. STDMETHOD (VisVimDisable) (THIS);
  108. STDMETHOD (VisVimToggle) (THIS);
  109. STDMETHOD (VisVimLoad) (THIS);
  110. };
  111. typedef CComObject < CCommands > CCommandsObj;
  112. //{{AFX_INSERT_LOCATION}}
  113. #endif // !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED)