| // Commands.h : header file |
| // |
| |
| #if !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_) |
| #define AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_ |
| |
| #include "vsvtypes.h" |
| |
| class CCommands : |
| public CComDualImpl < ICommands, |
| &IID_ICommands, |
| &LIBID_VisVim >, |
| public CComObjectRoot, |
| public CComCoClass < CCommands, |
| &CLSID_Commands > |
| { |
| protected: |
| IApplication * m_pApplication; |
| |
| public: |
| CCommands (); |
| ~CCommands (); |
| void SetApplicationObject (IApplication * m_pApplication); |
| IApplication *GetApplicationObject () |
| { |
| return m_pApplication; |
| } |
| void UnadviseFromEvents (); |
| |
| BEGIN_COM_MAP (CCommands) |
| COM_INTERFACE_ENTRY (IDispatch) |
| COM_INTERFACE_ENTRY (ICommands) |
| END_COM_MAP () |
| DECLARE_NOT_AGGREGATABLE (CCommands) |
| |
| protected: |
| // This class template is used as the base class for the Application |
| // event handler object and the Debugger event handler object, |
| // which are declared below. |
| template < class IEvents, |
| const IID * piidEvents, |
| const GUID * plibid, |
| class XEvents, |
| const CLSID * pClsidEvents > |
| class XEventHandler : |
| public CComDualImpl < IEvents, |
| piidEvents, |
| plibid >, |
| public CComObjectRoot, |
| public CComCoClass < XEvents, |
| pClsidEvents > |
| { |
| public: |
| BEGIN_COM_MAP (XEvents) |
| COM_INTERFACE_ENTRY (IDispatch) |
| COM_INTERFACE_ENTRY_IID (*piidEvents, IEvents) |
| END_COM_MAP () |
| DECLARE_NOT_AGGREGATABLE (XEvents) |
| void Connect (IUnknown * pUnk) |
| { |
| VERIFY (SUCCEEDED (AtlAdvise (pUnk, this, *piidEvents, |
| &m_dwAdvise))); |
| } |
| void Disconnect (IUnknown * pUnk) |
| { |
| AtlUnadvise (pUnk, *piidEvents, m_dwAdvise); |
| } |
| |
| CCommands *m_pCommands; |
| |
| protected: |
| DWORD m_dwAdvise; |
| }; |
| |
| // This object handles events fired by the Application object |
| class XApplicationEvents : public XEventHandler < IApplicationEvents, |
| &IID_IApplicationEvents, |
| &LIBID_VisVim, |
| XApplicationEvents, |
| &CLSID_ApplicationEvents > |
| { |
| public: |
| // IApplicationEvents methods |
| STDMETHOD (BeforeBuildStart) (THIS); |
| STDMETHOD (BuildFinish) (THIS_ long nNumErrors, long nNumWarnings); |
| STDMETHOD (BeforeApplicationShutDown) (THIS); |
| STDMETHOD (DocumentOpen) (THIS_ IDispatch * theDocument); |
| STDMETHOD (BeforeDocumentClose) (THIS_ IDispatch * theDocument); |
| STDMETHOD (DocumentSave) (THIS_ IDispatch * theDocument); |
| STDMETHOD (NewDocument) (THIS_ IDispatch * theDocument); |
| STDMETHOD (WindowActivate) (THIS_ IDispatch * theWindow); |
| STDMETHOD (WindowDeactivate) (THIS_ IDispatch * theWindow); |
| STDMETHOD (WorkspaceOpen) (THIS); |
| STDMETHOD (WorkspaceClose) (THIS); |
| STDMETHOD (NewWorkspace) (THIS); |
| }; |
| typedef CComObject < XApplicationEvents > XApplicationEventsObj; |
| XApplicationEventsObj *m_pApplicationEventsObj; |
| |
| // This object handles events fired by the Application object |
| class XDebuggerEvents : public XEventHandler < IDebuggerEvents, |
| &IID_IDebuggerEvents, |
| &LIBID_VisVim, |
| XDebuggerEvents, |
| &CLSID_DebuggerEvents > |
| { |
| public: |
| // IDebuggerEvents method |
| STDMETHOD (BreakpointHit) (THIS_ IDispatch * pBreakpoint); |
| }; |
| typedef CComObject < XDebuggerEvents > XDebuggerEventsObj; |
| XDebuggerEventsObj *m_pDebuggerEventsObj; |
| |
| public: |
| // ICommands methods |
| STDMETHOD (VisVimDialog) (THIS); |
| STDMETHOD (VisVimEnable) (THIS); |
| STDMETHOD (VisVimDisable) (THIS); |
| STDMETHOD (VisVimToggle) (THIS); |
| STDMETHOD (VisVimLoad) (THIS); |
| }; |
| |
| typedef CComObject < CCommands > CCommandsObj; |
| |
| //{{AFX_INSERT_LOCATION}} |
| |
| #endif // !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED) |