README.TXT
File Viewer 
 
 
SUMMARY 
======= 
 
The FILEVIEW sample demonstrates the basic steps to implement a simple 
text-based file viewer. This particular sample is a viewer for text files, 
those with the .TXT extension, as well as any compound file with the CLSID 
of CLSID_SampleTextFile, defined as 0x00021116-0000-C000-000000000046. 
The files FLATTEXT.TXT and COMPTEXT.TXT are two such files. 
 
If you build the sample viewer and register it via the FVTEXT.REG file, 
you will be able to use the sample viewer. Note that the system has 
a .TXT file viewer installed by default. To disable the default viewer, 
rename the vsasc8.dll file in the system\viewers subdirectory or edit 
FVTEXT.REG and change the .TXT extension to another extension not 
supported by QuickView, like XXX, and then use text files with the XXX 
extension. 
 
You can build the sample using Microsoft NMAKE. Be aware that building the 
sample produces a DLL. Once this DLL is registered, clicking with the right 
mouse button on one of the .TXT (XXX) files will display a context menu. 
Within this context menu, you will see the QuickView option. If you click on 
this menu item, the sample file viewer will be invoked. 
 
MORE INFORMATION 
================ 
 
This sample was designed to require only small amounts of modification 
to build a custom viewer and the areas where you would need to make 
changes are clearly marked in the source code. The FileViewer component  
object itself used CLSID_FileViewerText:0x00021117-0000-C000-000000000046.   
Do not use this CLSID yourself! You will need to create your own unique  
CLSID using the GUIDGEN.EXE utility that comes with the SDK.  
 
This sample builds FVTEXT.DLL and places it in the  
C:\WINDOWS\SYSTEM\VIEWERS directory. You need to create a different name 
for your own Viewer and use your particular system path. Rename the  
following files to your custom name and make the indicated filename changes  
within those files.  
 
Files        Description 
 
FVTEXT.CPP   Main source file. Change occurrences of FVTEXT to your own  
             name. 
FVTEXT.CPP   Contains the CFileViewer object implementation, where most of 
             the significant code is. There is not much in this file but 
             the CFileViewer member functions. Most of the functions will 
             require modification, depending on the type of viewer you 
             plan to implement. For the most part, most of the functions and 
             fields in CFileViewer need no modification. Those specific  
             places needing modification are marked with MODIFY. 
FVTEXT.DEF   Module definition file. Change the LIBRARY and DESCRIPTION  
             lines to match your implementation. NOTE: You must export 
             DllGetClassObject and DllCanUnloadNow. 
FVTEXT.H     Main object header file. Change occurrences of FVTEXT to your 
             own name. 
 
             It is MOST IMPORTANT that you not use the CLSIDs defined here. 
             These are strictly for use with this sample. Use the SDK tool 
             GUIDGEN.EXE to generate your own unique CLSIDs. 
FVTEXT.ICO   Icon to use for FileViewer window. Use your own icon. 
FVTEXT.RC    Resources. Change the FVTEXT in the header and the references  
             to fvtext.ico and fvtext.rcv to your own names. 
FVTEXT.RCV   Version information. Change FVTEXT in the header to your own  
             name. 
FVTEXT.REG   Registry information for the FileViewer. Change the  
             InprocServer32 entry (the last line) to your own DLL name.  
             Change the extension from CPP to the extension you are  
             supporting. 
MAKEFILE     This is an external makefile for use with NMAKE. It is not a 
             Visual C++ project file. In general, you will have to change  
             the following macros definitions for a custom viewer: 
 
             Macro           Location    Use 
 
             DEFFILE         Line 24     Indicates your .DEF file 
             TARGET          Line 42     Indicates the name of the  
                                         FileViewer. MAKEFILE assumes you  
                                         have .CPP, .H, .RC, .RCV, and .ICO  
                                         files with this name and are  
                                         building a .DLL with this name. 
 
             The dependency list at the bottom of the file should not need  
             any modifications unless you rename other files or add new  
             files. If you add new files, add them to the OBJS macro at  
             line 58. 
CSTATHLP.CPP Definition and implementation of a class called CStatusHelper  
CSTATHLP.H   that simplifies WM_MENUSELECT processing. To utilize this  
             object, create one and call its MessageMap function (see  
             CSTATHLP.CPP for documentation). You can then call its  
             MenuSelect function to handle all WM_MENUSELECT messages. You  
             can also ask CStatusHelper to display a specific message in  
             the message map by calling MessageDisplay. You pass an  
             identifier of the message in the message map and the  
             CStatusHelper will go locate the string and display it. 
CSTRTABL.CPP Definition and implementation of a CStingTable class that 
CSTRTABL.H   simplifies stringtable management. 
DBGOUT.H     Contains a number of macros that help keep source code clean  
             when including debug output and conditional code. 
IFILEVW.CPP  Implements the IFileViewer interface required of a FileViewer 
             using a class CImpIFileViewer (defined in FVTEXT.H). You should 
             not have to make any changes to this file. The IUnknown members 
             are delegated to CFileViewer's IUnknown implementation. 
IPERFILE.CPP Implements the IPersistFile interface for a FileViewer using 
             the class CImpIPersistFile. 
FILEVIEW.CPP 
FILEVIEW.H   The master header file for the entire sample that most of the 
             .CPP files include. It pulls in the other header files  
             necessary for the specific viewer. In this sample, it brings in  
             FVTEXT.H and RESOURCE.H. Your FileViewer should have a  
             different name, so you'll want to change the reference to  
             FVTEXT.H. 
FVPROC.CPP   Contains the window procedures for the frame window, the  
             viewport window, and the about box. ViewportWndProc is what  
             generates the display of the file. This will require major  
             modifications depending on what you plan to do.