Preface
The 15 chapters in this book present you with a sequence of MFC topics, sample MFC pro-grams and activities. It is my conviction that if you carefully read the topics, study the programs, and do a reasonable number of the suggested exer-cises (yes, practice is necessary), then in about two months time you will feel comfortable writing win-dows programs in C++.
Prerequisites
Since this book does not cover C++, programming logic, and common algorithms, I assume that you already have a certain minimum level of program-ming experience, and a fairly sound knowledge of C++. Specifically, if you have had a 15-week pro-gramming course using C++ where you have used arrays, structures, and have created a few classes, I think that will constitute an appropriate amount of experience.
One of the wildcard factors in learning C++ windows programming is the extent to which you simply enjoy the activity of programming. If you can sit and concentrate for three, four, or five hours working on a problem, then I think your success can be guaranteed. You definitely cannot dabble in MFC and expect any results.
The Genesis of this Book
Over the last four years I have taught windows pro-gramming (both Win32 programming and MFC programming) in a variety of contexts using at least five different textbooks. These books have ranged from 1300-page encyclopedias to 570 pages of App-Wizard- generated code. In each class I would invari-ably have handouts consisting of sample programs and diagrams.
Not content with the available instructional material, I pulled together my "class handouts" dur-ing the winter break of '98-'99, and wrote a 70-page, spiral-bound manual that contained 28 short and simple MFC programsI still like the title: "Getting a Grip on MFC."
The program listings were positioned on the right-hand side pages with accompanying discussion of programs on the preceding left-hand page. Since the page size was 8.5"x11", a good amount of pro-gram code and remarks could be put onto facing pages. This particular layout allowed the reader to gain a perspective on the entire program, and it also let the reader to focus on specific parts of the program.
For my students, this booklet proved to have the right balance of program examples and discussion. I believe that a program illustrating a concept is much better than a page of text that describes a concept.
That booklet was the genesis of this book.
Topic Sequence Is Important
Beside the many short, easy-to-understand program examples, another major organizational feature of the book is the sequence in which topics are introduced. When a new topic is introduced, you will have been adequately prepared for that topic by the presentation of previous topics. We elaborate on this shortly.
You might think that all books would subscribe to such a presentation sequence. But MFC is such a big subject, deciding where to start and what to cover next is not evident.
Notable Features of this Book
What are the distinctive features of this book? How does it differ from other MFC books?
Preparation for New Topics
Before you see the first MFC windows program in Chapter 4, you will learn about various MFC classes in the familiar "console application" setting.
This way, when you get to Chapter 4, much of the code in the first program there will be familiar to you. Now all you will be expected to do is focus on the one new conceptmessage maps.
- In Chapter 1, you study the MFC utility objects in console applications before they are used in the first windows program in Chapter 4. MFC utility objects are used everywhere in windows programs.
- Virtual functions are very common in MFC windows programs. In Chapter 2 we study a console program that uses a virtual function BurnFuel() in precisely the same way MFC uses them. Now, when you see your first MFC virtual function in Chapter 4 InitInstance() you will not be mystified.
- In Chapter 3, we illustrate the use of MFC collection class objects in console applications. Again, when you next see these objects in windows applications, you will feel more comfortable with them, because of your previous experience.
- In Chapter 8, we first introduce the AppWizard and ClassWizard. At that point, you have a good number of MFC concepts "under your belt" and are ready to focus on seeing how these Wizards can help you.
- Chapter 14 pulls "all the parts" together into programs with both the "document" and "view" architecture. At this point, you are ready to embrace the "document" concept because since Chapter 6 we have been encouraging you to write object-oriented programswhere your entire application is a class object. For example, see program Ex06i. Here the application object is the CTextLines object, Text.
More than 90 Program Examples
By doing you will learn. For that reason, there are more than 90 short, easy-to-understand programs on the accompanying CD. Most of these are described in the text, and were created specifically so you could practice modifying them.
Diagrams
There are many relationships involved in windows programs. This book has many diagrams that will help you picture various relationships and activity.
How to Use This Book in a C++ Course Sequence
Before this past year, I had felt that presenting "MFC programming"in say, a software engineering courseconstituted an interruption to the main flow of the course. In effect, "Let's put a hold on the important stuff we are doing now, because I now want to show you a few things that will make your programs look better."
But I finally realized that MFCas an object-oriented systemcould be incorporated into the course and be used as a tool for teaching object-oriented programming concepts. So here are my suggestions where this book might be used as an important supplement in the common, introductory, two-semester course sequence.
The First C++ Programming CourseAll Programs Are Console Applications
- The utility classes in Chapter 1 make great examples of classes that students can use before they write their own. Problems abound: Given 100 randomly generated CPoint objects, find the two points that are closest together.
- Parts of Chapter 2 can be covered when classes are introduced.
- Parts of Chapter 3 can be used after arrays have been discussed. Other parts of Chapter 3 can be used if pointers are covered in the first course.
The Second CourseWhere Data Structures Is Commonly The Primary Topic
Suppose parts of Chapters 1, 2, and 3 are covered in the first course.
- Then, if only Chapters 4, 5, and 6 are covered in this second course, students will be prepared to write a wide range of challenging window applications.
- The remaining chapters of the book might be left for students to read on their own.
Richard M. Jones
[email protected] [email protected]