Mastering Visual C++ 6, Third Edition
By Michael J. Young
Published by Sybex (now Wiley)
Pages: 1397, plus a companion CD
This tutorial and reference book provides a comprehensive, step-by-step guide to version 6 of Microsoft's Visual C++ development environment. This is now the third edition of Mastering Visual C++ (the fourth edition if you count the predecessor book Windows Programming with Microsoft C++), and it has grown to almost 1400 pages.
Microsoft Visual C++ has evolved into an incredibly powerful programming environment. However, if you're relatively new to C++ and you haven't been evolving as a C++ programmer along with VC++, learning Version 6 of this product can seem an overwhelming task. That's why I wrote this book. Although I assume you know some standard procedural C programming, you really don't need to know either C++ or Windows programming. The early chapters provide a crash course on C++, teaching you just what you need to know to effectively use VC++ for writing Windows programs. The remainder of the book then shows you how to use the essential VC++ tools, together with the Microsoft Foundation Classes (MFC). Following the step-by-step instructions, you'll be surprised how quickly and easily you'll be able to create truly sophisticated Windows programs. I've been working on this book over the past seven years, and I've incorporated a lot of feedback from readers. (My thanks to the many readers who have e-mailed me!) In creating the latest edition, I spent several months updating the chapters to incorporate the many significant changes found in VC++ 6. I also added a new chapter on programming and using ActiveX controls because of their importance in creating Web pages. The publisher, Sybex, did a superb job in producing this book, and I must say that I am proud of the final result.
Topics on this page:
Introduction -- Read an excerpt from the Introduction.
Part I: Introduction to Microsoft Visual C++ 6
Chapter 1: Setting Up the Software
Chapter 2: Creating a Program Using the Microsoft Developer Studio
Part II: Introduction to C++
Chapter 3: Moving to C++
Chapter 4: Defining C++ Classes
Chapter 5: Deriving C++ Classes
Chapter 6: Overloading, Copying, and Converting
Chapter 7: Using C++ Templates
Chapter 8: Handling Exceptions in C++
Part III: Windows GUI Programming with the MFC Library
Chapter 9: Generating a Windows GUI Program
Chapter 10: Implementing the View
Chapter 11: Implementing the Document
Chapter 12: Storing Documents in Disk Files
Chapter 13: Scrolling and Splitting Views
Chapter 14: Including Docking Toolbars and Status Bars
Chapter 15: Creating Custom Dialog Boxes
Chapter 16: Writing Dialog-Based Applications
Chapter 17: Writing Multiple Document Applications
Chapter 18: Performing Character I/O
Chapter 19: Using Drawing Functions
Chapter 20: Using Bitmaps and Bit Operations
Chapter 21: Printing and Print Previewing
Chapter 22: Using Multiple Threads
Chapter 23: Communicating Among Processes
Chapter 24: Using OLE
Chapter 25: Creating and Using ActiveX Controls
- The source code files needed to prepare each of the example programs given in the book.
- The executable program file for each example program (both the debug version and the release version), so that you can immediately run the programs.
If you purchased Mastering Visual C++ 6 without a companion CD, you can download the complete source code for the example programs. Unlike the CD, the downloaded source code doesn't include the executable or intermediate source files—you'll therefore need to build each program before you can run it.
The source files are contained in MVC6.ZIP. I recommend creating a new folder (perhaps named MVC6) and unzipping the files into this folder. When you unzip, be sure to preserve the original folder names and structure, which are stored in the ZIP file.
Note that some or all of these errors might have been corrected in more recent printings of the book.
Page 11: "Using the Companion CD"
The information in this section is correct. However, here are some additional tips that might be helpful:
- The project folders (for example, \Axcont, \Axctrl, \Bitdemo, \Contdemo, and \Cpp) are all contained within the \Examples folder on the CD, not in the root of the CD.
When you copy files from a CD to your hard drive, the read-only attribute for each file is usually set. If you've copied a project folder to your hard disk and if you want to modify the project, you should first turn off the read-only attribute for all the files contained in the project folder on your hard disk. You can switch off the read-only attribute for a single file by right-clicking it in Windows Explorer, choosing Properties from the pop-up menu, and unchecking the Read-Only option. You can also switch off the read-only attribute for all the files you copied to your hard disk in one fell swoop, by following these steps:
1. Start an MS-DOS session.2. At the DOS prompt, change to the folder on your hard drive that contains the files from the CD. Make sure that you have changed to the right folder, so you don't inadvertently remove read-only protection from the wrong files!3 . Issue the following command at the DOS prompt:
attrib -r *.* /sThis will remove the read-only attribute from all files in the current folder and in all subfolders of the current folder.
- The AxCont.exe program on the CD won't run until the ActiveX control it displays has been registered on your computer. As explained in Chapter 25, the ActiveX control gets registered automatically when you build the AXCtrl project (this is the project that creates the ActiveX control that AxCont.exe displays). Therefore, to run AxCont.exe you must first build the AxCtrl project in Visual C++. If you're working with the project from the CD, which has already been built, you can force Visual C++ to rebuild it—thus registering the ActiveX control—by choosing Rebuild All on the Build menu.
- As stated in "Using the Companion CD," you can copy any of the source or program files directly from the companion CD to your hard disk using normal Windows or DOS commands (all files are provided in uncompressed format). The publisher also added the Mastvc6.exe program to the root of the CD. You can run this program to copy all of the source and program files to your CD. Note that this program simply provides an alternative way to copy the files—you don't need to use it. For complete instructions on Mastvc6.exe and for other information about the companion CD, see the file Readme.txt in the CD root.
Page 93, line of code at top
Page 205, first and second line
throw "out of memory; statement
throw "out of memory"; statement
Change "To do this, open the file MiniDraw.h..." to "To do this, open the file MiniDrawView.h..."
After you add the
#include <afxtempl.h> line to StdAfx.h as instructed, you might need to issue the Build All command to force VC++ to recompile this header file. For some reason (probably due to the header file being precompiled), if you use the normal Build command VC++ fails to recompile this file, even though you modified it.
Page 423, last paragraph (above the NOTE)
GetNewView then returns a pointer..." should be "
GetNextView then returns a pointer..."
Page 793, 3rd paragraph from bottom
CDC::GetLength" should be "it calls
Page 807, beginning of paragraph in middle of page
OnDraw displays..." to "Although
The C++ code in the book:
The publisher's desktop publishing software replaced each occurrence of the decrement operator (--) with a single dash character (—). A dash isn't even a valid C++ character, although it looks similar to a minus sign. So be on the lookout for this error, and if you're typing in the code, be sure to type -- rather than - when you see a dash. BTW, the code on the companion CD doesn't have this error.
All of these errors occur within the code expression that should read
Here are the places in the book where the error occurs:
- 354, near center
- 358, 1/3 down
- 373, 3/4 down
- 381, near top
- 411, 3/4 down
- 419, near top
- 485, 2/3 down
- 493, 1/3 down
- 545, 3/4 down
- 555, near center
- 967, near bottom
- 1080, near center
- 1208, 3/4 down
- 1211, near top
- 1223, 3/4 down
- 1224, near center
- 1231, near bottom
- 1241, near top
Left inside back cover of the book: This material was evidently written by an editor who was not very familiar with the purpose and features of the example programs! Here is a corrected version of this information:
Using the Companion CD
The Mastering Visual C++ 6 companion CD contains all the source code and executable files for the example programs provided in this book. You can use these files to save typing when working through the exercises given in the book, to explore the features of the example programs, and to experiment with additional programming techniques. You can also use them as a basis for creating your own programs. For more information, see the section "Using the Companion CD" in Chapter 1, as well as the file Readme.txt in the root folder of the CD.
|AXCont—An ActiveX control container program that displays the AXCtrl ActiveX control||AXCont.exe|
|AXCtrl—An example ActiveX control||AXCtrl.ocx|
|BitDemo—A program that illustrates the techniques for designing, displaying, and manipulating bitmaps||BitDemo.exe|
|ContDemo—A basic OLE container program (can be used to embed drawings created by the ServDemo program)||ContDemo.exe|
|Cpp—A folder (not a program) that contains all the code listings from Part II of the book|
|DlgDemo—A simple dialog-based program||DlgDemo.exe|
|Echo—A program that illustrates the basic techniques for reading characters from the keyboard and echoing them in a window||Echo.exe|
|FontDemo—A program that displays and exchanges information with a modal dialog box||FontDemo.exe|
|FormDemo—A form-view program, which is a full-featured program based on a dialog box||FormDemo.exe|
|Greet—A simple console (that is, character-mode) program||Greet.exe|
|Mandel—A program that generates a fractal pattern to illustrate the techniques for drawing points, as well as several other graphics drawing techniques||Mandel.exe|
|MandelMT—A multithreaded version of the Mandel program||MandelMT.exe|
|MiniDraw 1 (MiniDrw1 folder)—The first version of the MiniDraw program, a simple drawing application that illustrates the techniques for creating a full-featured MFC Windows program and for drawing graphics. This version lets you draw only straight lines.||MiniDraw.exe|
|MiniDraw 2 (MiniDrw2 folder)—The second version of the MiniDraw program, which stores the drawn lines and adds undo and delete commands||MiniDraw.exe|
|MiniDraw 3 (MiniDrw3 folder)—The third version of the MiniDraw program, which adds file I/O||MiniDraw.exe|
|MiniDraw 4 (MiniDrw4 folder)—The fourth version of the MiniDraw program, which adds scrolling capability, as well as a split box that allows you to divide the window into two panes||MiniDraw.exe|
|MiniDraw 5 (MiniDrw5 folder)—The fifth version of the MiniDraw program, which adds a docking toolbar and a status bar to the program interface||MiniDraw.exe|
|MiniDraw 6 (MiniDrw6 folder)—The sixth version of the MiniDraw program, which adds new shapes to the figures that you can draw (lines, rectangles, rounded rectangles, and circles) and lets you adjust the line thickness and choose the drawing color||MiniDraw.exe|
|MiniDraw 7 (MiniDrw7 folder)—The seventh and final version of the MiniDraw program, which adds printing and print previewing||MiniDraw.exe|
|MiniEdit 1 (MiniEdt1 folder)—The first version of the MiniEdit program, which illustrates the techniques for creating a text editor. This version provides the basic text editing commands.||MiniEdit.exe|
|MiniEdit 2 (MiniEdt2 folder)—The second version of the MiniEdit program, which adds file I/O||MiniEdit.exe|
|MiniEdit 3 (MiniEdt3 folder)—An MDI (multiple document interface) version of the MiniEdit program, which lets you open and edit several text files simultaneously||MiniEdit.exe|
|ServDemo—A basic OLE server program, which is based on the MiniDraw program and allows OLE container programs (such as ContDemo) to embed drawings||ServDemo.exe|
|TabDemo—A program that displays a tabbed dialog box||TabDemo.exe|
|TextDemo—A program that demonstrates the main steps for choosing fonts and displaying lines of text in a window||TextDemo.exe|
|WinGreet—A basic MFC Windows application||WinGreet.exe|