Overview of Windows 95 File Viewing
-----------------------------------

The Explorer is the centralized shell tool in which the end user will
browse through information on the file system and the network under
Windows 95.  One of the features of the Explorer is the ability to
quickly view the contents of a file without having to run the full
application that created it and without even requiring the presence of
that application.  In order to view file contents, the end user selects
one or more files in the Explorer and chooses the "Quick View" menu
item from the context menu of that selection or from the
Explorer's File menu.

In response, the Explorer will invoke file-specific viewers for each
selected file, using the class identifier (an OLE 2 CLSID) of the file to
determine which viewer to invoke if the file is an OLE 2 compound file.
Otherwise Explorer uses the extension of the file to determine which
viewer to use.  A file viewer associates itself with file classes and
extensions in the system registry.

A file viewer, referred to in this document as a FileViewer, is an OLE 2
component object (not a compound document object) implemented inside an
in-process server DLL which itself is associated with the FileViewer's
CLSID.  These components are responsible for providing all the top-level
user interface for viewing a file including menu items, toolbar, and
status bar as described in the FileViewer User Interface Guidelines.

The FileViewer objects themselves, which are separate from the class
factory objects in their respective in-process servers, implement the
standard OLE 2 interface IPersistFile as well as a new interface called
IFileViewer.  The Explorer itself does not interact directly with
FileViewer objects--instead, the Explorer launches an instance of a
small program called QVStub (Quick View Stub, a Windows EXE but not a
full application) for each file to view that serves to define a process,
with its own message queue, for each FileViewer.  QVStub is responsible
for associating a pathname with a FileViewer, instantiating that
FileViewer object, and instructing it to load the file and display it
for viewing.

Because a FileViewer is an OLE 2 component object, additional interfaces
and functionality can be added later in future versions of Windows to
support new and interesting features.  For example, the FileViewer can
act as an OLE 2 container application and in-place activate embedded
objects inside the displayed file.  It could allow the end user to
make a selection in the document and copy it to the clipboard or source
it in a drag & drop operation.  But such functionality is entirely up to
the implementor of the FileViewer component.
