home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / contents.txt < prev    next >
Text File  |  1995-05-09  |  38KB  |  985 lines

  1. ===========================================================
  2.            INSIDE OLE BY KRAIG BROCKSCHMIDT
  3.                     COMPANION DISC
  4.        COPYRIGHT (C) 1995 BY KRAIG BROCKSCHMIDT
  5. ===========================================================
  6.  
  7. This file describes the contents of the directories found on the
  8. sample CD.  For complete information about individual source
  9. code files, consult the comments in the files themselves.
  10.  
  11.  
  12. ROOT DIRECTORY ON CD
  13. ----------------------
  14.  
  15.     CODE\*.*        Contains the sample code tree, which should
  16.                     be copied to C:\INOLE.
  17.  
  18.     16BITOLE.WRI    "Notes Concerning 16-Bit OLE" describing
  19.     16BITOLE.RTF    differences between the book text, which is
  20.                     written for 32-bit OLE, and 16-bit OLE.
  21.  
  22.     APPA.WRI        Appendix A, "An Introduction to C++"
  23.     APPA.RTF        Which supplements Chapters 1 and 2 for C
  24.                     programmers who need a familiarity with C++
  25.                     to read this book effectively.
  26.  
  27.     APPB.WRI        "The Details of Standard Marshaling," a
  28.     APPB.RTF        supplement to Chapter 6.
  29.  
  30.  
  31.     BUILD.TXT       Details about the sample code build process.
  32.     CONTENTS.TXT    This file you are now reading.
  33.     ERRATA.TXT      Corrections to the printed text.
  34.     README.TXT      Read this first!
  35.  
  36.     SETUP.EXE       The setup program that will copy the sample
  37.     SETUP.INI       code to your machine from the CD.
  38.     SETUP.TXT
  39.  
  40.  
  41.  
  42. INSTALLATION DIRECTORY FOR SAMPLE CODE:
  43. ----------------------------------------
  44.  
  45. COMMON FILES THAT OCCUR IN MANY DIRECTORIES
  46.  
  47.  
  48.     File            Description
  49.     --------------------------------------------
  50.     about.dlg       Dialog template for About box
  51.  
  52.     client.cpp      Client-area object code for samples based on
  53.                     CLASSLIB (primarily Cosmo, Component Cosmo,
  54.                     and Patron)
  55.  
  56.     <sample>.ico    Program icon
  57.     <sample>.rc     Resources for the sample
  58.  
  59.     document.cpp    Document window object code for all samples based on
  60.                     CLASSLIB (primariliy Cosmo, Component Cosmo,
  61.                     and Patron)
  62.  
  63.     document.ico    Document window icon for MDI samples based on
  64.                     CLASSLIB (primariliy Cosmo, Component Cosmo,
  65.                     and Patron)
  66.  
  67.     gizmo120.bmp    Toolbar images for 120dpi
  68.     gizmo72.bmp     Toolbar images for 72dpi
  69.     gizmo96.bmp     Toolbar images for 96dpi
  70.  
  71.     makeall.bat     Build script for everything in the given
  72.                     directory and in all subdirectories.
  73.     makefile        Makefile
  74.  
  75.     precomp.cpp     Source file to pull in the right header file
  76.                     for making a precompiled header.
  77.  
  78.     resource.h      Definitions of resource identifiers.
  79.  
  80.     win16.def       16-bit module definitions
  81.     win16.def       16-bit registry information
  82.  
  83.     win32.def       32-bit module definitions
  84.     win32.def       32-bit registry information
  85.  
  86.  
  87.  
  88.  
  89. ROOT DIRECTORY
  90.  
  91.     File            Description
  92.     --------------------------------------------
  93.     inole-a.mak     Definitions of symbols, compiler flags,
  94.                     linker flags, and makefile rules.
  95.     inole-b.mak     Linker scripts
  96.     makeall.bat     Global build script
  97.     mksamp1.bat     Default script for building an MDI or SDI
  98.                     sample, depending on the SDI environment variable.
  99.     mksamp2.bat     Default script for building a simple sample
  100.     mksamp3.bat     Default script for building a simple sample in
  101.                     a second-level directory (one deeper than mksamp2.bat)
  102.  
  103.  
  104.  
  105. BUILD DIRECTORY
  106.  
  107.     Binary EXE and DLL files for all the samples.  INOLE.DLL is
  108.     the most important, which should be in your PATH when attempting
  109.     to run most of the book's samples.
  110.  
  111.  
  112.  
  113. COSMO SAMPLES IN VARIOUS DIRECTORIES
  114.  
  115.     Cosmo is a sample intended to show how you can convert
  116.     Windows API-based application features into OLE-based
  117.     features, and serves as the primary example for compound
  118.     document content objects.  It evolves throughout the book
  119.     as decsribed below:
  120.  
  121.     Directory           Description
  122.     --------------------------------------
  123.     CHAP01\COSMO        Fully functional version of Cosmo written
  124.                         entirely with the Windows API using no OLE
  125.                         whatsoever.
  126.  
  127.     CHAP07\COSMO        File I/O is convered to use Compound Files.
  128.  
  129.     CHAP12\COSMO        Clipboard code is converted to use the OLE
  130.                         clipboard protocol and data objects.
  131.  
  132.     CHAP13\COSMO        Adds OLE Drag & Drop
  133.  
  134.     CHAP14\COSMO        Adds OLE Automation support to the entire
  135.                         application (this chapter's sample is based on
  136.                         Chapter 12's version)
  137.  
  138.     CHAP18\COSMO        Adds OLE Documents support for embedding,
  139.                         using Chapter 13's version as a base (to avoid
  140.                         complicating the scene with OLE Automation).
  141.                         Cosmo is a server for a gaphical "Figure" type
  142.                         of content.
  143.  
  144.     CHAP21\COSMO        Adds OLE Documents support for linking,
  145.                         improving on Chapter 18's sample.
  146.  
  147.     CHAP23\COSMO        Adds in-place activation support to the
  148.                         Chapter 21 sample
  149.  
  150.  
  151.     CHAP18\COSMO1.0     Cosmo's 1.0 version, which supported
  152.                         OLE Documents using OLE version 1.  Not
  153.                         fully supported under 32-bit.  Provided
  154.                         only as an example for conversion and
  155.                         emulation as described in OLE1.WRI.
  156.  
  157.  
  158.  
  159.     COSMO SOURCE FILES
  160.     ------------------
  161.  
  162.     This table lists Cosmo's specific files (excluding those
  163.     that were listed as "common" above), the chapter where the
  164.     file first appears, and the purpose of that file.
  165.  
  166.                 Appears
  167.     File        in chapter:     Description
  168.     ----------------------------------------------------------
  169.     cosmo.cpp       1           Frame window handling for cosmo.
  170.                                 Also receives the IOleInPlaceFrame
  171.                                 code in Chapter 23.
  172.     cosmo.h         1           Main header file
  173.  
  174.     document.cpp    1           Document object code, implements
  175.                                 IOleInPlaceUIWindow in Chapter 23.
  176.  
  177.     polyline.cpp    1           Object code for Polyline window
  178.                                 class, where the figure is drawn
  179.     polyline.h      1           Polyline's header file
  180.     polywin.cpp     1           Polyline's window procedure
  181.  
  182.     dropsrc.cpp     13          Implementation of drop source object
  183.                                 for OLE Drag & Drop
  184.     droptgt.cpp     13          Implementation of drop target object
  185.                                 for OLE Drag & Drop
  186.  
  187.     iclassf.cpp     14,18       Implementation of Cosmo's class factory
  188.                                 object.  It appears in Chapter 14 for
  189.                                 OLE Automation.  A different one appears
  190.                                 in Chapters 18 and beyond for OLE Documents.
  191.  
  192.     cosmole.h       18          Header file for OLE Documents specifics.
  193.  
  194.     figure.cpp      18          The "embedded" or "linked" content object
  195.                                 implementatation that wraps the Polyline
  196.                                 code into a "Figure" content object.
  197.  
  198.     idataobj.cpp    18          IDataObject implementation for the Figure.
  199.     ioleobj.cpp     18          IOleObject implementation for the Figure.
  200.     iperstor.cpp    18          IPersistStorage implementation for the
  201.                                 Figure.
  202.  
  203.     iperfile.cpp    21          IPersistFile implementation for the Figure
  204.                                 to support linking.
  205.  
  206.     iipaobj.cpp     23          IOleInPlaceActiveObject implementation for
  207.                                 the Figure's in-place activation.
  208.     iipobj.cpp      23          IOleInPlaceObject implementation for
  209.                                 the Figure's in-place activation.
  210.  
  211.  
  212.     These appear only in Chapter 14:
  213.     -----------------------------------
  214.     autoapp.cpp     "Application" object code for OLE Automation
  215.     autobase.cpp    Base class implementation used for all OLE Automation
  216.                     objects in autoapp.cpp, autofig.cpp, and autofigs.cpp.
  217.     autofig.cpp     "Figure" object code for OLE Automation
  218.     autofigs.cpp    "Figures" collection object code for OLE Automation
  219.     cosmo000.odl    Cosmo's ODL script defining its OLE Automation
  220.                     interfaces.
  221.  
  222.  
  223.  
  224.  
  225. COMPONENT COSMO SAMPLES IN VARIOUS DIRECTORIES
  226.  
  227.     Component Cosmo is a variation of Cosmo which uses a
  228.     COM-based version of a Polyline object, which is an internal
  229.     C++ class in Cosmo.  It evolves in a similar vein to
  230.     Cosmo throughout the early part of the book as decsribed below:
  231.  
  232.     Directory           Description
  233.     --------------------------------------
  234.     CHAP05\COCOSMO      First manifestration of Component Cosmo
  235.                         in the chapter where Polyline is first made
  236.                         a COM component.  Communication between
  237.                         CoCosmo and Polyline happens through a
  238.                         custom interface as well as connection points.
  239.  
  240.     CHAP08\COCOSMO      Uses IPersist* interfaces to save and load
  241.                         Polyline data instead of custom interface
  242.                         members.
  243.  
  244.     CHAP10\COCOSMO      Uses IDataObject to exchange data with the
  245.                         Polyline object instead of custom interface
  246.                         members.
  247.  
  248.     CHAP12\COCOSMO      Converts existing clipboard support to use
  249.                         the OLE Clipboard.
  250.  
  251.     CHAP13\COCOSMO      Adds OLE Drag & Drop.
  252.  
  253.     There are no revisions of Component Cosmo after this, although
  254.     a README.TXT in the COCOSMO directory of chapters 19, 21, 23,
  255.     and 24 describe simple modifications to make CoCosmo work with
  256.     later versions of Polyline.
  257.  
  258.  
  259.     COCOSMO SOURCE FILES
  260.     --------------------
  261.  
  262.     This table lists Component Cosmo's specific files (excluding those
  263.     that were listed as "common" above), the chapter where the
  264.     file first appears, and the purpose of that file.
  265.  
  266.                 Appears
  267.     File        in chapter:     Description
  268.     ----------------------------------------------------------
  269.     cocosmo.cpp     5           Frame object code
  270.     cocosmo.h       5           Main application header file
  271.     iadvsink.cpp    10          Implementation of a simple object
  272.                                 with IAdviseSink to receive data
  273.                                 change notifications from the Polyline.
  274.  
  275.     dropsrc.cpp     13          Implementation of drop source object
  276.                                 for OLE Drag & Drop
  277.     droptgt.cpp     13          Implementation of drop target object
  278.                                 for OLE Drag & Drop
  279.  
  280.  
  281.  
  282.  
  283. POLYLINE SAMPLES IN VARIOUS DIRECTORIES
  284.  
  285.     Polyline begins life in Chapter 5 as a COM object that is
  286.     broken out of Cosmo.  Instead of being an internal C++ object,
  287.     Polyline becomes a COM object with a custom interface, and
  288.     over time we add more interfaces to the object, eventually
  289.     making it into a compound document content object and a
  290.     partial OLE Control.  Various manifestations of Component
  291.     Cosmo use versions of this sample, which evolves as described
  292.     in the table below:
  293.  
  294.  
  295.     Directory           Description
  296.     --------------------------------------
  297.     CHAP05\POLYLINE     First manifestation of Polyline which implements
  298.                         a custom interface IPolyline5, as well as
  299.                         connection point support for its own notification
  300.                         set, IPolylineAdviseSink5.
  301.  
  302.     CHAP08\POLYLINE     Persistence support removed from IPolyline5
  303.                         which now becomes IPolyline8, and added through
  304.                         IPersistStorage and IPersistStreamInit.
  305.  
  306.     CHAP10\POLYLINE     Data exchange support removed from IPolyline8
  307.                         which now becomes IPolyline10, and added through
  308.                         IDataObject and support for sending data changes
  309.                         through IAdviseSink.
  310.  
  311.     CHAP19\POLYLINE     Adds support for OLE Documents embedding with
  312.                         the interfaces IOleObject, IRunnableObject,
  313.                         IViewObject2, and those necessary for caching.
  314.  
  315.     CHAP21\POLYLINE     Adds support for a container's linking to
  316.                         embedding feature, which means handling
  317.                         monikers and implementing IExternalConnection.
  318.  
  319.     CHAP23\POLYLINE     Adds in-place activation support with
  320.                         IOleInPlaceObject and IOleInPlaceActive object,
  321.                         and is marked OLEMISC_ACTIVATEWHENVISIBLE.
  322.  
  323.     CHAP24\POLYLINE     Becomes a partial OLE Control with IOleControl
  324.                         and IDispatch, and supports its own property page.
  325.  
  326.  
  327.     POLYLINE SOURCE FILES
  328.     ----------------------
  329.  
  330.     This table lists Polyline's specific files (excluding those
  331.     that were listed as "common" above), the chapter where the
  332.     file first appears, and the purpose of that file.
  333.  
  334.  
  335.                 Appears
  336.     File        in chapter:     Description
  337.     ----------------------------------------------------------
  338.     dllpoly.cpp     5           LibMain[32] and initialization code.
  339.     iconnpt.cpp     5           Connection point support
  340.     ipolylin.cpp    5           Implementation of custom IPolyline*
  341.                                 interfaces
  342.     polyline.cpp    5           Core of object code
  343.     polyline.h      5           Main header file
  344.     polywin.cpp     5           Window procedure for the Polyline
  345.                                 editing window
  346.     iperstmi.cpp    8           Implementation of IPersistStreamInit
  347.     iperstor.cpp    8           Implementation of IPersistStorage
  348.     idataobj.cpp    10          Implementation of IDataObject
  349.     irunobj.cpp     19          Implementation of IRunnableObject
  350.     iviewobj.cpp    19          Implementation of IViewObject2
  351.     ioleobj.cpp     19          Implementation of IOleObject
  352.     iextconn.cpp    21          Implementation of IExternalConnection
  353.     iipaobj.cpp     23          Implementation of IOleInPlaceActiveObject
  354.     iipobj.cpp      23          Implementation of IOleInPlaceObject
  355.     control.cpp     24          Code related to being an OLE Control,
  356.                                 including IOleControl and IDispatch
  357.                                 interfaces.
  358.     ipoly.h         24          MKTYPLIB-generated header for interfaces
  359.                                 needed for being an OLE Control, including
  360.                                 Polyline's event set.
  361.     polyline.odl    24          ODL script for all interfaces including the
  362.                                 event set.
  363.  
  364.  
  365.  
  366.  
  367. PATRON SAMPLES IN VARIOUS DIRECTORIES
  368.  
  369.     Patron is a sample intended to show how you can build a new
  370.     application entirely with OLE features, serving to show new
  371.     OLE code (instead of converted Windows API code), and becomes
  372.     the primary example of a container for compound document
  373.     content objects and OLE Controls.  It evolves throughout the
  374.     book as decsribed below:
  375.  
  376.     Directory           Description
  377.     --------------------------------------
  378.     CHAP01\PATRON       Skeletal version of Patron that does almost
  379.                         nothing useful whatsoever.
  380.  
  381.     CHAP07\PATRON       Adds file I/O capabilities using Compound Files.
  382.  
  383.     CHAP12\PATRON       Adds clipboard handling and support for static
  384.                         content on a page using the OLE Clipboard and
  385.                         the OLE data cache.
  386.  
  387.     CHAP13\PATRON       Adds OLE Drag & Drop
  388.  
  389.     CHAP17\PATRON       Adds OLE Documents container support for
  390.                         embedding.
  391.  
  392.     CHAP20\PATRON       Adds OLE Documents container support for
  393.                         linking.
  394.  
  395.     CHAP21\PATRON       Adds OLE Documents support for linking
  396.                         to embeddings, where Patron becomes a
  397.                         server for embedded objects within it,
  398.                         demonstrating complex moniker binding.
  399.  
  400.     CHAP22\PATRON       Adds in-place activation container support.
  401.  
  402.     CHAP24\PATRON       Adds partial support for OLE Controls,
  403.                         specifically support for event handling.
  404.  
  405.  
  406.  
  407.     PATRON SOURCE FILES
  408.     ------------------
  409.  
  410.     This table lists Patron's specific files (excluding those
  411.     that were listed as "common" above), the chapter where the
  412.     file first appears, and the purpose of that file.
  413.  
  414.                 Appears
  415.     File        in chapter:     Description
  416.     ----------------------------------------------------------
  417.     page.cpp        1           Code for a single "page" object.
  418.     pagemous.cpp    1           Mouse-event handlers for a page.
  419.     pages.cpp       1           Manages the collection of pages
  420.                                 in a document.
  421.     pages.h         1           Definitions of the pages collection and
  422.                                 the page object class.
  423.     pagewin.cpp     1           Windows procedure for the pages
  424.                                 collection.
  425.     patron.cpp      1           Frame object code, also IOleInPlaceFrame
  426.                                 implementation in Chapter 23.
  427.     patron.h        1           Main application header file.
  428.     print.cpp       1           Printer-specific code, kept out of the
  429.                                 way from everything else.
  430.     print.dlg       1           Print dialog template.
  431.  
  432.     tenant.cpp      12          "Tenant" class implenentation, where each
  433.                                 tenant is one piece of content or object
  434.                                 on a page.  This becomes the site object
  435.                                 for OLE Documents and OLE Controls.
  436.  
  437.     dragdrop.cpp    13          Internal helper functions for Drag & Drop.
  438.     dropsrc.cpp     13          Implementation of drop source object
  439.                                 for OLE Drag & Drop
  440.     droptgt.cpp     13          Implementation of drop target object
  441.                                 for OLE Drag & Drop
  442.  
  443.     iadvsink.cpp    17          Implementation of IAdviseSink for tenants.
  444.     iclisite.cpp    17          Implementation of IOleClientSite for tenants.
  445.     tenant.h        17          Header information for tenants, broken
  446.                                 out from pages.h
  447.  
  448.     iuilink.cpp     20          Implementation of IOleUILinkContainer for
  449.                                 use with the Links dialog.
  450.  
  451.     iclassf.cpp     21          Class factory object for linking to
  452.                                 embeddings.
  453.     iolecont.cpp    21          Implementation of IOleItemContainer
  454.                                 for both the document and the page objects,
  455.                                 needed to support linking.
  456.     iperfile.cpp    21          Implementation of IPersistFile for linking.
  457.  
  458.     iipsite.cpp     22          Implementation of IOleInPlaceSite for
  459.                                 the tenant and in-place activation
  460.     iipuiwin.cpp    22          Implementation of IOleInPlaceUIWindow for
  461.                                 the document and in-place activation
  462.  
  463.     ambients.cpp    24          Implementation of IDispatch for
  464.                                 ambient properties.
  465.     connect.cpp     24          Code to connect to a control's event
  466.                                 set and retrieve its type information
  467.     events.cpp      24          Code for handling arbitrary events and
  468.                                 the events dialog.
  469.     events.dlg      24          Dialog template for assigning actions
  470.                                 to events.
  471.     iconsite.cpp    24          Implementation of IOleControlSite
  472.  
  473.  
  474.  
  475.  
  476.  
  477. CHAPTER BY CHAPTER DIRECTORIES
  478.  
  479.     Specific descriptions of many source files are not given for the
  480.     simple samples, as those are described in the book text in detail.
  481.  
  482.  
  483. CHAPTER 1 DIRECTORIES
  484.  
  485.     Sample          Description
  486.     -----------------------------------------
  487.     COSMO           See above
  488.     PATRON          See above
  489.  
  490.  
  491.  
  492. CHAPTER 2 DIRECTORIES
  493.  
  494.     Sample          Description
  495.     -----------------------------------------
  496.     ENUMRECT        Demonstration of enumerator objects
  497.     MALLOC1         C program demonstrating OLE's memory allocation service
  498.     MALLOC2         C++ program demonstrating OLE's memory allocation service
  499.     QUERY           Demonstration of the implementation of IUnknown and
  500.                     three techniques for implementing multiple interfaces.
  501.     REUSE           Demonstraton of object reusability through
  502.                     containment and aggregation.
  503.  
  504.  
  505.  
  506. CHAPTER 3 DIRECTORIES
  507.  
  508.     Has no samples
  509.  
  510.  
  511.  
  512. CHAPTER 4 DIRECTORIES
  513.  
  514.     Sample          Description
  515.     -----------------------------------------
  516.     CONNECT         Demonstration of connection points
  517.  
  518.  
  519.  
  520.  
  521. CHAPTER 5 DIRECTORIES
  522.  
  523.     Sample          Description
  524.     -----------------------------------------
  525.     COCOSMO         See above
  526.     POLYLINE        See above
  527.     DKOALA1         Demonstration of a simple in-process component
  528.     DKOALA2         Demonstration of a simple in-process component
  529.                     that supports self-registration
  530.     DKOALA3         Demonstration of a simple in-process component
  531.                     that supports licensing
  532.  
  533.     EKOALA1         Demonstration of a simple out-of-process component
  534.     EKOALA2         Demonstration of a simple out-of-process component
  535.                     that supports self-registration
  536.  
  537.     OBJUSER         Client for DKoala1 and EKoala1
  538.     LICUSER         Client for DKoala3
  539.     SELFREG         Driver for self-registering components, for use
  540.                     with DKoala2 and EKoala2
  541.  
  542.  
  543. CHAPTER 6 DIRECTORIES
  544.  
  545.     Sample          Description
  546.     -----------------------------------------
  547.     EKOALA3         Simple out-of-process component that demonstrates
  548.                     message handling.
  549.     EKOALA4         Simple component that implements two custom
  550.                     interfaces, IAnimal and IKoala, using standard
  551.                     marshaling.
  552.  
  553.     EKOALA5         Simple component that implements custom interfaces
  554.                     using custom marshaling.
  555.     KOALAPRX        Custom marshaling proxy object for EKoala5
  556.  
  557.     IANIMAL         Standard marshaling interface for IAnimal
  558.     IKOALA          Standard marshaling interface for IKoala
  559.  
  560.     OBJUSER2        Client for EKoala3 that demonstrates message
  561.                     handling and the Busy dialog.
  562.  
  563.     OBJUSER3        Client for EKoala4 and EKoala5 to prove that
  564.                     a client doesn't care about how marshaling is
  565.                     carried out.
  566.  
  567.  
  568.  
  569. CHAPTER 7 DIRECTORIES
  570.  
  571.     Sample          Description
  572.     -----------------------------------------
  573.     COSMO           See above
  574.     FRAGMENT        Demonstration of the built-in defragmentation
  575.                     capabilities of Compound Files.
  576.     PATRON          See above
  577.  
  578.  
  579. CHAPTER 8 DIRECTORIES
  580.  
  581.     Sample          Description
  582.     -----------------------------------------
  583.     COCOSMO         See above
  584.     POLYLINE        See above
  585.  
  586.  
  587. CHAPTER 9 DIRECTORIES
  588.  
  589.     Sample          Description
  590.     -----------------------------------------
  591.     IDESCRIP        Standard marshaling interface for IDescription
  592.     LINKSRC         A source for linked data that demonstrates
  593.                     complex moniker binding, using IDescription to
  594.                     communicate with LinkUser.
  595.     LINKUSER        A client for LinkSource that binds monikers to
  596.                     an IDescription interface and displays text.
  597.  
  598.  
  599.  
  600. CHAPTER 10 DIRECTORIES
  601.  
  602.     Sample          Description
  603.     -----------------------------------------
  604.     COCOSMO         See above
  605.     POLYLINE        See above
  606.  
  607.     DATAUSER        Client for DDataObj and EDataObj, demonstrating
  608.                     data retrieval and handling of data change
  609.                     notifications.
  610.  
  611.     DDATAOBJ        In-process data object implementation
  612.     EDATAOBJ        Out-of-process data object implementation identical
  613.                     to DDataObj useful for comparing performance.
  614.  
  615.     RES             Resources shared between DDataObj and EDataObj.
  616.     TARGDEV         Sample source file for target device structure
  617.                     handling in OLE's DVTARGETDEVICE and FORMATETC
  618.                     structures.
  619.  
  620. CHAPTER 11 DIRECTORIES
  621.  
  622.     Sample          Description
  623.     -----------------------------------------
  624.     FREELOAD        Demonstration of using OLE's Data Cache to display,
  625.                     store, and retrieve bitmaps and metafiles.
  626.  
  627.  
  628. CHAPTER 12 DIRECTORIES
  629.  
  630.     Sample          Description
  631.     -----------------------------------------
  632.     COSMO           See above
  633.     COCOSMO         See above
  634.  
  635.     DATATRAN        A "Data Transfer" Component that is used in the
  636.                     Cosmo and Patron samples from here through the end
  637.                     of the book.  It acts as a data store for use with
  638.                     data exchange protocols like the cliboard and
  639.                     OLE Drag & Drop.
  640.  
  641.     PATRON          See above
  642.  
  643.  
  644.  
  645. CHAPTER 13 DIRECTORIES
  646.  
  647.     Sample          Description
  648.     -----------------------------------------
  649.     COSMO           See above
  650.     COCOSMO         See above
  651.     PATRON          See above
  652.  
  653.  
  654. CHAPTER 14 DIRECTORIES
  655.  
  656.     Sample          Description
  657.     -----------------------------------------
  658.     BEEPER1         Variation I on a simple automation object
  659.  
  660.     BEEPER2         Variation II on a simple automation object,
  661.                     with support for type information
  662.  
  663.     BEEPER3         Variation III on a simple automation object,
  664.                     with support for error objects
  665.     BEEPER3A        A correction to Beeper3, see ERRATA.TXT
  666.  
  667.     BEEPER4         Variation III on a simple automation object,
  668.                     demonstrating dual interfaces.
  669.  
  670.     BEEPER5         Variation III on a simple automation object,
  671.                     demonstrating OLE's standard dispatch object.
  672.  
  673.     BEEPHELP        Shared help files in English and German for
  674.                     all the Beeper objects
  675.  
  676.     BEEPTEST
  677.       DISPTEST      DispTest/VB3 test script for Beeper objects
  678.       NEWVB         Same test script for later versios of VB
  679.  
  680.     COSMO           See above
  681.     COSMOTST
  682.       DISPTEST      DispTest/VB3 test script for Cosmo's Automation
  683.                     implementation
  684.       NEWVB         Same test script for later versios of VB
  685.  
  686.  
  687.  
  688. CHAPTER 15 DIRECTORIES
  689.  
  690.     Sample          Description
  691.     -----------------------------------------
  692.     AUTOCLI         OLE Automation controller for the Beeper objects
  693.                     of Chapter 14.
  694.  
  695.     SQUARE          Another demonstration OLE Automation object called
  696.                     the SphereSquare.
  697.     VBSQUARE
  698.       NEWVB         Script to drive SphereSquare, for versions of
  699.                     VB after 3.0.
  700.  
  701.  
  702. CHAPTER 16 DIRECTORIES
  703.  
  704.     Sample          Description
  705.     -----------------------------------------
  706.     AUTOCLI2        OLE Automation controller for Beeper6 that will
  707.                     display property pages and implements
  708.                     IPropertyNotifySink.
  709.  
  710.     BEEPER6         A Beeper object that supports a property page
  711.                     (BEEPPROP) and IPropertyNotifySink as an outgoing
  712.                     interface.
  713.  
  714.     BEEPPROP        The property page for Beeper6
  715.  
  716. CHAPTER 17 DIRECTORIES
  717.  
  718.     Sample          Description
  719.     -----------------------------------------
  720.     PATRON          See above
  721.  
  722.  
  723. CHAPTER 18 DIRECTORIES
  724.  
  725.     Sample          Description
  726.     -----------------------------------------
  727.     COSMO           See above
  728.     COSMO1.0        OLE 1.0 version of Cosmo for demonstration of
  729.                     conversion and emulation.
  730.  
  731.  
  732. CHAPTER 19 DIRECTORIES
  733.  
  734.     Sample          Description
  735.     -----------------------------------------
  736.     COCOSMO         Contains a README.TXT
  737.     HCOSMO          An in-process handler for Chapter 18's Cosmo.
  738.     POLYLINE        See above
  739.  
  740.  
  741. CHAPTER 20 DIRECTORIES
  742.  
  743.     Sample          Description
  744.     -----------------------------------------
  745.     LNKASSIS        Helper component for a container's dealings with
  746.                     the Links dialog
  747.     PATRON          See above
  748.  
  749.  
  750. CHAPTER 21 DIRECTORIES
  751.  
  752.     Sample          Description
  753.     -----------------------------------------
  754.     COSMO           See above
  755.     COCOSMO         Contains a README.TXT
  756.     POLYLINE        See above
  757.     PATRON          See above
  758.  
  759.  
  760. CHAPTER 22 DIRECTORIES
  761.  
  762.     Sample          Description
  763.     -----------------------------------------
  764.     PATRON          See above
  765.  
  766.  
  767. CHAPTER 23 DIRECTORIES
  768.  
  769.     Sample          Description
  770.     -----------------------------------------
  771.     COCOSMO         Contains a README.TXT
  772.     POLYLINE        See above
  773.     COSMO           See above
  774.  
  775.  
  776. CHAPTER 24 DIRECTORIES
  777.  
  778.     Sample          Description
  779.     -----------------------------------------
  780.     COCOSMO         Contains a README.TXT
  781.     PATRON          See above
  782.     POLYLINE        See above
  783.     POLYPROP        Property page implementation for Polyline
  784.  
  785.  
  786. CHAPTER 25 DIRECTORIES
  787.  
  788.     Has no samples
  789.  
  790.  
  791.  
  792.  
  793.  
  794. CLASSLIB DIRECTORY
  795.  
  796.     CLASSLIB is a framework for the Patron, Cosmo, Component Cosmo,
  797.     and Freeloader samples, as well as a library of classes used
  798.     by the Polyline samples.  This is not a very robust or well
  799.     tested framework and should not be used for your own development
  800.     efforts.  It is primarily used to keep the various samples
  801.     clean of Windows code, so you can concentrate on more OLE code.
  802.  
  803.     CLASSLIB is statically linked.
  804.  
  805.  
  806.     File            Description
  807.     -----------------------------------------
  808.     about.dlg       Default dialog template for About box
  809.     app.ico         Defaul program icon
  810.     cclient.cpp     Client are object base class implementation
  811.     cdocumnt.cpp    Document object base class implementation
  812.     cframe.cpp      Frame object base class implementation
  813.     chatch.cpp      Hatch window class used for in-place activation
  814.                     samples.
  815.     chourgls.cpp    CHourglass class to control the hourglass cursor.
  816.     classlib.h      Library header file.
  817.     classlib.rc     Default resources
  818.     classres.h      Resource identifiers
  819.     cstatlin.cpp    Framework wrapper for the status line control
  820.                     in INOLE.DLL (see below)
  821.     cstrtabl.cpp    String table class for managing resource strings.
  822.     ctoolbar.cpp    Framework wrapper for the toolbar control
  823.                     in INOLE.DLL (see below)
  824.     cwindow.cpp     Base window class for other classes
  825.     document.ico    Default document icon
  826.     docwin.cpp      Document window procedure
  827.     framewin.cpp    Frame window procedure
  828.     stdgz120.bmp    Default 120dpi toolbar images
  829.     stdgz72.bmp     Default 72dpi toolbar images
  830.     stdgz96.bmp     Default 96dpi toolbar images
  831.  
  832.  
  833.     SKEL DIRECTORY
  834.  
  835.         Test program for CLASSLIB that contains only a WinMain.
  836.  
  837.  
  838.  
  839. INC DIRECTORY
  840.  
  841.     Common header files used by multiple samples
  842.  
  843.  
  844.     File            Description
  845.     --------------------------------------------
  846.     book1632.h      Macros to hide 16/32 bit differences
  847.     bookguid.h      Definition of GUIDs used in chapter samples
  848.     bttncur.h       Used by INOLE.H
  849.     classlib.h      Definition of CLASSLIB classes
  850.     classres.h      Default resource identifiers for CLASSLIB samples
  851.     dbgout.h        Debugging output macros
  852.     gizmobar.h      Used by INOLE.H
  853.     ianim16.h       16-bit header for IAnimal interface used by
  854.                     Chapter 6 samples
  855.     ianimal.h       32-bit header for IAnimal interface used by
  856.                     Chapter 6 samples
  857.     idescrip.h      32-bit header for IDescription interface used
  858.                     by Chapter 9 samples
  859.     ikoala.h        16-bit header for IKoala interface used by
  860.                     Chapter 6 samples
  861.     ikoala16.h      32-bit header for IKoala interface used by
  862.                     Chapter 6 samples
  863.     inole.h         Header file used by nearly all samples that
  864.                     includes book1632.h, bookguid.h, classlib.h
  865.                     and classres.h (on demand), windows.h, ole2.h
  866.                     (and others, on demand), and oledlh.h or ole2ui.h
  867.                     (on demand).
  868.     ipoly5.h        Definition of IPolyline5 interface for Chapter 5
  869.     ipoly8.h        Definition of IPolyline8 interface for Chapter 8
  870.     ipoly10.h       Definition of IPolyline10 interface for Chapter 10
  871.                     as well as Chapters 12, 13, 19, 21, 23, and 24.
  872.     stastrip.h      Used by INOLE.H
  873.  
  874.  
  875.  
  876. INOLE DIRECTORY
  877.  
  878.     Utilities and helper function library for various samples.
  879.     This code builds INOLE.DLL.
  880.  
  881.     File            Description
  882.     --------------------------------------------
  883.     ansi.cpp        ANSI to Unicode wrappers for OLE APIs
  884.     bttncur.c       Code for handling toolbar images
  885.     bttncuri.h      Internal header for bttncur.c
  886.     cursors.c       Code for handling extra cursors
  887.     gizmo.c         Code for handling a toolbar
  888.     gizmoapi.c      Code for handling a toolbar
  889.     gizmobar.c      Code for handling a toolbar
  890.     gizmoint.h      Internal header for gizmo*.*
  891.     helpers.cpp     Miscellaneous helper functions for the samples
  892.     inole.cpp       LibMain[32] and library initialization
  893.     inole.rc        Library resources
  894.     inoledll.h      Internal header for INOLE.DLL
  895.     stastrip.c      Code for handling a status line control
  896.     statint.h       Internal header for the status line
  897.     uieffect.cpp    Functions for generating UI effects
  898.                     such as shading and hatching.
  899.     xform.cpp       Functions to transforms between HIMETRIC and other
  900.                     coordinate systems.
  901.  
  902.     RES DIRECTORY
  903.         Contains standard cursor and toolbar bitmap resources
  904.         for the INOLE library.
  905.  
  906.  
  907.  
  908. INTERFAC DIRECTORY
  909.  
  910.     Template interface implementations for those you may need in
  911.     your work.  Those interfaces that are normally not implemented
  912.     on custom objects are not included.
  913.  
  914.  
  915.     Files           Interface
  916.     ---------------------------------------------
  917.     iadvsink.*      IAdviseSink
  918.     iadvsnk2.*      IAdviseSink2
  919.     iclassf.*       IClassFactory
  920.     iclassf2.*      IClassFactory2
  921.     iclisite.*      IOleClientSite
  922.     iconnpt.*       IConnectionPoint
  923.     iconnptc.*      IConnectionPointContainer
  924.     iconsite.*      IOleControlSite
  925.     icontrol.*      IOleControl
  926.     idataobj.*      IDataObject
  927.     idispat.*       IDispatch
  928.     idropsrc.*      IDropSource
  929.     idroptgt.*      IDropTarget
  930.     ienumcon.*      IEnumConnections
  931.     ienumcp.*       IEnumConnectionPoints
  932.     ienumfe.*       IEnumFORMATETC
  933.     ienumstr.*      IEnumString
  934.     ienumunk.*      IEnumUnknown
  935.     ienumvrb.*      IEnumOLEVERB
  936.     iextconn.*      IExternalConnection
  937.     iipaobj.*       IOleInPlaceActiveObject
  938.     iipframe.*      IOleInPlaceFrame
  939.     iipobj.*        IOleInPlaceObject
  940.     iipsite.*       IOleInPlaceSite
  941.     iipuiwin.*      IOleInPlaceUIWindow
  942.     ilockbyt.*      ILockBytes
  943.     imalloc.*       IMalloc
  944.     imarshal.*      IMarshal
  945.     imoniker.*      IMoniker
  946.     imsgfilt.*      IMessageFilter
  947.     iolecont.*      IOleContainer
  948.     ioleobj.*       IOleObject
  949.     iparsedn.*      IParseDisplayName
  950.     iperfile.*      IPersistFile
  951.     iperpbro.*      IPerPropertyBrowsing
  952.     iperstmi.*      IPersistStreamInit
  953.     iperstor.*      IPersistStorage
  954.     iperstrm.*      IPersistStream
  955.     iproppg.*       IPropertyPage
  956.     iproppg2.*      IPropertyPage2
  957.     iproppsi.*      IPropertyPageSite
  958.     iprovinf.*      IProvideClassInfo
  959.     irunobj.*       IRunnableObject
  960.     isimpsit.*      ISimpleFrameSite
  961.     isppropp.*      ISpecifyPropertyPages
  962.     iunknown.*      IUnknown
  963.     iviewob2.*      IViewObject2
  964.     iviewobj.*      IViewObject
  965.  
  966.  
  967.  
  968. LIB DIRECTORY
  969.  
  970.     Import and link libraries used by the samples.
  971.  
  972.  
  973.     File            Description
  974.     --------------------------------------------
  975.     classmdi.lib    Compilation of CLASSLIB for MDI
  976.  
  977.     inole.lib       Import library for INOLE.DLL
  978.  
  979.     olesvr32.lib    Import library for the OLE 1 DLL
  980.                     OLESVR32.DLL.  This is included because
  981.                     the Win32 SDK and Visual C++ no longer
  982.                     include this library as OLE 1 on 32-bits
  983.                     is not supported.  This file is necessary
  984.                     to compile CHAP18\COSMO1.0.
  985.