|
|
1.1 root 1: =======================================================================
2: MICROSOFT (R) FOUNDATION CLASSES
3: =======================================================================
4:
5: ***********************************************************************
6: *** for Microsoft Windows (R) NT (tm) ***
7: ***********************************************************************
8:
9: BETA RELEASE 1
10:
11: This is the Beta Release of the Microsoft (R) Foundation Classes for
12: Microsoft Windows NT. ENJOY! Release notes can be found at
13: the end of this file.
14:
15:
16: -----------------------------------------------------------------------
17:
18: This subdirectory contains the source code and example code for
19: the Microsoft Foundation Class (MFC) C++ library. The MFC library is
20: a C++ Application Framework designed primarily for use in developing
21: applications for Microsoft Windows. The MFC library is used in
22: conjunction with the tools provided with the NT beta release.
23:
24: The MFC library consists of two groups of classes. One set is
25: designed for use with Microsoft Windows and includes classes
26: tailored for GUI application programming, such as classes for
27: windows, dialogs, controls, and menus. The other classes
28: are a set of lower level, non-graphical, general purpose classes
29: designed to make it easier to write the part of your application
30: that is independent of the user interface, and includes classes
31: supporting collections, files, memory management, and
32: runtime support. The Windows classes take advantage of the
33: features provided by these general purpose classes.
34:
35: The MFC library is designed to be efficient in both space
36: and time. There is a minimal execution time overhead, and
37: the entire library, all 60 classes, is under 39K of executable code.
38:
39: A complete introduction to the MFC library can be found in the
40: Overview section of the "Class Reference" book.
41:
42:
43: Windows Classes
44: ---------------
45: Microsoft Windows and C++ are "object-oriented" and the MFC
46: library exploits the Windows operating environment. The Windows
47: C++ classes offer the following features:
48:
49: o Robust Application Framework for Windows
50: o Tight coupling to the Windows API
51: o Significant reduction in API "surface area"
52: o Complete classes for nearly all Windows objects
53: o Efficient processing of Windows messages with message maps
54: o Customizable window classes using C++ inheritance
55: o Utility classes to make Windows programming easier
56:
57: The Windows classes can be used in conjunction with all the standard
58: Windows APIs and can easily incorporate existing Windows code. In
59: addition, the MFC Windows classes provide a seamless migration to
60: the forthcoming 32-bit Windows API.
61:
62:
63: General Purpose Classes
64: -----------------------
65: The general purpose classes are useful both with and without Windows.
66: If you are writing a program that does not use Windows, you can
67: still take advantage of the MFC library for your application's
68: user interface independent code. All of the features are optional
69: and will incur no runtime overhead if you choose not to use them. The
70: general purpose C++ classes include the following features:
71:
72: o Common base class for many classes
73: o Runtime type and metaclass support
74: o Persistent objects
75: o Collection classes based on ANSI C++ template syntax
76: o String class
77: o Time and Date classes
78: o File classes
79: o Exception handling based on ANSI C++ syntax
80: o Diagnostic and debugging support
81:
82:
83: Support for Windows 3.1 features
84: --------------------------------
85: The Microsoft Foundation classes provide support for the
86: enhancements provided in Windows version 3.1. The following
87: features are described in technical notes in the
88: \NT\MSTOOLS\MFC\DOC directory and demonstrated in sample programs in
89: \NT\MSTOOLS\MFC\SAMPLES. These API functions are documented only in
90: the Help system. The following list describes the enhancements
91: that can be used to develop applications for both Windows 3.0
92: and Windows 3.1.
93:
94: o The development and use of custom controls is supported. In
95: addition, owner draw controls and bitmap buttons are provided.
96: See TN014.TXT and the sample application CTRLTEST.
97:
98: o To improve robustness, the Microsoft Foundation Class Library
99: fully supports the STRICT data types defined in the Windows 3.1
100: interface file, WINDOWS.H.
101:
102: o Common dialog operations are now supported with easily
103: customized classes including CFileDialog (for both File Open
104: and File Save As), CFindReplaceDialog (to implement modeless
105: find and replace), CColorDialog (for color selection),
106: CPrintDialog (for both print setup and print), and
107: CFontDialog (for font selection). These new dialogs are
108: described in TN013.TXT.
109:
110: o Dialog boxes now feature a gray background which is easily
111: customized.
112:
113: o OLE servers now register themselves at startup so that
114: users do not need to use REGEDIT.EXE.
115:
116: o Using multiple inheritance with Microsoft Foundation
117: classes is demonstrated in the sample application MINSVRMI,
118: a small OLE server that uses multiple inheritance.
119:
120: o For applications that target Windows 3.1 only, the Microsoft
121: Foundation Class Library supports the most useful new Windows
122: 3.1 API functions and messages.
123:
124:
125: Why use the Microsoft Foundation library instead of C and the SDK?
126: ------------------------------------------------------------------
127: The MFC library has many advantages over using the traditional
128: C techniques in the Microsoft Software Development Kit for Windows.
129: Some of these advantages include:
130:
131: o MFC decreases the API surface area; the SDK is a catalog of
132: hundreds of functions, whereas the MFC library takes advantage
133: of the inheritance and polymorphism supported by C++ to organize
134: the Windows APIs in a logical and manageable manner.
135:
136: o MFC provides a standard Windows application startup; the
137: MFC class CWinApp implements the functionality normally provided
138: in WinMain.
139:
140: o MFC encapsulates Windows behavior; the class structure
141: and data encapsulation supported by C++ safely hides many
142: of the details that programmers need not concern themselves
143: with.
144:
145: o MFC handles many details of Windows programming; gone are
146: the days of registering Window classes or MakeProcInstance.
147:
148: o MFC provides a object-oriented mechanism for routing
149: Windows messages; the message map supported by each window
150: C++ class provides a cleaner and less error prone mechanism for
151: handling the mapping of Windows messages to member functions.
152: Messages, commands, and notifications can be handled in this
153: object-oriented manner.
154:
155: o MFC taps the power of C++. C++ supports many features that
156: make writing programs easier, such as type safety, encapsulation,
157: inheritance, and polymorphism, that when used in conjunction with
158: MFC provides the best technique for writing Windows programs
159: in C++.
160:
161:
162: Usage
163: -----
164: Source code is provided so that you can build the library target
165: that you require. The file SRC\README.TXT contains instructions for
166: building the library.
167:
168: Before using the MFC library in your own code be sure that the
169: MFC\INCLUDE subdirectory is in your INCLUDE environment variable.
170:
171:
172: Subdirectories
173: --------------
174: The MFC subdirectory contains several subdirectories. Nearly every
175: subdirectory contains a README.TXT file that describes the
176: directory's contents. The following subdirectories are present:
177:
178: DOC\ - MFC technical notes describing implementation details.
179: INCLUDE\ - MFC header files.
180: SRC\ - MFC source files and instructions for building a library.
181: LIB\ - MFC libraries in binary form.
182: SAMPLES\ - MFC sample applications.
183:
184:
185: Documentation
186: -------------
187: The NT release of the MFC library ships with both on-line Quickhelp
188: documentation only. No MFC printed documentation is available with this
189: release, but the printed MFC documentation provided with the Microsoft
190: C/C++ 7.0 compiler can be used 'as-is'.
191:
192: If you have any comments or suggestions regarding the Microsoft
193: Foundation Classes, please let Microsoft know through the beta program
194: liaison.
195:
196:
197: NOTE
198: ----
199:
200: The Microsoft Foundation Classes (MFC) library source code is
201: shipped "as is" and is designed for your own use and modification.
202: Microsoft Product Support can only offer limited support regarding
203: the MFC source code because of this benefit.
204:
205: Microsoft grants you a non-exclusive royalty-free right to use and
206: modify the source code contained in any Microsoft Foundation Classes
207: source code file for purposes of creating a software product.
208: However, you may not include this code in source form (or
209: any modified version of it) within any software product.
210:
211: Notwithstanding the Microsoft End User License Agreement, THIS SOURCE
212: CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. YOU AGREE THAT
213: NEITHER MICROSOFT NOR ANYONE ELSE INVOLVED IN CREATING, PRODUCING OR
214: DELIVERING THE SOURCE CODE SHALL BE LIABLE FOR ANY DIRECT, INDIRECT,
215: CONSEQUENTIAL, OR INCIDENTAL DAMAGES RELATING TO THE SOURCE CODE.
216:
217:
218: Windows NT Release Notes:
219: -------------------------
220:
221: -- This beta release is a strict superset of the Microsoft C/C++ 7.0 release
222: of MFC. Any applications written for the MFC C++ Windows API will
223: need only be recompiled using the 32 bit tools in this release in order
224: to run in full 32 bit mode. For those familiar with MFC, you will
225: note that the sample applications included in this release are
226: unchanged from the 16 bit release. This release of MFC can be used
227: interchangeably with the Microsoft C/C++ 7.0 release.
228:
229: -- In order to build the MFC sample applications you should have your
230: environment set as follows:
231: set NTMFC=1
232: set LIB=c:\mstools\lib (note this is not a ';' list)
233: set INCLUDE=c:\mstools\mfc\include;c:\mstools\h
234: These may also be set on the NMAKE command lines if you wish. If your
235: installation is on another drive or in another directory, then you
236: should change c:\nt\mstools accordingly.
237:
238: NOTE: THE INCLUDE PATH ESTABLISHED BY THE NT SDK SETUP PROGRAM WILL
239: NOT WORK FOR MFC COMPILES. BEFORE COMPILING MFC CODE YOU MUST CHANGE
240: THE INCLUDE PATH AS DESCRIBED ABOVE.
241:
242: -- The MFC\INCLUDE directory for this release contains copies of the
243: Windows NT header files. The copies have several modifications made
244: in order to make them more consistent with C++ and the Windows 3.1
245: header files. This is only for this beta release and these changes
246: will be folded into the header files in MSTOOLS\H for the next release.
247: You must use these in order to successfully build the MFC library or
248: any MFC sample applications.
249:
250: -- Your PATH must include the Windows SDK Tools and Microsoft C/C++.
251:
252: -- Online documentation is available via QuickHelp (QH.EXE). The .HLP
253: files are located on the CD-ROM in MSTOOLS\HELP\QH. You must copy
254: the help files and the QuickHelp application (QH.EXE) from the CD-ROM
255: to your target hard disk yourself -- the NT SDK setup program will not
256: install Quickhelp documentation.
257:
258: Windows WinHelp files for MFC are not currently available.
259:
260: -- This beta release of MFC does not include DLL support.
261:
262: -- Do not use the /Zp switch for MFC applications. If you do some system
263: calls may not work (such as COMMDLG).
264:
265: -- The COFF linker emits a warning when it does not extract any modules
266: from a .LIB. The MFC sample applications will emit this warning which can
267: be ignored.
268:
269: -- You may experience problems printing with the sample applications that
270: print.
271:
272: -- The CHART sample application currently has several low level compiler
273: warnings that can be ignored. These will be addressed.
274:
275: -- The MULTIPAD sample application currently has an inconsistency with the
276: way it maintains the file MRU menu items. This will be fixed.
277:
278: -- The retail version of the MULTIPAD sample may fault on exit. This
279: will be fixed in a future release.
280:
281: -- The "self-draw" control functionality for custom menu items (demonstated
282: in the CTRLTEST sample application) currently behaves inconsistently.
283: This will be fixed.
284:
285: -- The MINSVRMI sample application may fault. This will be fixed.
286:
287: -- CListBox::FindStringExact and CComboBox::FindStringExact do not
288: work correctly. This will be fixed.
289:
290: -- Debugging C++ applications is quite "challenging" with this release. We
291: recommend the liberal use of trace statements and { _asm int 3 } lines
292: in your code. The NTSD debugger does not currently permit the setting
293: of breakpoints on C++ member functions. If you have global functions
294: that are not overloaded, then using the extern "C" construct will prevent
295: name decoration and permit the setting of breakpoints. If all else fails,
296: you can always debug your MFC application using C/C++ 7.0
297: on a machine running CodeView 4.0 and Windows 3.1. The C++ expression
298: evaluator for WinDebug will be made available as soon as practical.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.