=========================================================== INSIDE OLE BY KRAIG BROCKSCHMIDT COMPANION DISC COPYRIGHT (C) 1995 BY KRAIG BROCKSCHMIDT =========================================================== This file describes the contents of the directories found on the sample CD. For complete information about individual source code files, consult the comments in the files themselves. ROOT DIRECTORY ON CD ---------------------- CODE\*.* Contains the sample code tree, which should be copied to C:\INOLE. 16BITOLE.WRI "Notes Concerning 16-Bit OLE" describing 16BITOLE.RTF differences between the book text, which is written for 32-bit OLE, and 16-bit OLE. APPA.WRI Appendix A, "An Introduction to C++" APPA.RTF Which supplements Chapters 1 and 2 for C programmers who need a familiarity with C++ to read this book effectively. APPB.WRI "The Details of Standard Marshaling," a APPB.RTF supplement to Chapter 6. BUILD.TXT Details about the sample code build process. CONTENTS.TXT This file you are now reading. ERRATA.TXT Corrections to the printed text. README.TXT Read this first! SETUP.EXE The setup program that will copy the sample SETUP.INI code to your machine from the CD. SETUP.TXT INSTALLATION DIRECTORY FOR SAMPLE CODE: ---------------------------------------- COMMON FILES THAT OCCUR IN MANY DIRECTORIES File Description -------------------------------------------- about.dlg Dialog template for About box client.cpp Client-area object code for samples based on CLASSLIB (primarily Cosmo, Component Cosmo, and Patron) .ico Program icon .rc Resources for the sample document.cpp Document window object code for all samples based on CLASSLIB (primariliy Cosmo, Component Cosmo, and Patron) document.ico Document window icon for MDI samples based on CLASSLIB (primariliy Cosmo, Component Cosmo, and Patron) gizmo120.bmp Toolbar images for 120dpi gizmo72.bmp Toolbar images for 72dpi gizmo96.bmp Toolbar images for 96dpi makeall.bat Build script for everything in the given directory and in all subdirectories. makefile Makefile precomp.cpp Source file to pull in the right header file for making a precompiled header. resource.h Definitions of resource identifiers. win16.def 16-bit module definitions win16.def 16-bit registry information win32.def 32-bit module definitions win32.def 32-bit registry information ROOT DIRECTORY File Description -------------------------------------------- inole-a.mak Definitions of symbols, compiler flags, linker flags, and makefile rules. inole-b.mak Linker scripts makeall.bat Global build script mksamp1.bat Default script for building an MDI or SDI sample, depending on the SDI environment variable. mksamp2.bat Default script for building a simple sample mksamp3.bat Default script for building a simple sample in a second-level directory (one deeper than mksamp2.bat) BUILD DIRECTORY Binary EXE and DLL files for all the samples. INOLE.DLL is the most important, which should be in your PATH when attempting to run most of the book's samples. COSMO SAMPLES IN VARIOUS DIRECTORIES Cosmo is a sample intended to show how you can convert Windows API-based application features into OLE-based features, and serves as the primary example for compound document content objects. It evolves throughout the book as decsribed below: Directory Description -------------------------------------- CHAP01\COSMO Fully functional version of Cosmo written entirely with the Windows API using no OLE whatsoever. CHAP07\COSMO File I/O is convered to use Compound Files. CHAP12\COSMO Clipboard code is converted to use the OLE clipboard protocol and data objects. CHAP13\COSMO Adds OLE Drag & Drop CHAP14\COSMO Adds OLE Automation support to the entire application (this chapter's sample is based on Chapter 12's version) CHAP18\COSMO Adds OLE Documents support for embedding, using Chapter 13's version as a base (to avoid complicating the scene with OLE Automation). Cosmo is a server for a gaphical "Figure" type of content. CHAP21\COSMO Adds OLE Documents support for linking, improving on Chapter 18's sample. CHAP23\COSMO Adds in-place activation support to the Chapter 21 sample CHAP18\COSMO1.0 Cosmo's 1.0 version, which supported OLE Documents using OLE version 1. Not fully supported under 32-bit. Provided only as an example for conversion and emulation as described in OLE1.WRI. COSMO SOURCE FILES ------------------ This table lists Cosmo's specific files (excluding those that were listed as "common" above), the chapter where the file first appears, and the purpose of that file. Appears File in chapter: Description ---------------------------------------------------------- cosmo.cpp 1 Frame window handling for cosmo. Also receives the IOleInPlaceFrame code in Chapter 23. cosmo.h 1 Main header file document.cpp 1 Document object code, implements IOleInPlaceUIWindow in Chapter 23. polyline.cpp 1 Object code for Polyline window class, where the figure is drawn polyline.h 1 Polyline's header file polywin.cpp 1 Polyline's window procedure dropsrc.cpp 13 Implementation of drop source object for OLE Drag & Drop droptgt.cpp 13 Implementation of drop target object for OLE Drag & Drop iclassf.cpp 14,18 Implementation of Cosmo's class factory object. It appears in Chapter 14 for OLE Automation. A different one appears in Chapters 18 and beyond for OLE Documents. cosmole.h 18 Header file for OLE Documents specifics. figure.cpp 18 The "embedded" or "linked" content object implementatation that wraps the Polyline code into a "Figure" content object. idataobj.cpp 18 IDataObject implementation for the Figure. ioleobj.cpp 18 IOleObject implementation for the Figure. iperstor.cpp 18 IPersistStorage implementation for the Figure. iperfile.cpp 21 IPersistFile implementation for the Figure to support linking. iipaobj.cpp 23 IOleInPlaceActiveObject implementation for the Figure's in-place activation. iipobj.cpp 23 IOleInPlaceObject implementation for the Figure's in-place activation. These appear only in Chapter 14: ----------------------------------- autoapp.cpp "Application" object code for OLE Automation autobase.cpp Base class implementation used for all OLE Automation objects in autoapp.cpp, autofig.cpp, and autofigs.cpp. autofig.cpp "Figure" object code for OLE Automation autofigs.cpp "Figures" collection object code for OLE Automation cosmo000.odl Cosmo's ODL script defining its OLE Automation interfaces. COMPONENT COSMO SAMPLES IN VARIOUS DIRECTORIES Component Cosmo is a variation of Cosmo which uses a COM-based version of a Polyline object, which is an internal C++ class in Cosmo. It evolves in a similar vein to Cosmo throughout the early part of the book as decsribed below: Directory Description -------------------------------------- CHAP05\COCOSMO First manifestration of Component Cosmo in the chapter where Polyline is first made a COM component. Communication between CoCosmo and Polyline happens through a custom interface as well as connection points. CHAP08\COCOSMO Uses IPersist* interfaces to save and load Polyline data instead of custom interface members. CHAP10\COCOSMO Uses IDataObject to exchange data with the Polyline object instead of custom interface members. CHAP12\COCOSMO Converts existing clipboard support to use the OLE Clipboard. CHAP13\COCOSMO Adds OLE Drag & Drop. There are no revisions of Component Cosmo after this, although a README.TXT in the COCOSMO directory of chapters 19, 21, 23, and 24 describe simple modifications to make CoCosmo work with later versions of Polyline. COCOSMO SOURCE FILES -------------------- This table lists Component Cosmo's specific files (excluding those that were listed as "common" above), the chapter where the file first appears, and the purpose of that file. Appears File in chapter: Description ---------------------------------------------------------- cocosmo.cpp 5 Frame object code cocosmo.h 5 Main application header file iadvsink.cpp 10 Implementation of a simple object with IAdviseSink to receive data change notifications from the Polyline. dropsrc.cpp 13 Implementation of drop source object for OLE Drag & Drop droptgt.cpp 13 Implementation of drop target object for OLE Drag & Drop POLYLINE SAMPLES IN VARIOUS DIRECTORIES Polyline begins life in Chapter 5 as a COM object that is broken out of Cosmo. Instead of being an internal C++ object, Polyline becomes a COM object with a custom interface, and over time we add more interfaces to the object, eventually making it into a compound document content object and a partial OLE Control. Various manifestations of Component Cosmo use versions of this sample, which evolves as described in the table below: Directory Description -------------------------------------- CHAP05\POLYLINE First manifestation of Polyline which implements a custom interface IPolyline5, as well as connection point support for its own notification set, IPolylineAdviseSink5. CHAP08\POLYLINE Persistence support removed from IPolyline5 which now becomes IPolyline8, and added through IPersistStorage and IPersistStreamInit. CHAP10\POLYLINE Data exchange support removed from IPolyline8 which now becomes IPolyline10, and added through IDataObject and support for sending data changes through IAdviseSink. CHAP19\POLYLINE Adds support for OLE Documents embedding with the interfaces IOleObject, IRunnableObject, IViewObject2, and those necessary for caching. CHAP21\POLYLINE Adds support for a container's linking to embedding feature, which means handling monikers and implementing IExternalConnection. CHAP23\POLYLINE Adds in-place activation support with IOleInPlaceObject and IOleInPlaceActive object, and is marked OLEMISC_ACTIVATEWHENVISIBLE. CHAP24\POLYLINE Becomes a partial OLE Control with IOleControl and IDispatch, and supports its own property page. POLYLINE SOURCE FILES ---------------------- This table lists Polyline's specific files (excluding those that were listed as "common" above), the chapter where the file first appears, and the purpose of that file. Appears File in chapter: Description ---------------------------------------------------------- dllpoly.cpp 5 LibMain[32] and initialization code. iconnpt.cpp 5 Connection point support ipolylin.cpp 5 Implementation of custom IPolyline* interfaces polyline.cpp 5 Core of object code polyline.h 5 Main header file polywin.cpp 5 Window procedure for the Polyline editing window iperstmi.cpp 8 Implementation of IPersistStreamInit iperstor.cpp 8 Implementation of IPersistStorage idataobj.cpp 10 Implementation of IDataObject irunobj.cpp 19 Implementation of IRunnableObject iviewobj.cpp 19 Implementation of IViewObject2 ioleobj.cpp 19 Implementation of IOleObject iextconn.cpp 21 Implementation of IExternalConnection iipaobj.cpp 23 Implementation of IOleInPlaceActiveObject iipobj.cpp 23 Implementation of IOleInPlaceObject control.cpp 24 Code related to being an OLE Control, including IOleControl and IDispatch interfaces. ipoly.h 24 MKTYPLIB-generated header for interfaces needed for being an OLE Control, including Polyline's event set. polyline.odl 24 ODL script for all interfaces including the event set. PATRON SAMPLES IN VARIOUS DIRECTORIES Patron is a sample intended to show how you can build a new application entirely with OLE features, serving to show new OLE code (instead of converted Windows API code), and becomes the primary example of a container for compound document content objects and OLE Controls. It evolves throughout the book as decsribed below: Directory Description -------------------------------------- CHAP01\PATRON Skeletal version of Patron that does almost nothing useful whatsoever. CHAP07\PATRON Adds file I/O capabilities using Compound Files. CHAP12\PATRON Adds clipboard handling and support for static content on a page using the OLE Clipboard and the OLE data cache. CHAP13\PATRON Adds OLE Drag & Drop CHAP17\PATRON Adds OLE Documents container support for embedding. CHAP20\PATRON Adds OLE Documents container support for linking. CHAP21\PATRON Adds OLE Documents support for linking to embeddings, where Patron becomes a server for embedded objects within it, demonstrating complex moniker binding. CHAP22\PATRON Adds in-place activation container support. CHAP24\PATRON Adds partial support for OLE Controls, specifically support for event handling. PATRON SOURCE FILES ------------------ This table lists Patron's specific files (excluding those that were listed as "common" above), the chapter where the file first appears, and the purpose of that file. Appears File in chapter: Description ---------------------------------------------------------- page.cpp 1 Code for a single "page" object. pagemous.cpp 1 Mouse-event handlers for a page. pages.cpp 1 Manages the collection of pages in a document. pages.h 1 Definitions of the pages collection and the page object class. pagewin.cpp 1 Windows procedure for the pages collection. patron.cpp 1 Frame object code, also IOleInPlaceFrame implementation in Chapter 23. patron.h 1 Main application header file. print.cpp 1 Printer-specific code, kept out of the way from everything else. print.dlg 1 Print dialog template. tenant.cpp 12 "Tenant" class implenentation, where each tenant is one piece of content or object on a page. This becomes the site object for OLE Documents and OLE Controls. dragdrop.cpp 13 Internal helper functions for Drag & Drop. dropsrc.cpp 13 Implementation of drop source object for OLE Drag & Drop droptgt.cpp 13 Implementation of drop target object for OLE Drag & Drop iadvsink.cpp 17 Implementation of IAdviseSink for tenants. iclisite.cpp 17 Implementation of IOleClientSite for tenants. tenant.h 17 Header information for tenants, broken out from pages.h iuilink.cpp 20 Implementation of IOleUILinkContainer for use with the Links dialog. iclassf.cpp 21 Class factory object for linking to embeddings. iolecont.cpp 21 Implementation of IOleItemContainer for both the document and the page objects, needed to support linking. iperfile.cpp 21 Implementation of IPersistFile for linking. iipsite.cpp 22 Implementation of IOleInPlaceSite for the tenant and in-place activation iipuiwin.cpp 22 Implementation of IOleInPlaceUIWindow for the document and in-place activation ambients.cpp 24 Implementation of IDispatch for ambient properties. connect.cpp 24 Code to connect to a control's event set and retrieve its type information events.cpp 24 Code for handling arbitrary events and the events dialog. events.dlg 24 Dialog template for assigning actions to events. iconsite.cpp 24 Implementation of IOleControlSite CHAPTER BY CHAPTER DIRECTORIES Specific descriptions of many source files are not given for the simple samples, as those are described in the book text in detail. CHAPTER 1 DIRECTORIES Sample Description ----------------------------------------- COSMO See above PATRON See above CHAPTER 2 DIRECTORIES Sample Description ----------------------------------------- ENUMRECT Demonstration of enumerator objects MALLOC1 C program demonstrating OLE's memory allocation service MALLOC2 C++ program demonstrating OLE's memory allocation service QUERY Demonstration of the implementation of IUnknown and three techniques for implementing multiple interfaces. REUSE Demonstraton of object reusability through containment and aggregation. CHAPTER 3 DIRECTORIES Has no samples CHAPTER 4 DIRECTORIES Sample Description ----------------------------------------- CONNECT Demonstration of connection points CHAPTER 5 DIRECTORIES Sample Description ----------------------------------------- COCOSMO See above POLYLINE See above DKOALA1 Demonstration of a simple in-process component DKOALA2 Demonstration of a simple in-process component that supports self-registration DKOALA3 Demonstration of a simple in-process component that supports licensing EKOALA1 Demonstration of a simple out-of-process component EKOALA2 Demonstration of a simple out-of-process component that supports self-registration OBJUSER Client for DKoala1 and EKoala1 LICUSER Client for DKoala3 SELFREG Driver for self-registering components, for use with DKoala2 and EKoala2 CHAPTER 6 DIRECTORIES Sample Description ----------------------------------------- EKOALA3 Simple out-of-process component that demonstrates message handling. EKOALA4 Simple component that implements two custom interfaces, IAnimal and IKoala, using standard marshaling. EKOALA5 Simple component that implements custom interfaces using custom marshaling. KOALAPRX Custom marshaling proxy object for EKoala5 IANIMAL Standard marshaling interface for IAnimal IKOALA Standard marshaling interface for IKoala OBJUSER2 Client for EKoala3 that demonstrates message handling and the Busy dialog. OBJUSER3 Client for EKoala4 and EKoala5 to prove that a client doesn't care about how marshaling is carried out. CHAPTER 7 DIRECTORIES Sample Description ----------------------------------------- COSMO See above FRAGMENT Demonstration of the built-in defragmentation capabilities of Compound Files. PATRON See above CHAPTER 8 DIRECTORIES Sample Description ----------------------------------------- COCOSMO See above POLYLINE See above CHAPTER 9 DIRECTORIES Sample Description ----------------------------------------- IDESCRIP Standard marshaling interface for IDescription LINKSRC A source for linked data that demonstrates complex moniker binding, using IDescription to communicate with LinkUser. LINKUSER A client for LinkSource that binds monikers to an IDescription interface and displays text. CHAPTER 10 DIRECTORIES Sample Description ----------------------------------------- COCOSMO See above POLYLINE See above DATAUSER Client for DDataObj and EDataObj, demonstrating data retrieval and handling of data change notifications. DDATAOBJ In-process data object implementation EDATAOBJ Out-of-process data object implementation identical to DDataObj useful for comparing performance. RES Resources shared between DDataObj and EDataObj. TARGDEV Sample source file for target device structure handling in OLE's DVTARGETDEVICE and FORMATETC structures. CHAPTER 11 DIRECTORIES Sample Description ----------------------------------------- FREELOAD Demonstration of using OLE's Data Cache to display, store, and retrieve bitmaps and metafiles. CHAPTER 12 DIRECTORIES Sample Description ----------------------------------------- COSMO See above COCOSMO See above DATATRAN A "Data Transfer" Component that is used in the Cosmo and Patron samples from here through the end of the book. It acts as a data store for use with data exchange protocols like the cliboard and OLE Drag & Drop. PATRON See above CHAPTER 13 DIRECTORIES Sample Description ----------------------------------------- COSMO See above COCOSMO See above PATRON See above CHAPTER 14 DIRECTORIES Sample Description ----------------------------------------- BEEPER1 Variation I on a simple automation object BEEPER2 Variation II on a simple automation object, with support for type information BEEPER3 Variation III on a simple automation object, with support for error objects BEEPER3A A correction to Beeper3, see ERRATA.TXT BEEPER4 Variation III on a simple automation object, demonstrating dual interfaces. BEEPER5 Variation III on a simple automation object, demonstrating OLE's standard dispatch object. BEEPHELP Shared help files in English and German for all the Beeper objects BEEPTEST DISPTEST DispTest/VB3 test script for Beeper objects NEWVB Same test script for later versios of VB COSMO See above COSMOTST DISPTEST DispTest/VB3 test script for Cosmo's Automation implementation NEWVB Same test script for later versios of VB CHAPTER 15 DIRECTORIES Sample Description ----------------------------------------- AUTOCLI OLE Automation controller for the Beeper objects of Chapter 14. SQUARE Another demonstration OLE Automation object called the SphereSquare. VBSQUARE NEWVB Script to drive SphereSquare, for versions of VB after 3.0. CHAPTER 16 DIRECTORIES Sample Description ----------------------------------------- AUTOCLI2 OLE Automation controller for Beeper6 that will display property pages and implements IPropertyNotifySink. BEEPER6 A Beeper object that supports a property page (BEEPPROP) and IPropertyNotifySink as an outgoing interface. BEEPPROP The property page for Beeper6 CHAPTER 17 DIRECTORIES Sample Description ----------------------------------------- PATRON See above CHAPTER 18 DIRECTORIES Sample Description ----------------------------------------- COSMO See above COSMO1.0 OLE 1.0 version of Cosmo for demonstration of conversion and emulation. CHAPTER 19 DIRECTORIES Sample Description ----------------------------------------- COCOSMO Contains a README.TXT HCOSMO An in-process handler for Chapter 18's Cosmo. POLYLINE See above CHAPTER 20 DIRECTORIES Sample Description ----------------------------------------- LNKASSIS Helper component for a container's dealings with the Links dialog PATRON See above CHAPTER 21 DIRECTORIES Sample Description ----------------------------------------- COSMO See above COCOSMO Contains a README.TXT POLYLINE See above PATRON See above CHAPTER 22 DIRECTORIES Sample Description ----------------------------------------- PATRON See above CHAPTER 23 DIRECTORIES Sample Description ----------------------------------------- COCOSMO Contains a README.TXT POLYLINE See above COSMO See above CHAPTER 24 DIRECTORIES Sample Description ----------------------------------------- COCOSMO Contains a README.TXT PATRON See above POLYLINE See above POLYPROP Property page implementation for Polyline CHAPTER 25 DIRECTORIES Has no samples CLASSLIB DIRECTORY CLASSLIB is a framework for the Patron, Cosmo, Component Cosmo, and Freeloader samples, as well as a library of classes used by the Polyline samples. This is not a very robust or well tested framework and should not be used for your own development efforts. It is primarily used to keep the various samples clean of Windows code, so you can concentrate on more OLE code. CLASSLIB is statically linked. File Description ----------------------------------------- about.dlg Default dialog template for About box app.ico Defaul program icon cclient.cpp Client are object base class implementation cdocumnt.cpp Document object base class implementation cframe.cpp Frame object base class implementation chatch.cpp Hatch window class used for in-place activation samples. chourgls.cpp CHourglass class to control the hourglass cursor. classlib.h Library header file. classlib.rc Default resources classres.h Resource identifiers cstatlin.cpp Framework wrapper for the status line control in INOLE.DLL (see below) cstrtabl.cpp String table class for managing resource strings. ctoolbar.cpp Framework wrapper for the toolbar control in INOLE.DLL (see below) cwindow.cpp Base window class for other classes document.ico Default document icon docwin.cpp Document window procedure framewin.cpp Frame window procedure stdgz120.bmp Default 120dpi toolbar images stdgz72.bmp Default 72dpi toolbar images stdgz96.bmp Default 96dpi toolbar images SKEL DIRECTORY Test program for CLASSLIB that contains only a WinMain. INC DIRECTORY Common header files used by multiple samples File Description -------------------------------------------- book1632.h Macros to hide 16/32 bit differences bookguid.h Definition of GUIDs used in chapter samples bttncur.h Used by INOLE.H classlib.h Definition of CLASSLIB classes classres.h Default resource identifiers for CLASSLIB samples dbgout.h Debugging output macros gizmobar.h Used by INOLE.H ianim16.h 16-bit header for IAnimal interface used by Chapter 6 samples ianimal.h 32-bit header for IAnimal interface used by Chapter 6 samples idescrip.h 32-bit header for IDescription interface used by Chapter 9 samples ikoala.h 16-bit header for IKoala interface used by Chapter 6 samples ikoala16.h 32-bit header for IKoala interface used by Chapter 6 samples inole.h Header file used by nearly all samples that includes book1632.h, bookguid.h, classlib.h and classres.h (on demand), windows.h, ole2.h (and others, on demand), and oledlh.h or ole2ui.h (on demand). ipoly5.h Definition of IPolyline5 interface for Chapter 5 ipoly8.h Definition of IPolyline8 interface for Chapter 8 ipoly10.h Definition of IPolyline10 interface for Chapter 10 as well as Chapters 12, 13, 19, 21, 23, and 24. stastrip.h Used by INOLE.H INOLE DIRECTORY Utilities and helper function library for various samples. This code builds INOLE.DLL. File Description -------------------------------------------- ansi.cpp ANSI to Unicode wrappers for OLE APIs bttncur.c Code for handling toolbar images bttncuri.h Internal header for bttncur.c cursors.c Code for handling extra cursors gizmo.c Code for handling a toolbar gizmoapi.c Code for handling a toolbar gizmobar.c Code for handling a toolbar gizmoint.h Internal header for gizmo*.* helpers.cpp Miscellaneous helper functions for the samples inole.cpp LibMain[32] and library initialization inole.rc Library resources inoledll.h Internal header for INOLE.DLL stastrip.c Code for handling a status line control statint.h Internal header for the status line uieffect.cpp Functions for generating UI effects such as shading and hatching. xform.cpp Functions to transforms between HIMETRIC and other coordinate systems. RES DIRECTORY Contains standard cursor and toolbar bitmap resources for the INOLE library. INTERFAC DIRECTORY Template interface implementations for those you may need in your work. Those interfaces that are normally not implemented on custom objects are not included. Files Interface --------------------------------------------- iadvsink.* IAdviseSink iadvsnk2.* IAdviseSink2 iclassf.* IClassFactory iclassf2.* IClassFactory2 iclisite.* IOleClientSite iconnpt.* IConnectionPoint iconnptc.* IConnectionPointContainer iconsite.* IOleControlSite icontrol.* IOleControl idataobj.* IDataObject idispat.* IDispatch idropsrc.* IDropSource idroptgt.* IDropTarget ienumcon.* IEnumConnections ienumcp.* IEnumConnectionPoints ienumfe.* IEnumFORMATETC ienumstr.* IEnumString ienumunk.* IEnumUnknown ienumvrb.* IEnumOLEVERB iextconn.* IExternalConnection iipaobj.* IOleInPlaceActiveObject iipframe.* IOleInPlaceFrame iipobj.* IOleInPlaceObject iipsite.* IOleInPlaceSite iipuiwin.* IOleInPlaceUIWindow ilockbyt.* ILockBytes imalloc.* IMalloc imarshal.* IMarshal imoniker.* IMoniker imsgfilt.* IMessageFilter iolecont.* IOleContainer ioleobj.* IOleObject iparsedn.* IParseDisplayName iperfile.* IPersistFile iperpbro.* IPerPropertyBrowsing iperstmi.* IPersistStreamInit iperstor.* IPersistStorage iperstrm.* IPersistStream iproppg.* IPropertyPage iproppg2.* IPropertyPage2 iproppsi.* IPropertyPageSite iprovinf.* IProvideClassInfo irunobj.* IRunnableObject isimpsit.* ISimpleFrameSite isppropp.* ISpecifyPropertyPages iunknown.* IUnknown iviewob2.* IViewObject2 iviewobj.* IViewObject LIB DIRECTORY Import and link libraries used by the samples. File Description -------------------------------------------- classmdi.lib Compilation of CLASSLIB for MDI inole.lib Import library for INOLE.DLL olesvr32.lib Import library for the OLE 1 DLL OLESVR32.DLL. This is included because the Win32 SDK and Visual C++ no longer include this library as OLE 1 on 32-bits is not supported. This file is necessary to compile CHAP18\COSMO1.0.