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