home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
vile-src.zip
/
vile-8.1
/
visvile
/
commands.h
< prev
next >
Wrap
C/C++ Source or Header
|
1998-08-25
|
3KB
|
107 lines
// Commands.h : header file
//
#if !defined(AFX_COMMANDS_H__E4C5E2F8_36FF_11D2_B8E4_0020AF0F4354__INCLUDED_)
#define AFX_COMMANDS_H__E4C5E2F8_36FF_11D2_B8E4_0020AF0F4354__INCLUDED_
#include "VisVileTypes.h"
class CCommands :
public CComDualImpl<ICommands, &IID_ICommands, &LIBID_VisVile>,
public CComObjectRoot,
public CComCoClass<CCommands, &CLSID_Commands>
{
protected:
IApplication* m_pApplication;
public:
CCommands();
~CCommands();
BOOL 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_VisVile,
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_VisVile,
XDebuggerEvents, &CLSID_DebuggerEvents>
{
public:
// IDebuggerEvents method
STDMETHOD(BreakpointHit)(THIS_ IDispatch * pBreakpoint);
};
typedef CComObject<XDebuggerEvents> XDebuggerEventsObj;
XDebuggerEventsObj* m_pDebuggerEventsObj;
public:
// ICommands methods
STDMETHOD(VisVileConfig)(THIS);
STDMETHOD(VisVileEnable)(THIS);
STDMETHOD(VisVileDisable)(THIS);
STDMETHOD(VisVileOpenDoc)(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__E4C5E2F8_36FF_11D2_B8E4_0020AF0F4354__INCLUDED)