README.TXT

OLE Automation Controller and Server that Browses a Type Library 


SUMMARY
=======

The BROWSE sample controls the automation objects of the BROWSEH (Browse
Helper) inproc server to browse a type library. BROWSE is a developer-
oriented type library browser.

In addition to displaying type library information, this sample shows how
to control an automation object by accessing its properties and methods.
BROWSE provides generic helper functions (CreateObject & Invoke) to control
any automation server. For more information on how to use these functions,
see the comments in INVHELP.CPP.

BROWSEH exposes a number of automation objects that correspond to
components of a type library. This allows an automation controller like
BROWSE to access the properties and methods of these objects to browse the
type library instead of directly using ITypeLib and ITypeInfo. So BROWSEH
is a type library browse helper. BROWSEH does not support vtable binding.
Controllers must use IDispatch to control this server.

MORE INFORMATION
================

The following information describes the BROWSE sample.

To Compile BROWSE and BROWSEH
-----------------------------

To compile an ANSI debug version of the sample for Windows NT and Windows 95,
use the following command:

nmake

To compile a Unicode debug version of the sample for Windows NT only, use the
following command:

nmake dev=win32 HOST=NT

To compile a 16-bit debug version of the sample and if your development
environment is Win 3.x, use the following command. If your development
environment is Win95 or NT, change the HOST appropriately.

nmake dev=win16 HOST=DOS

To clean up between builds which use different options, use one of the
following commands:

nmake clean
nmake dev=win16 clean

See the makefile header comments for other make options.

If one of the build tools cannot find SDKUTIL.LIB, use the SAMPLES\COM\COMMON
sample to build SDKUTIL.LIB.

Visual C++ 2.x and above can use makefile as an external makefile
after making the following replacement in the makefile:

!include <$(MSTOOLS)\samples\com\include\olesampl.mak>

with

!include <win32.mak>


To Run BROWSE
-------------

- Change BROWSEH.REG to provide the full path of BROWSEH.DLL, BROWSEH.TLB and MYDISP.TLB.

- Register BROWSEH.REG in the registration database by double-clicking it.

- Run BROWSE.EXE and use the menu to select a type library to browse.


BROWSE Files
------------

INVHELP.CPP and INVHELP.H contain two helper functions that are used to
create an automation object (using CreateObject) and to invoke a method
or property of that object (using Invoke). These functions are general
enough to be used by any Automation controller.

BROWSE.CPP uses the helper functions in invhelp.cpp to access the
properties and methods of the automation objects of BROWSEH.

MAKEFILE is the makefile for the project.


To run BROWSEH
--------------

- Change BROWSEH.REG to provide the full path of BROWSEH.DLL and BROWSEH.TLB.

- Register BROWSEH.REG in the registration database by double-clicking it.

- Run the Automation controller BROWSE that uses BROWSEH to browse a type
library OR load and run the VB 4.0 VB.VBP project file which uses BROWSEH
to output a C/C++ header file from the infromation in a type library. The
header file can be used to create a C/C++ vtbl-binding client for the server
to which the type library belongs, if the server supports vtbl-binding. After
running the VB script, select the type library to be used as the input and
specify the name of the header file to be output.

BROWSEH Files
-------------

MYDISP.ODL contains the description of a base class that implements
IDispatch. All automation objects in this server are derived from this
class. This is the implementation of IDispatch in the base class to be
inherited in the derived classes.

BROWSEH.ODL contains the description of the objects that BROWSEH exposes.

TLB.H is the header file generated by mktyplib.exe

MAKEFILE is the makefile for project.

MAIN.CPP contains code to create an inproc server.

Other files implement the BROWSEH automation server. For example,
COCLASS.CPP demonstrates how to use ITypeInfo and ITypeLib to browse a
coclass in a type library.

VB.VBP and VB.FRM are VB 4.0 files that uses BROWSEH to browse a type library
and to create a C/C++ header file from the browsed information.