The Well-Conceived Program
If you've successfully developed Visual C++ applications at some level, you're way ahead of the game with the Visual C++ Desktop exam.
Microsoft boasts on its Web site:
“Nearly all world-class software, from the leading
Web browsers to mission-critical corporate applications,
is built using Microsoft Visual C++ Development System.”
and I suspect it may be true in part. Perhaps more off-the-shelf
software is built with Visual C++ than any other software
development system; certainly Microsoft builds most of
its software with C++.
I’ve been programming with Microsoft C++ since the first
version, before the IDE (Integrated Development Environment)
made it Visual C++. Although I’m not using VC++ on my
current project (I’m implementing SQL Server data warehouses),
I miss it, and I don’t want to lose my hard-earned skills.
Thus, I recently took the beta exam for Visual C++ version
6.0. Although I’m both an MCSE and an MCSD, I am, first
and foremost, a software developer. I earned my networking
skills because that's what my programs run on.
Preparing for the Exam
I have good news and bad news. The good news is that
the exam is much easier than developing world-class software.
That’s because software development is not about answering
fully formed questions, but about generating your own
questions and then answering them. Real-world problems
are bigger than picking the best answer out of five. Software
design is a blank canvas where creative problem-solving
plays a huge part. If you have successfully developed
C++ applications, you are way ahead of the game in preparing
for and taking this exam.
The bad news, especially if you have not successfully
developed any C++ applications or if you need a lot of
review, is that there are not many certification-specific
I haven’t taken the three courses Microsoft offers (see
the recommended course list below), but there are times
when human contact and hands-on classroom experience is
the fastest way to learn. Sometimes IDEs are difficult
to learn through books because they’re so visual. Your
book might say, "Now press the compile button," but you
have no idea what the compile button looks like. Classroom
learning is recommended if you are missing several of
- A strong C programming background
- At least some C++ experience
- Windows development experience (C with Windows counts
for more than Visual Basic experience)
- Access to an experienced Visual C++ developer—co-workers,
members of user groups, or through a Microsoft support
C++ 6.0 Desktop Solutions (Beta 71-016)
Rating: “This is a challenging,
difficult exam, but it doesn’t overwhelm
you with trivia. When it gets down to
the details, the exam asks about the objects
and functions good MFC programmers should
Designing and Implementing Desktop Solutions
with Microsoft Visual C++ 6.0
Number of questions
in reviewed version of exam:
113 on beta; fewer on actual exam.
expect around 90 minutes for the live
Live as of September 1999.
Who should take
it? One “desktop applications
development” exam is required for the
MCSD; this exam is one of the three
What classes prepare
- No. 1011, Mastering MFC Fundamentals
Using Microsoft Visual C++
- No. 1012A: Mastering COM Development
Using Microsoft Visual C++
- No. 1015: Mastering MFC Development
Using Microsoft Visual C++ 6
I’ve tried Microsoft’s Mastering MFC Development
CD and found it decent, with helpful lab exercises. The
CD includes sample questions at the end of each chapter,
but expect the exam questions to be harder.
I didn’t find the audio-visual material on this CD to
be very useful, but perhaps that’s because I’d rather
read a book than a computer screen. The information on
the CD alone is not enough to pass the exam.
As a minimum, supplement it with the Mastering COM Development
if you like learning from CDs.
The Visual C++ Desktop exam, along with its sister exam
on distributed applications, replace exams 70-024, Developing
Applications with C++ using the Microsoft Foundation Class
Library, and 70-025, Implementing OLE in MFC 4.0 Library
There’s definitely enough material in MFC development
for two exams, but splitting this material into OLE and
non-OLE would have made more sense to me than Desktop
versus Distributed. [Tom Steele reviews the new Visual
C++ Distributed exam (70-015) in this issue.—Ed.]
Except for some extra obviously "distributed" material,
the requirements are almost the same for the two exams.
Some of the distinctions between desktop and distributed
seem arbitrary. Why would dynamic HTML be considered desktop?
SMS sounds like a distributed topic to me, but it’s considered
As far as specifics about what you’ll find on the Desktop
exam, you should
have an understanding that ranges from the theoretical
(such as the benefits of component based development)
to very practical (as in the detailed actual screen shots
used in the IDE). You should understand the differences
between the different libraries that can be used to develop
Visual C++ applications: MFC, ATL or the SDK.
Also, know the advantages and disadvantages of
each of the methods for connecting to a database: ODBC,
ADO, DAO, and RDO. suggest you take the overlap in requirements
between the two exams into consideration when planning
your review. For example, you may want to plan to study
for two months, then take both exams, rather than allowing
one month for each. This is especially true if you feel
strong in the database area (Creating Data Services and
Creating Physical Databases). The topics are so inter-related
that it’s hard to see where one exam ends and the other
begins. This is like the two SQL Server exams. I studied
weeks for both of them but took the Implementation exam
only a couple of days after the Administration exam.
Bother with C++ Certification Anyway?
Here’s a good question that you won’t
find on the exam: Why is there so little
demand for Visual C++ certification
when there’s such strong demand for
Visual C++ skills? As a consultant,
I’ve worked at many different client
sites. I'm active in user groups. I
know a lot of programmers. Yet, I know
only two other developers who have passed
the previous version of this exam (70-024).
It's not that people are taking it and
failing; they just aren’t taking it.
I have yet to have a client ask about
me C++ certification (I put it on my
resume anyway). Even at interviews for
C++ positions, clients have been more
interested in my SQL Server or TCP/IP
Maybe the lack of interest is because
many C++ programmers come from the Unix
world. Unix programmers, as a rule,
often don't have a lot of respect for
Microsoft. Or perhaps it’s the simple
fact that developers aren’t buying into
certification the way network people
have. Whatever the reason, I like to
buck the trend and encourage C++ programmers
to get certified.
The requirements list mentions several
products that are not properly part of Visual C++, as
well as tools that come with Visual Studio: Spy++, Depends,
MSMQ, MTS, SQL, SMS, and Visual Source Safe. You don’t
need to know these tools thoroughly but you need to know
when one or the other would be appropriate. Try them all
out. Incorporate them into your current project if you
Hint #1. One of the
exam requirements is "Evaluate the need for beta testing."
If you get a question that asks if beta testing is
appropriate or if version control is a good idea,
lean toward the answer most like "yes" or "always." It's like your dentist asking
you to "Evaluate the need for flossing." You know
what they want to hear. Consider it a gift question.
Hint #2. Another requirement
suggests "Use Depends." This does not mean you should
wear an adult incontinence product to the test site.
I assure you that will not help you pass this exam.
Microsoft Access is to Northwind as SQL Server is to
Pubs as Visual C++ is to what? Scribble!
Scribble, of course, is the sample Visual C++ Etch-a-Sketch
application. There are others; they’re each worth a review.
Any classes in these sample applications are common enough
that you should probably know them in detail, along with
specific classes mentioned in the requirements.
Reading the code could remind you of some areas that you
need to review, such as mapping modes or handling database
When you’re trying to teach yourself, you don't know
what you don't know. Practice tests help point out your
weak areas. Since this is a beta exam, I didn’t expect
to find practice tests, but you could use practice exams
from previous versions. However, it’s hard to find practice
tests for any version of an MFC exam. I checked the Web
sites of all the test vendors that advertise in MCP
Magazine, MCP Magazine's Web site, and did
some additional Web searching. What I found is that there’s
plenty of stuff for the MCSE core exams, but nothing for
this exam. Two practice test vendors say they have MFC
tests in development, but only one (VFX Technologies)
is currently selling an MFC test.
Microsoft at one time had practice exams for MFC and
OLE that you could download. I still have a copy—the Sylvan
Prometric Assessment Test Launcher Version 2.3, or LNCHTST.EXE.
Microsoft's new test software (called uengine.exe, developed
by Self Test Software) does not have an MFC module or
an OLE with MFC module.
The VB run time module (VBRUN300.DLL) delivered
with it, however, makes me believe that someone at Microsoft
is not eating their own dog food.
I'd like to see a book specifically for Visual C++ certification,
with lab exercises and practice questions at the end of
every chapter, like the books they have for Visual Basic
and (it seems) every other exam. Most bookstores I visit
seem to have a large amount of bookshelf space devoted
to C++, and another large area devoted to Microsoft certification,
but there’s no overlap. It seems there’s currently no
book on C++ certification, although Amazon.com and FatBrain.com
both report three Visual C++ certification books that
are unavailable as I write this.
If I were to recommend just one book to prepare, it would
be Kruglinski’s Programming Microsoft Visual C++.
Be sure to get the fifth and latest edition; it has sections
that were not in earlier editions but that are required
for the exam: ISAPI, Dynamic HTML, ATL and OLE DB, to
name a few. Kruglinski even has a chapter on Visual C++
for Windows CE (not required for the exam).
I also like Prosise's Programming Windows 95 with
MFC, (the "Petzold for MFC"). It’s a clearly written
and well-organized tutorial. Don’t attempt to use these
books as a sole resource to pass the exam, however.
For starters, Prosise doesn’t cover the IDE at all. Nor
does he explain how to use AppWizard or ClassWizard to
generate code. You don’t really need it to use the code
in his book, since all of the code is on the CD inside
the back cover. The
wizards aren’t difficult to use, but if you haven't used
them because you’ve created your own MFC extensions or
have simply gotten used to cutting and pasting text, I
suggest you refresh your memory. Some of the exam questions
show actual wizard screens. You are asked to select the
controls that must be set to create an application that
meets certain requirements or to create a class that meets
Know generally what code is generated for every
radio button, list box or other control on the wizard
Secondly, Prosise doesn’t cover COM or OLE or Active
X at all. And you cannot pass this exam if you do not
understand COM inside out.
In fact, even with Kruglinski, you’ll probably
want to supplement your reading on COM and ActiveX.
Finally, be aware that things have been added to MFC
and Visual C++ since Prosise came out in 1996. The book
is Windows-95 specific and doesn’t deal with either Windows
98 or Windows NT. (A second edition of this book came out between the
time this article was written and when it was published.
I have not had time to read this book but it claims
to cover COM, OLE and ActiveX.
Although it does not claim to cover the IDE or
ATL, I feel confident in claiming, sight unseen, that
it should be a good if incomplete resource for this exam.)
There are lots of books on Visual C++ itself, many giving
the broad overview you need as part of your
preparation for this exam. There’s even a Visual
C++ for Dummies, but don’t expect me to recommend it.
Visual C++ is not something “dummies” should be playing
with. (Forgive me, but that’s who Visual Basic is for.)
Whatever book you select, I suggest that you go through
the topics in Microsoft's preparation guide (see below).
If the topic isn’t covered, go find it in the help files
or MSDN, print it out, and highlight the relevant parts.
The ideal exam would discriminate between someone who
has the knowledge to develop quality software with C++
and someone who doesn't. This exam does that without requiring
that you debug or program during the test. This is a challenging,
difficult exam, but it doesn’t overwhelm you with trivia.
When it gets down into the details, the exam asks about
the objects and functions good MFC programmers should