Annotation of mstools/mfc/samples/readme.txt, revision 1.1

1.1     ! root        1: ========================================================================
        !             2:       MICROSOFT FOUNDATION CLASS LIBRARY : EXAMPLE CODE
        !             3: ========================================================================
        !             4: 
        !             5: I. Introduction
        !             6: 
        !             7: This directory contains all of the Microsoft Foundation Class (MFC)
        !             8: library example programs, which highlight many object-oriented
        !             9: Windows programming techniques and class library features.  Each 
        !            10: example is a complete and functional program that explores
        !            11: different aspects of the library.
        !            12: 
        !            13: These programs are useful as learning tools, when used in conjunction
        !            14: with the MFC reference documentation.  You can take the code provided
        !            15: and experiment with it.  One group of sample programs, in the TUTORIAL
        !            16: subdirectory, supplements the MFC Tutorial and should be studied in
        !            17: conjunction with that document.
        !            18: 
        !            19: Each subdirectory has both PWB-compatible and NMAKE-compatible makefiles.
        !            20: The PWB makefiles can be identified by the .MAK file extension.  NMAKE
        !            21: makefiles are called 'makefile', with the exception of the TUTORIAL
        !            22: subdirectory (the difference is explained in TUTORIAL\README.TXT).
        !            23: 
        !            24: -----------------------------------------------------------------------
        !            25: Windows and C runtime libraries referenced by the makefiles should
        !            26: be installed as part of the NT setup.  These libraries can be found
        !            27: in \NT\MSTOOLS\LIB.
        !            28: -------------------------------------------------------------------------
        !            29: 
        !            30: II. Compiling sample programs with Microsoft NMAKE
        !            31: 
        !            32: To compile a sample program with NMAKE:
        !            33: 
        !            34: 1. Ensure you have the appropriate C runtime and Foundation
        !            35: runtime librarie   All MFC library variants necessary to build
        !            36: the samples are provided in binary form in MFC\LIB.
        !            37: 
        !            38: 
        !            39: 2. Ensure you have set up your LIB, INCLUDE, and PATH environment variables
        !            40: appropriately.  For example:
        !            41: 
        !            42:    set LIB=C:\NT\MSTOOLS\LIB
        !            43:    set INCLUDE=C:\NT\MSTOOLS\MFC\INCLUDE;C:\NT\MSTOOLS\H
        !            44:    set PATH=C:\NT\MSTOOLS\BIN;%PATH%
        !            45: 
        !            46: Remember you must put the MFC\LIB and MFC\INCLUDE directories in
        !            47: your LIB and INCLUDE paths, respectively, if you wish to compile
        !            48: Foundation applications.
        !            49: 
        !            50: Note: the NT linker does not interpret the LIB environment variable
        !            51: in the same way as other Microsoft linkers.  You should not specify a
        !            52: set of LIB directories -- only one directory.  The makefile interprets
        !            53: LIB, not the linker.  LIB should be set to point to one and only one
        !            54: directory -- the one containing the C runtime libraries and Windows
        !            55: import libraries.  The MFC library locations are specified by relative
        !            56: paths in MFC\SAMPLES\NTSAMPLE.MAK.
        !            57: 
        !            58: 
        !            59: 3. Change your working directory to the appropriate sample file 
        !            60: directory and invoke NMAKE.  
        !            61: 
        !            62: In most cases, invoking NMAKE with no arguments will compile and 
        !            63: link the retail version of that directory's sample application.  
        !            64: If you wish to build the debug version, specify 'DEBUG=1' on the 
        !            65: NMAKE command line.  If you want to remove object, compiled resource, 
        !            66: and executable files, specify the 'clean' target.  For example:
        !            67: 
        !            68:   cd \nt\mstools\mfc\samples\about2
        !            69:   nmake NTMFC=1                      ' creates retail version of about2.exe
        !            70:   nmake clean                 ' removes about2.exe/.obj/.res
        !            71:   nmake NTMFC=1 DEBUG=0              ' creates retail version of about2.exe
        !            72:   nmake clean                 ' removes about2.exe/.obj/.res
        !            73:   nmake NTMFC=1 DEBUG=1              ' creates debug version of about2.exe
        !            74: 
        !            75: You can also 'SET NTMFC=1' before running any of the nmakes.
        !            76: Object and resource files are created in the current directory.
        !            77: 
        !            78: Compilation procedures for the tutorial subdirectory are slightly
        !            79: different than is documented here.  See MFC\SAMPLES\TUTORIAL\README.TXT
        !            80: for more information.
        !            81: 
        !            82: NOTE: See technical note MFC\DOC\TN007.TXT for special information
        !            83: on setting up your Windows environment to handle Foundation library
        !            84: debugging output.
        !            85: 
        !            86: 
        !            87: -----------------------------------------------------------------------
        !            88: 
        !            89: III. Samples
        !            90: 
        !            91: Here is a list of the sample directories and an overview of their
        !            92: content.  See below for more detailed explanations
        !            93: 
        !            94:        ABOUT2      simple dialog box example.
        !            95:        CHART       a simple bar/line charting application.
        !            96:        CTRLTEST    a control test driver showing custom controls.
        !            97:        FILEVIEW    a simple text file viewer.
        !            98:        HELLO       basic application described in the MFC Tutorial.
        !            99:        HELLOAPP    an extremely simple MFC application.
        !           100:        MDI         demonstrates how to program to the MFC MDI interface.
        !           101:        MINMDI      a bare-bones MDI application.
        !           102:        MINSVR      a minimal OLE server application.
        !           103:        MINSVRMI    a minimal OLE server application with multiple inheritance.
        !           104:        MULTIPAD    an MDI NOTEPAD application.
        !           105:        OCLIENT     an example of an Object Linking and Embedding (OLE) client.
        !           106:        OSERVER     a simple OLE server application (called BIBREF)
        !           107:        RESTOOL     a simple non-Windows tool for Windows resources.
        !           108:        SHOWFONT    a font attribute viewer.
        !           109:        TEMPLDEF    a non-Windows tool for expanding C++ templates.
        !           110:        TRACER      a Windows utility to view and set diagnostic trace options.
        !           111:        TUTORIAL    source for tutorial examples.
        !           112: 
        !           113: -------------------------------------------------------------------------
        !           114: 
        !           115: ABOUT2\ABOUT2.EXE
        !           116: 
        !           117: This program is a re-implementation of the ABOUT program found in
        !           118: Charles Petzold's book, "Programming Windows"; it has been written
        !           119: using C++ and the Foundation classes.  ABOUT2 allows you to draw
        !           120: either a rectangle or an ellipse in one of several colors in the
        !           121: client area of a application main window.  The source code
        !           122: illustrates the following concepts:
        !           123: 
        !           124:     - Simple Foundation application structuring.
        !           125:     - Simple dialog box initialization and management.
        !           126:     - Graphics Device Interface (GDI) wrapper classes.
        !           127: 
        !           128: -------------------------------------------------------------------------
        !           129: 
        !           130: CHART\CHART.EXE
        !           131: 
        !           132: This program implements a simple bar/line charting application.
        !           133: You can enter a data set (list of integers), display the data in
        !           134: bar or line chart form, print the chart, save the data to disk, 
        !           135: and read in previously saved data.  The source code illustrates
        !           136: the following concepts:
        !           137: 
        !           138:     - Dialog box management.
        !           139:     - Document state management (dirty, clean).
        !           140:     - Using GDI calls to draw a graph to a device context.
        !           141:     - Using Foundation CFile and CArchive classes to save and
        !           142:       restore user data.
        !           143:     - Printing.
        !           144: 
        !           145: -------------------------------------------------------------------------
        !           146: 
        !           147: CTRLTEST\CTRLTEST.EXE
        !           148: 
        !           149: The main application (in DCONTROL.H, DCONTROL.CPP and DCONTROL.RC)
        !           150: provides a simple frame window with a single menu to drive the tests.
        !           151: This can be easily extended to drive additional tests.
        !           152: 
        !           153: All the examples are based off a the class CParsedEdit which
        !           154: is derived from the standard Windows CEdit class.  CParsedEdit
        !           155: provides a simple keyboard input filter to only allow numbers,
        !           156: letters, control characters, combinations of the above or any
        !           157: characters.
        !           158: 
        !           159: This sample also includes MUSCROLL.DLL, the "micro scrolling"
        !           160: custom control provided in the Windows 3.1 SDK, as well as tests
        !           161: for Pen Windows edit items (requires Windows for Pen).
        !           162: 
        !           163: The source code illustrates the following concepts:
        !           164: 
        !           165:        - example parsed edit control (CParsedEdit) derived from
        !           166:                the standard Windows CEdit class.
        !           167:        - bitmap buttons
        !           168:        - owner draw/self draw controls
        !           169:        - owner draw/self draw menus
        !           170:        - using C++ to create controls for a dialog using Create
        !           171:                member functions for the controls (not recommended,     
        !           172:                DERTEST.CPP, DERTEST.DLG)
        !           173:        - exporting custom controls and registering a new WndClass
        !           174:                so the controls can be used by the dialog manager
        !           175:                (the "PAREDIT" control class used in WCLSTEST.CPP
        !           176:                and WCLSTEST.DLG).  These controls can be edited with the
        !           177:                SDK dialog editor (DLGEDIT.EXE) as custom controls
        !           178:                by typing in the class name "PAREDIT" and the
        !           179:                hex representation of the PES_ styles.
        !           180:        - using SubclassWindow/SubclassDlgItem to dynamically
        !           181:                subclass a dialog control to add specialized behaviour
        !           182:                (SUBTEST.CPP, SUBTEST.DLG).
        !           183:        - example of an external control packed as a DLL (MUSCROLL.DLL)
        !           184:                being used by C++ code with a special C++ wrapper class.
        !           185:        - an example of a spin button using the external MUSCROLL.DLL.
        !           186:        - examples of Windows for Pen special edit controls
        !           187: 
        !           188:        more advanced topics:
        !           189:        - ON_CONTROL handler (in WCLSTEST.CPP responding to new
        !           190:                        control notification PEN_INVALIDCHAR).
        !           191:        - example of how style bits (PES_ style bits for the parsed
        !           192:                edit) can be stripped off before the normal CEdit
        !           193:                control is created.
        !           194: 
        !           195: The source code to this application should be read along with
        !           196: Foundation technical note 14 (MFC\DOC\TN014.TXT) describing
        !           197: custom controls and other topics.
        !           198: 
        !           199: 
        !           200: -------------------------------------------------------------------------
        !           201: 
        !           202: FILEVIEW\FILEVIEW.EXE
        !           203: 
        !           204: This program implements a simple text file viewer.  Unlike 
        !           205: Windows NotePad, this program places no limit on the size 
        !           206: of the text file that may be viewed.  This program is for
        !           207: viewing text files only, and not editing them.  The source code
        !           208: illustrates the following concepts:
        !           209: 
        !           210:     - Foundation application structuring.
        !           211:     - Use of the Foundation file classes as base
        !           212:       classes for derivation and specialization.
        !           213:     - Use of the GDI classes for graphical output.
        !           214:     - Use of Message Maps for handling window scrolling.
        !           215: 
        !           216: 
        !           217: -------------------------------------------------------------------------
        !           218: 
        !           219: HELLO\HELLO.EXE
        !           220: 
        !           221: Described in the MFC Tutorial, this application shows the basics of
        !           222: using the Microsoft Foundation Class Library to write applications
        !           223: for the Microsoft Windows environment.  This application creates and
        !           224: displays a fully-functional frame window, which in turn displays a
        !           225: text string in its center.  The source code illustrates the following
        !           226: concepts:
        !           227: 
        !           228:     - Simple Foundation application structuring.
        !           229:     - Integrating Windows resources with your application.
        !           230: 
        !           231: -------------------------------------------------------------------------
        !           232: 
        !           233: HELLOAPP\HELLOAPP.EXE
        !           234: 
        !           235: This is an extremely simple MFC application that simply creates a
        !           236: main frame window with the caption 'Hello World!'.  It is compiled
        !           237: using retail libraries only.
        !           238: 
        !           239: -------------------------------------------------------------------------
        !           240: 
        !           241: MDI\MDI.EXE
        !           242: 
        !           243: The MDI application demonstrates how to program to the MFC wrapper of 
        !           244: the Windows Multiple Document Interface (MDI) wrapper.  When started,
        !           245: the MDI application provides an MDI frame window, and two kinds of MDI
        !           246: child windows that you may open within the frame.  One child window
        !           247: is similar to the HELLO example program (it displays "Hello World"
        !           248: in its client area).  The other kind of child window contains a 
        !           249: bouncing ball.  The source code illustrates the following concepts:
        !           250: 
        !           251:     - Foundation MDI application structuring.
        !           252:     - Coordinating MDI frame and child classes.
        !           253:     - Using Windows timers.
        !           254:     - Using the CBitmap class for constructing and drawing a
        !           255:       bit pattern into a device context.
        !           256: 
        !           257: -------------------------------------------------------------------------
        !           258: 
        !           259: MINMDI\MINMDI.EXE
        !           260: 
        !           261: This is a bare-bones MDI application that concentrates on showing the
        !           262: minimum work needed to set up and maintain MDI child windows within
        !           263: an MDI frame window.  You can use this application as a starting point
        !           264: for your own experimentation with the MDI interface.  The source code
        !           265: illustrates the following concepts:
        !           266: 
        !           267:     - Foundation MDI application structuring.
        !           268:     - Coordinating MDI frame and child classes.
        !           269: 
        !           270: -------------------------------------------------------------------------
        !           271: 
        !           272: MINSVR\MINSVR.EXE
        !           273: 
        !           274: MINSVR is a minimal OLE server application that implements
        !           275: a graphical ellipse drawing.  When running MINSVR *directly* (from
        !           276: the program manager, file manager, or an icon), MINSVR is registered
        !           277: with the registration data base.  YOU MUST RUN MINSVR DIRECTLY before
        !           278: you can use it with other OLE programs.  Once you have run MINSVR
        !           279: directly, you can use it with OLE Clients where it provides basic
        !           280: embeddable object services.
        !           281: 
        !           282: The source code illustrates the following concepts:
        !           283: 
        !           284:     - Constructing a minimal OLE server
        !           285:     - Programming with the MFC OLE classes
        !           286:     - Supporting embedded objects
        !           287: 
        !           288: It is highly recommended that you read Foundation technical notes 8, 9,
        !           289: and 10 (MFC\DOC\TN008.TXT, etc.) for more information on the MFC OLE
        !           290: classes and constructing OLE clients and servers using MFC.
        !           291: 
        !           292: 
        !           293: -------------------------------------------------------------------------
        !           294: 
        !           295: MINSVRMI\MINSVRMI.EXE
        !           296: 
        !           297: MINSVRMI is a simple OLE server application that implements a
        !           298: graphical elliptical drawing.  It is the same program as MINSVR
        !           299: except it is implemented using multiple inheritance.  When MINSVRMI is
        !           300: *directly* run, it registers itself with the registration database. 
        !           301: YOU MUST RUN MINSVRMI directly before using it with other OLE
        !           302: programs.  When run from an OLE client, MINSVRMI allows you to embed
        !           303: objects in the client application's document.
        !           304: 
        !           305: The source code illustrates the following concepts:
        !           306: 
        !           307:     - Constructing a minimal OLE server
        !           308:     - Programming with the MFC OLE classes
        !           309:     - Using multiple inheritance with MFC and MFC OLE classes
        !           310:     - Supporting embedded objects
        !           311: 
        !           312: It is highly recommended that you read Foundation technical notes 8, 9,
        !           313: and 10 (MFC\DOC\TN008.TXT, etc.) for more information on the MFC OLE
        !           314: classes and constructing OLE clients and servers using MFC.
        !           315: 
        !           316: You should also read Foundation technical note 16 (MFC\DOC\TN016.TXT)
        !           317: for more information on MFC and multiple inheritance.
        !           318: 
        !           319: -------------------------------------------------------------------------
        !           320: 
        !           321: MULTIPAD\MULTIPAD.EXE
        !           322: 
        !           323: Microsoft Windows provides a simple application called NOTEPAD.  The
        !           324: MFC library adaptation of this program uses the MDI paradigm to allow
        !           325: the user to manipulate any number of concurrently open text files. 
        !           326: MULTIPAD is fully functional and includes printing support as well as
        !           327: other features usually found only in commercial Windows applications:
        !           328: a status bar at the bottom of the window, and a cache of
        !           329: most-recently-used filenames (saved between program invocations) so
        !           330: that users may quickly access recently used documents.  The source
        !           331: code illustrates the following concepts:
        !           332: 
        !           333:     - Non-trivial MDI application structuring.
        !           334:     - Menu command dispatching.
        !           335:     - Dialog box initialization and management.
        !           336:     - Printing.
        !           337:     - Porting existing Windows code for use with MFC.
        !           338:     - Swap tuning an application for Windows for maximum efficiency.
        !           339: 
        !           340: 
        !           341: -------------------------------------------------------------------------
        !           342: 
        !           343: OCLIENT\OCLIENT.EXE
        !           344: 
        !           345: OCLIENT is an example of an Object Linking and Embedding (OLE) client
        !           346: application.  It uses the Foundation OLE classes.  This program is a port
        !           347: of the OLEDEMOC program which is shipped by the Microsoft OLE Software
        !           348: Development Kit.  The program allows you to insert both embedded and
        !           349: linked objects into a document.  OCLIENT also allows you to perform both
        !           350: file and clipboard operations on the objects as well as activate the
        !           351: servers to which the objects belong. The source code illustrates the
        !           352: following concepts:
        !           353: 
        !           354:     - OLE client programming using MFC
        !           355:     - Inserting embedded objects into a client
        !           356:     - Pasting linked and embedded objects into a client
        !           357:     - Copying objects to the clipboard
        !           358:     - Loading and saving objects to and from disk
        !           359: 
        !           360: It is highly recommended that you read Foundation technical notes 8, 9,
        !           361: and 10 (MFC\DOC\TN008.TXT, etc.) for more information on the MFC OLE
        !           362: classes and constructing OLE clients and servers using MFC.
        !           363: 
        !           364: -------------------------------------------------------------------------
        !           365: 
        !           366: OSERVER\BIBREF.EXE
        !           367: 
        !           368: BIBREF is a simple OLE server application that implements
        !           369: bibliographical references.  When BIBREF is *directly* run, it
        !           370: registers itself with the registraton database and allows you to add,
        !           371: modify, and delete bibliographical references from a list maintained
        !           372: by the application.  YOU MUST RUN BIBREF DIRECTLY before using it
        !           373: with other OLE programs.  When run from an OLE client, BIBREF allows
        !           374: you to embed objects containing these references in the client
        !           375: application's document.
        !           376: 
        !           377: The source code illustrates the following concepts:
        !           378: 
        !           379:     - Constructing an OLE server
        !           380:     - Programming with the MFC OLE classes
        !           381:     - Supporting embedded objects
        !           382: 
        !           383: It is highly recommended that you read Foundation technical notes 8, 9,
        !           384: and 10 (MFC\DOC\TN008.TXT, etc.) for more information on the MFC OLE
        !           385: classes and constructing OLE clients and servers using MFC.
        !           386: 
        !           387: 
        !           388: -------------------------------------------------------------------------
        !           389: 
        !           390: RESTOOL\RESTOOL.EXE
        !           391: 
        !           392: RESTOOL is a simple non-Windows application that reads a Microsoft
        !           393: Windows compiled resource (.RES) file and generates C++ class
        !           394: declarations for any dialog boxes found in the resource file.
        !           395: This allows you to quickly put together MFC CDialog-derived classes
        !           396: that manipulate dialog boxes you already use in existing applications.
        !           397: 
        !           398: RESTOOL's output must be reviewed before using (RESTOOL uses some
        !           399: heuristics that are not universally applicable) and you must put the 
        !           400: generated code into a proper C++ header file.  The source code
        !           401: illustrates the following concepts:
        !           402: 
        !           403:     - Using MFC libraries to write a non-Windows application.
        !           404:     - Microsoft Windows resource file format.
        !           405: 
        !           406: 
        !           407: -------------------------------------------------------------------------
        !           408: 
        !           409: SHOWFONT\SHOWFONT.EXE
        !           410: 
        !           411: This program is a C++/Foundation adaptation of a sample application
        !           412: provided in the Microsoft Windows 3.0 Software Development Kit (SDK).
        !           413: SHOWFONT is a font attribute viewer.  It allows you to quickly
        !           414: determine the visual and logical characteristics of Windows GDI FONT
        !           415: resources.  The source code illustrates the following concepts:
        !           416: 
        !           417:     - Modal and modeless dialog box management.
        !           418:     - CFont attribute manipulation.
        !           419:     - Menu command dispatching.
        !           420: 
        !           421: 
        !           422: -------------------------------------------------------------------------
        !           423: 
        !           424: TEMPLDEF\TEMPLDEF.EXE
        !           425: 
        !           426: TEMPLDEF is a non-Windows tool that helps you write and use 
        !           427: template-like classes.  Templates are a proposed (but not established)
        !           428: C++ language feature that are very useful for industrial-strength
        !           429: programming.  The MFC library's collection classes use template
        !           430: classes (and the tool provided in this directory) to create specific
        !           431: collection types from general collection types.
        !           432: 
        !           433: The C++ language will someday support such features, but this tool
        !           434: makes some of these proposed advantages available now.  TEMPLDEF
        !           435: reads a "template" file, and writes a new C++ class which is
        !           436: type-safe.
        !           437: 
        !           438: After you have built the templdef tool, you can use the MKCOLL.BAT
        !           439: batch file and the array, list, and map template files (all in the
        !           440: TEMPLDEF subdirectory) to generate your own versions of arrays,
        !           441: lists, and maps.
        !           442: 
        !           443: For more information on the templdef tool, see MFC Technical Note #4,
        !           444: "Template Classes and AFX" (located in MFC\DOC\TN004.TXT).  For more
        !           445: information on proposed C++ templates, see Chapter 14 of "The Annotated
        !           446: C++ Reference Manual," by Ellis and Stroustrup.
        !           447: 
        !           448: 
        !           449: 
        !           450: -------------------------------------------------------------------------
        !           451: 
        !           452: TRACER\TRACER.EXE
        !           453: 
        !           454: TRACER is a tiny Windows utility that allows you to view and set the 
        !           455: Foundation Windows diagnostic trace option flags described in 
        !           456: MFC\DOC\TN007.TXT.  The source code illustrates the following concepts:
        !           457: 
        !           458:     - Reading and writing Windows profile strings
        !           459:     - Writing a Foundation application that uses a modal dialog
        !           460:       box but does not use the regular Windows/MFC message pump.
        !           461: 
        !           462: 
        !           463: -------------------------------------------------------------------------
        !           464: 
        !           465: TUTORIAL\PHBOOK.EXE
        !           466: 
        !           467: PHBOOK is a phone list maintenance application, and is the subject
        !           468: of the MFC tutorial.  PHBOOK allows you to create, edit, print and
        !           469: save lists of people's names and their telephone numbers.  In addition
        !           470: to MFC application programming techniques, this application demonstrates 
        !           471: the development of an abstract data model and the coupling of that
        !           472: data model to a graphical user interface implemented with MFC.  See
        !           473: TUTORIAL\README.TXT for more information on building this application.
        !           474: The source code illustrates the following concepts:
        !           475: 
        !           476:     - MFC Application organization.
        !           477:     - Printing.
        !           478:     - Dialog box management.
        !           479:     - Coupling an abstract data model to a user interface.
        !           480:     - Using MFC object serialization (CArchive class) to save
        !           481:       and load user data.
        !           482: 
        !           483: -------------------------------------------------------------------------

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.