COMMANDS.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- // Commands.h : header file
- //
- #if !defined(AFX_COMMANDS_H__36FDE876_EA61_11D0_B595_00A0C91BC942__INCLUDED_)
- #define AFX_COMMANDS_H__36FDE876_EA61_11D0_B595_00A0C91BC942__INCLUDED_
- #include "bldrecTypes.h"
- class CCommands :
- public CComDualImpl<ICommands, &IID_ICommands, &LIBID_Bldrec>,
- 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:
- CString m_strFile;
- // 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_Bldrec,
- 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_Bldrec,
- XDebuggerEvents, &CLSID_DebuggerEvents>
- {
- public:
- // IDebuggerEvents method
- STDMETHOD(BreakpointHit)(THIS_ IDispatch * pBreakpoint);
- };
- typedef CComObject<XDebuggerEvents> XDebuggerEventsObj;
- XDebuggerEventsObj* m_pDebuggerEventsObj;
- public:
- BOOL SaveFileName();
- CTime m_theLastTime;
- BOOL MarkTime(LPCSTR szItem, BOOL fStart);
- // ICommands methods
- STDMETHOD(BldrecCommandMethod)(THIS);
- };
- typedef CComObject<CCommands> CCommandsObj;
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
- #endif // !defined(AFX_COMMANDS_H__36FDE876_EA61_11D0_B595_00A0C91BC942__INCLUDED)