2025-04-27 07:49:33 -04:00

626 lines
17 KiB
Plaintext

// MultiView.odl : type library source for OLE Control project.
// This file will be processed by the Make Type Library (mktyplib) tool to
// produce the type library (MultiView.tlb) that will become a resource in
// MultiView.ocx.
// ***************************************************************************
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// File: MultiView.odl
//
// Description:
// This file contains the ODL for the Class Explorer ActiveX control.
//
// Part of:
// MultiView.ocx
//
// History:
// Judith Ann Powell 10-08-96 Created.
//
// Primary dispatch interface for CMultiViewCtrl
//
// Properties:
//
// NameSpace - BSTR Set will change the namespace
//
// Methods:
//
// void ViewClassInstances(BSTR lpszClassName)
//
// Get instance enumeration of the classes instances and display the
// instances.
//
// Parameters:
// BSTR lpszClassName [IN] Path to class to view.
//
// Returns:
// Nothing.
//
// void ForceRedraw()
//
// Invoke the controls InvalidateControl member function.
//
// void CreateInstance()
//
// Not implemented.
//
// DeleteInstance
//
// This method deletes the currently selected instance.
//
// Parameters:
// None.
//
// Returns:
// E_NOTIMPL
//
// GetContext
//
// Take a snapshot of the current state of the control,
// save the state in a context object and return a handle to the
// context object. The intial reference count to the context object
// will be one. The context object will be deleted when its reference
// count is decremented to zero.
//
// Parameters:
// [out] long FAR* plCtxtHandle
// This is a pointer to the place to return the context
// handle.
//
// Returns:
// long
// S_OK if the context was returned successfully, E_FAIL
// if not.
//
// RestoreContext
//
// Restore the state of this SingleView control to the previously saved
// context.
//
// Parameters:
// long lCtxtHandle
// This is the handle of the context to restore to.
//
// Returns:
// long
// S_OK if the view's context could be restored, a failure code
// otherwise.
//
// AddContextRef
//
// Increment the reference count for the specified context handle.
//
// Parameters:
// [out] long lCtxtHandle
// The context handle.
//
// Returns:
// long
// S_OK if the reference count was successfully incremented,
// a failure code otherwise.
//
// ReleaseContext
//
// Decrement the reference count for the specified context handle.
//
// Parameters:
// [out] long lCtxtHandle
// The context handle.
//
// Returns:
// long
// S_OK if the reference count was successfully decremented,
// a failure code otherwise.
//
//
// GetEditMode
//
// Get the current state of the edit mode flag.
//
// Parameters:
// None.
//
// Returns:
// long TRUE if in edit mode, otherwise FALSE
//
// GetObjectPath
//
// Get the object path at the given object position.
//
// Parameters:
// [in] long lPosition
// One of the following:
// 0 = Current object
// 1 = First object
// 2 = Last object
//
// Returns:
// BSTR
// The specified object path, or NULL if no object
// exists at the given position.
//
// GetObjectTitle
//
// Get a title for the specified object that is suitable for display
// to the user. Note that the title is not necessarily the object path.
//
// Parameters:
// [in] long lWhere
// 0 = Currently selected object.
// Returns:
// BSTR
// The object's title.
//
// GetTitle
//
// The container calls this method to get the title and icon to
// display in the title bar.
//
// Parameters:
// [out] BSTR FAR* pbstrTitle
// Pointer to the place to return the view's title.
//
// [out] LPDISPATCH FAR* lpdispPicture
// The picture dispatch pointer for the title bar icon to
// be displayed. NULL if no icon should be displayed.
//
// Returns:
// long
// S_OK if the title and icon were returned successfully,
// E_FAIL otherwise.
//
// GetViewTitle
//
// Returns an empty string.
//
// arameters:
// [in] long lPosition
// 0 = The default view.
// 1 = The currently selected view.
// 2 = The first view.
// 3 = The last view.
//
// Returns:
// BSTR
// An empty string..
//
// NextViewTitle
//
// Get the title of the view at the next position. Only returns -1.
//
// Parameters:
// [in] long lPosition
// The view position. The initial value of lPosition is
// obtained by calling StartViewEnumeration.
//
// [out] BSTR FAR* pbstrTitle
// The view title is returned here.
//
// Returns:
// long
// -1
//
// ExternInstanceCreated
//
// The container calls this method when it creates an new WMI object
// instance.
//
// Parameters:
// [in] BSTR szObjectPath
// The WBEM object path for the newly created instance.
//
// Returns:
// Nothing.
//
// ExternInstanceDeleted
//
// The container calls this method when it deletes a WMI object
// instance.
//
// Parameters:
// [in] BSTR szObjectPath
// The WMI object path for the newly created instance.
//
// Returns:
// Nothing.
//
// NotifyWillShow
//
// This method is defunct and will be removed from the API.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
// PrevViewTitle
//
// Get the title of the view at the previous position. Only returns -1.
//
// Parameters:
// [in] long lPosition
// The view position. The initial value of lPosition is obtained
// by calling StartViewEnumeration.
//
// [out] BSTR FAR* pbstrTitle
// The view title is returned here.
//
// Returns:
// long
// -1
//
// QueryCanCreateInstance
//
// Returns FALSE. Makes no sense for the Multiview control.
//
// Parameters:
// None.
//
// Returns:
// long
// FALSE
//
// QueryCanDeleteInstance
//
// Call this method to determine whether or not it is OK to call "DeleteInstance" to
// delete the current instance. This method will return FALSE if there is no current
// instance to delete, etc.
//
// Parameters:
// None.
//
// Returns:
// long
// TRUE if the current instance can be deleted, FALSE if there is
// no current instance or it can't be deleted.
//
// QueryNeedsSave
//
// Returns FALSE. Makes no sense for the Multiview control.
//
// Parameters:
// None.
//
// Returns:
// long
// FALSE
//
// QueryObjectSelected
//
// Check to see whether or not the object has a selection.
//
// Parameters:
// None.
//
// Returns:
// long
// TRUE if an object is currently selected, FALSE otherwise.
//
// RefreshView
//
// This method causes the contents of the view to be re-loaded from
// the database.
//
// Parameters:
// None.
//
// Returns:
// long
// S_OK if successful, a failure code if some error occurred.
//
// SaveData
//
// Not implemented.
//
// Parameters:
// None.
//
// Returns:
// E_NOTIMPL
//
// SelectView
//
// Not implemented.
//
// Parameters:
// None.
//
// Returns:
// E_FAIL
//
// SetEditMode
//
// Set the view's edit mode flag.
//
// Parameters:
// [in] long bCanEdit
// TRUE if the data in the view can be edited. FALSE
// if the data should not be edited (browse mode only).
//
// Returns:
// Nothing.
//
// StartObjectEnumeration
//
// Start enumeration of objects.
//
// Parameters:
// [in] long lWhere
// 0 = Currently selected object.
// Returns:
// long
// S_OK if the object selection was successful.
//
// StartViewEnumeration
//
// Start the enumeration of alternate (custom) views. Returns only -1.
//
// Parameters:
// [in] long lWhere
// 0 = The default view.
// 1 = The currently selected view.
// 2 = The first view.
// 3 = The last view.
//
// Returns:
// long
// -1 = There are not alternative views.
//
// void ViewInstances(VARIANT psaPaths)
//
// Displays the instances in the varPathArray argument. The
// first element in the array can be a class name or empty. It
// is ignored. This method is also currently not used by any other
// components.
//
// Parameters:
// [in] BSTR szTitle
// The view title.
//
// [in] VARIANT varPathArray
// Variant array of BSTR's. First element should ba a class
// or empty. It is not used.
//
// Returns:
// Nothing
//
// void QueryViewInstances
//
// Displays the instances returned by the query.
//
// Parameters:
// BSTR pLabel [IN], Label for display purposes
// BSTR pQueryType [IN], WQL or SQL
// BSTR pQuery [IN], Query
// BSTR pClass [IN] Optional, result class
//
// Returns:
// Nothing
//
// NextObject
//
// Get the position of the next object in the currently selected view.
//
// Parameters:
// [in] long lPosition
// The position value returned by StartObjectEnumeration,
// PrevObject, or NextObject.
//
// Returns:
// long
// The position of the next object.
//
// PrevObject
//
// Get the position of the previous object in the currently selected view.
//
// Paramters:
// [in] lPosition
// The position value returned by StartObjectEnumeration,
// PrevObject, or NextObject.
//
// Returns:
// long
// The positon of the previous object.
//
// SelectObjectByPath
//
// Select the specified object.
//
// Parameters:
// [in] LPCTSTR szObjectPath
// The WMI object path.
//
// Returns:
// S_OK if the object is selected, a failure code
// otherwise.
//
// SelectObjectByPosition
//
// Select object by position.
//
// Parameters:
// [in] long lPos
// The object position.
//
// Returns:
// long
// S_OK if the object was selected successfully, a failure code
// otherwise.
//
// Event dispatch interface for CMultiViewCtrl
//
// NotifyViewModified
//
// Not fired.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
// NotifySelectionChanged
//
// Fired when an object is selected.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
// NotifySaveRequired
//
// Not fired.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
// NotifyViewObjectSelected
//
// Fired when as object is double clicked.
//
// Parameters:
// BSTR szObjectPath [OUT] path of selected object.
//
// Returns:
// Nothing.
//
// void GetIWbemServices
//
// Fired when the control wants to connect to a namespace.
//
// Parameters:
// BSTR lpctstrNamespace [IN], Namespace to connect to
// VARIANT* pvarUpdatePointer [IN], Tells dll to get new pointer
// VARIANT* pvarServices [IN/OUT], Services pointer returned
// VARIANT* pvarSC [IN/OUT], S_OK on success or failure code
// VARIANT* pvarUserCancel [IN/OUT]) Tells the control if user canceled
//
// Returns:
// Nothing.
//
// NotifyContextChanged
//
// Not fired.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
// **************************************************************************
#include <olectl.h>
#include <idispids.h>
[ uuid(FF371BF1-213D-11D0-95F3-00C04FD9B15B), version(1.0),
helpstring("WMI Multiple Instances Viewer"), control ]
library MULTIVIEWLib
{
importlib(STDOLE_TLB);
importlib(STDTYPE_TLB);
// Primary dispatch interface for CMultiViewCtrl
[ uuid(FF371BF2-213D-11D0-95F3-00C04FD9B15B),
helpstring("Dispatch interface for WMI Multiple Instances Viewer"), hidden ]
dispinterface _DMultiView
{
properties:
// NOTE - ClassWizard will maintain property information here.
// Use extreme caution when editing this section.
//{{AFX_ODL_PROP(CMultiViewCtrl)
[id(1), helpstring("Current Namespace")] BSTR NameSpace;
[id(2), helpstring("All Properties or Display Subset")] long PropertyFilter;
//}}AFX_ODL_PROP
methods:
// NOTE - ClassWizard will maintain method information here.
// Use extreme caution when editing this section.
//{{AFX_ODL_METHOD(CMultiViewCtrl)
[id(3), helpstring("Enumerate and Display Instances")] void ViewClassInstances(BSTR lpszClassName);
[id(4), helpstring("Redraw")] void ForceRedraw();
[id(5), helpstring("Create and Select Instance")] long CreateInstance();
[id(6), helpstring("Delete Instance")] long DeleteInstance();
[id(7), helpstring("Save Control State and Return Context")] long GetContext(long* pCtxHandle);
[id(8), helpstring("Restore Control State from Context")] long RestoreContext(long lCtxtHandle);
[id(9), helpstring("Increment Context Ref Count")] long AddContextRef(long lCtxtHandle);
[id(10), helpstring("Decrement Context Ref Count")] long ReleaseContext(long lCtxtHandle);
[id(11), helpstring("Get Read or Modify State")] long GetEditMode();
[id(12), helpstring("Get Path of Selected Object")] BSTR GetObjectPath(long lPosition);
[id(13), helpstring("Get Title of Selected Object")] BSTR GetObjectTitle(long lPosition);
[id(14), helpstring("Get View Title and Icon")] long GetTitle(BSTR* pbstrTitle, IDispatch** lpPictDisp);
[id(15), helpstring("Get Current View Title")] BSTR GetViewTitle(long lPosition);
[id(16), helpstring("Get Next View Title")] long NextViewTitle(long lPosition, BSTR* pbstrTitle);
[id(17), helpstring("WMI Object Created")] void ExternInstanceCreated(BSTR szObjectPath);
[id(18), helpstring("WMI Object Deleted")] void ExternInstanceDeleted(BSTR szObjectPath);
[id(19), helpstring("Prepare to View")] void NotifyWillShow();
[id(20), helpstring("Title of View at Previous Position")] long PrevViewTitle(long lPosition, BSTR* pbstrTitle);
[id(21), helpstring("Can Instance be Created")] long QueryCanCreateInstance();
[id(22), helpstring("Can Instance be Deleted")] long QueryCanDeleteInstance();
[id(23), helpstring("Is Current Object Modified")] long QueryNeedsSave();
[id(24), helpstring("Is Current Object Selected")] long QueryObjectSelected();
[id(25), helpstring("Redraw from Repository")] long RefreshView();
[id(26), helpstring("Save Changes to Current Object")] long SaveData();
[id(27), helpstring("Current Position of the View")] long SelectView(long lPosition);
[id(28), helpstring("Set Read or Modify State")] void SetEditMode(long bCanEdit);
[id(29), helpstring("Start Enumeration of Objects")] long StartObjectEnumeration(long lWhere);
[id(30), helpstring("Start Enumeration of Views")] long StartViewEnumeration(long lWhere);
[id(31), helpstring("Display Instances")] long ViewInstances(BSTR szTitle, VARIANT varPathArray);
[id(32), helpstring("Display Query Results")] void QueryViewInstances(BSTR szTitle, BSTR szQueryType, BSTR szQuery, BSTR szClass);
[id(33), helpstring("Position of Next Object in Current View")] long NextObject(long lPosition);
[id(34), helpstring("Position of Previous Object in Current View")] long PrevObject(long lPosition);
[id(35), helpstring("Select Specified Object by Path")] long SelectObjectByPath(BSTR szObjectPath);
[id(36), helpstring("Select Specified Object by Position")] long SelectObjectByPosition(long lPosition);
//}}AFX_ODL_METHOD
[id(DISPID_ABOUTBOX)] void AboutBox();
};
// Event dispatch interface for CMultiViewCtrl
[ uuid(FF371BF3-213D-11D0-95F3-00C04FD9B15B),
helpstring("Event interface for WMI Multiple Instances Viewer") ]
dispinterface _DMultiViewEvents
{
properties:
// Event interface has no properties
methods:
// NOTE - ClassWizard will maintain event information here.
// Use extreme caution when editing this section.
//{{AFX_ODL_EVENT(CMultiViewCtrl)
[id(1), helpstring("View has Changed State")] void NotifyViewModified();
[id(2), helpstring("New Selection in Custom View")] void NotifySelectionChanged();
[id(3), helpstring("Object has been Modified")] void NotifySaveRequired();
[id(4), helpstring("Object Selected")] void NotifyViewObjectSelected(BSTR szObjectPath);
[id(5), helpstring("Get IWbemServices Pointer Request")] void GetWbemServices(BSTR szNamespace, VARIANT* pvarUpdatePointer, VARIANT* pvarServices, VARIANT* pvarSc, VARIANT* pvarUserCancel);
[id(6), helpstring("Current Context has Changed")] void NotifyContextChanged(long bPushContext);
[id(7), helpstring("Request to Become UI Active")] void RequestUIActive();
//}}AFX_ODL_EVENT
};
// Class information for CMultiViewCtrl
[ uuid(FF371BF4-213D-11D0-95F3-00C04FD9B15B),
helpstring("WMI Multiple Instances Viewer"), control ]
coclass MultipleInstanceViewer
{
[default] dispinterface _DMultiView;
[default, source] dispinterface _DMultiViewEvents;
};
//{{AFX_APPEND_ODL}}
};