//+---------------------------------------------------------------------------
//
//  Contents:   NetMeeting ActiveX object interfaces
//
//  Copyright 1995 - 2002 Microsoft Corporation. All Rights Reserved.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
// PARTICULAR PURPOSE. 
//----------------------------------------------------------------------------

import "ocidl.idl";

///////////////////////////////////////////////////////////////////////////////////////////////
// INetMeeting DISPIDs
#define NETMEETING_DISPID_START				(100)
#define DISPID_Version						(NETMEETING_DISPID_START + 0)
#define DISPID_UnDock						(NETMEETING_DISPID_START + 1)
#define DISPID_IsInConference				(NETMEETING_DISPID_START + 2)
#define DISPID_CallTo						(NETMEETING_DISPID_START + 3)
#define DISPID_LeaveConference				(NETMEETING_DISPID_START + 4)
#define NETMEETING_DISPID_END				(NETMEETING_DISPID_START + 100)

#define NETMEETING_EVENTS_DISPID_START		(NETMEETING_DISPID_END + 1)
#define DISPID_ConferenceStarted			(NETMEETING_EVENTS_DISPID_START + 1)
#define DISPID_ConferenceEnded				(NETMEETING_EVENTS_DISPID_START + 2)

#define UUID_INetMeeting			5572984E-7A76-11d2-9334-0000F875AE17
#define UUID_NetMeetingLib			5CE55CD7-5179-11D2-931D-0000F875AE17
#define UUID__INetMeetingEvents		3E9BAF2C-7A79-11d2-9334-0000F875AE17
#define UUID_NetMeeting				3E9BAF2D-7A79-11d2-9334-0000F875AE17

[
	object,
	uuid(UUID_INetMeeting),
	dual,				// Supports early and late binding
	hidden,				// Default interfaces should be marked as "hidden"
	nonextensible,		// Allows VB to use Early Binding...
	helpstring("NetMeeting Application Interface")
]
interface INetMeeting : IDispatch
{

	[id(DISPID_Version), helpstring("Get the build number for NetMeeting on the local machine")] 
		HRESULT Version([out,retval] long* pdwBuildNumber);

	[id(DISPID_UnDock), helpstring("Undock a copy of the UI")] 
		HRESULT UnDock();

	[id(DISPID_IsInConference), helpstring("Is the local user in a conference")]
		HRESULT IsInConference([out,retval] BOOL *pbInConference);

	[id(DISPID_CallTo), helpstring("Place a NetMeeting call using CallTo addressing")] 
		HRESULT CallTo([in] BSTR strCallToString);

	[id(DISPID_LeaveConference), helpstring("Leave the current conference")]
		HRESULT LeaveConference();
};

// These version numbers should match the version attribute in the library definitoen below
cpp_quote("enum { NetMeetingLib_Ver_Major = 1};")
cpp_quote("enum { NetMeetingLib_Ver_Minor = 1};")
[
	uuid(UUID_NetMeetingLib),
	version(1.1),
	helpstring("NetMeeting 1.1 Type Library")
]
library NetMeetingLib	
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	[
		uuid(UUID__INetMeetingEvents),
		helpstring("NetMeeting Events Interface"),
	]
	dispinterface _INetMeetingEvents
	{

	properties:
	methods:
		[id(DISPID_ConferenceStarted), helpstring("Event triggered when a call is accepted")] 
			void ConferenceStarted();

		[id(DISPID_ConferenceEnded), helpstring("Event triggered when the current call is over")] 
			void ConferenceEnded();
	}

	[
		uuid(UUID_NetMeeting),
		helpstring("NetMeeting Application")
	]
	coclass NetMeeting
	{
		[default] interface INetMeeting;
		[default, source] dispinterface _INetMeetingEvents;
	};
};

