140 lines
4.4 KiB
C++
140 lines
4.4 KiB
C++
#ifndef __NmApp_h__
|
|
#define __NmApp_h__
|
|
|
|
#include "rToolbar.h"
|
|
#include "resource.h" // main symbols
|
|
#include "NetMeeting.h"
|
|
#include <NetMeetingCP.h>
|
|
|
|
class CMainUI;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNetMeetingObj
|
|
class ATL_NO_VTABLE CNetMeetingObj :
|
|
public CComObjectRootEx<CComSingleThreadModel>,
|
|
public IDispatchImpl<INetMeeting, &IID_INetMeeting, &LIBID_NetMeetingLib>,
|
|
public CComControl<CNetMeetingObj>,
|
|
public IPersistStreamInitImpl<CNetMeetingObj>,
|
|
public IPersistPropertyBagImpl<CNetMeetingObj>,
|
|
public IOleControlImpl<CNetMeetingObj>,
|
|
public IOleObjectImpl<CNetMeetingObj>,
|
|
public IOleInPlaceActiveObjectImpl<CNetMeetingObj>,
|
|
public IViewObjectExImpl<CNetMeetingObj>,
|
|
public IOleInPlaceObjectWindowlessImpl<CNetMeetingObj>,
|
|
public CComCoClass<CNetMeetingObj, &CLSID_NetMeeting>,
|
|
public IObjectSafetyImpl<CNetMeetingObj, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>,
|
|
public IConnectionPointContainerImpl<CNetMeetingObj>,
|
|
public CProxy_INetMeetingEvents<CNetMeetingObj>,
|
|
public IProvideClassInfo2Impl<&CLSID_NetMeeting, &DIID__INetMeetingEvents, &LIBID_NetMeetingLib, NetMeetingLib_Ver_Major, NetMeetingLib_Ver_Minor>
|
|
{
|
|
|
|
// Static Data
|
|
static CSimpleArray<CNetMeetingObj*>* ms_pNetMeetingObjList;
|
|
|
|
CMainUI* m_pMainView;
|
|
CMainUI::CreateViewMode m_CreateMode;
|
|
|
|
public:
|
|
|
|
// So we are not released when we set up our notificatinos sink
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
|
|
// Because this is in a local server, we are not going to be able to be aggregated...
|
|
DECLARE_NOT_AGGREGATABLE(CNetMeetingObj)
|
|
|
|
// This is the resource ID for the .rgs file
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_NMAPP)
|
|
|
|
BEGIN_COM_MAP(CNetMeetingObj)
|
|
COM_INTERFACE_ENTRY(INetMeeting)
|
|
COM_INTERFACE_ENTRY(IDispatch)
|
|
COM_INTERFACE_ENTRY(IObjectSafety)
|
|
COM_INTERFACE_ENTRY(IConnectionPointContainer)
|
|
COM_INTERFACE_ENTRY(IProvideClassInfo)
|
|
COM_INTERFACE_ENTRY(IProvideClassInfo2)
|
|
COM_INTERFACE_ENTRY(IViewObjectEx)
|
|
COM_INTERFACE_ENTRY(IViewObject2)
|
|
COM_INTERFACE_ENTRY(IViewObject)
|
|
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
|
|
COM_INTERFACE_ENTRY(IOleInPlaceObject)
|
|
COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
|
|
COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
|
|
COM_INTERFACE_ENTRY(IOleControl)
|
|
COM_INTERFACE_ENTRY(IOleObject)
|
|
COM_INTERFACE_ENTRY(IPersistStreamInit)
|
|
COM_INTERFACE_ENTRY(IPersistPropertyBag)
|
|
COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
|
|
END_COM_MAP()
|
|
|
|
BEGIN_CONNECTION_POINT_MAP(CNetMeetingObj)
|
|
CONNECTION_POINT_ENTRY(DIID__INetMeetingEvents)
|
|
END_CONNECTION_POINT_MAP()
|
|
|
|
BEGIN_PROP_MAP(CNetMeetingObj)
|
|
END_PROP_MAP()
|
|
|
|
BEGIN_MSG_MAP(CNetMeetingObj)
|
|
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
|
|
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
|
DEFAULT_REFLECTION_HANDLER()
|
|
END_MSG_MAP()
|
|
|
|
// Construction / Destruction
|
|
CNetMeetingObj();
|
|
~CNetMeetingObj();
|
|
HRESULT FinalConstruct();
|
|
|
|
static HRESULT InitSDK();
|
|
static void CleanupSDK();
|
|
|
|
static UINT GetObjectCount() { return ms_pNetMeetingObjList ? ms_pNetMeetingObjList->GetSize() : 0; };
|
|
|
|
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// IViewObjectEx stuff
|
|
///////////////////////////////////////////////////////////////////////////
|
|
DECLARE_VIEW_STATUS(0)
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// CComControl Stuff
|
|
///////////////////////////////////////////////////////////////////////////
|
|
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// INetMeeting methods
|
|
/////////////////////////////////////////////////////////////
|
|
|
|
STDMETHOD(Version)(long* pdwBuildNumber);
|
|
STDMETHOD(UnDock)();
|
|
STDMETHOD(IsInConference)(BOOL *pbInConference);
|
|
STDMETHOD(CallTo)(BSTR bstrCallToString);
|
|
STDMETHOD(LeaveConference)();
|
|
|
|
// IPersistPropertyBag
|
|
STDMETHOD(Load)(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog);
|
|
|
|
// IPersistStreamInit
|
|
STDMETHOD(Load)(LPSTREAM pStm);
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// IProvideClassInfo2
|
|
STDMETHOD(GetClassInfo)(ITypeInfo** pptinfo);
|
|
|
|
// Events
|
|
static void Broadcast_ConferenceStarted();
|
|
static void Broadcast_ConferenceEnded();
|
|
|
|
|
|
private:
|
|
void CNetMeetingObj::_SetMode(LPCTSTR pszMode);
|
|
STDMETHODIMP _ParseInitString(LPCTSTR *ppszInitString, LPTSTR szName, LPTSTR szValue);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif //__NmApp_h__
|