Teach Yourself VisualC++6 in 22days(

  Davis Chapman Visual C++

  ®

  6 in

  Teach Yourself

21 Days

  E

  XECUTIVE E DITOR Sams Teach Yourself Visual ®

  Brad Jones

  C++ 6 in 21 Days A CQUISITIONS E DITOR Copyright © 1998 by Sams Publishing Kelly Marshall

  All rights reserved. No part of this book shall be reproduced, stored in a

  D EVELOPM ENT E DITOR

  retrieval system, or transmitted by any means, electronic, mechanical, photo- Matt Purcell copying, recording, or otherwise, without written permission from the pub- lisher. No patent liability is assumed with respect to the use of the information contained herein. Although every precaution has been taken in the preparation of this book, the publisher and author assume no responsibility for errors or

  M ANAGING E DITOR

  omissions. Neither is any liability assumed for damages resulting from the use Jodi Jensen of the information contained herein.

  P ROJECT E DITOR

  International Standard Book Number: 0-672-31240-9 Dana Rhodes Lesh

  Library of Congress Catalog Card Number: 98-84508

  C OPY E DITOR Printed in the United States of America

  Kris Simmons First Printing: August, 1998

  I NDEXER

  Erika Millen 01 00 99 98 4 3 2 1

  T ECHNICAL E DITOR Trademarks

  Larry Richardson All terms mentioned in this book that are known to be trademarks or service

  P RODUCTION

  marks have been appropriately capitalized. Sams Publishing cannot attest to Marcia Deboy the accuracy of this information. Use of a term in this book should not be Michael Dietsch regarded as affecting the validity of any trademark or service mark.

  Jennifer Earhart Cynthia Fields Visual C++ is a registered trademark of Microsoft Corporation. Susan Geiselman

  Warning and Disclaimer

  Every effort has been made to make this book as complete and as accurate as possible, but no warranty or fitness is implied. The information provided is on an “as is” basis. The authors and the publisher shall have neither liability nor responsibility to any person or entity with respect to any loss or damages aris- ing from the information contained in this book.

  Overview

  Introduction

  1 W EEK

  1 AT A G LANCE

  5 Day 1 The Visual C++ Development Environment—Building Your First

  Visual C++ Application

  7

  2 Using Controls in Your Application

  25

  3 Allowing User Interaction—Integrating the Mouse and Keyboard in Your Application

  47

  4 Working with Timers

  67

  5 Getting User Feedback—Adding Dialog Boxes to Your Application

  83

  6 Creating Menus for Your Application 105

  7 Working with Text and Fonts 121

  W EEK

  1 IN R EVIEW 143 W EEK

  2 AT A G LANCE 147

  Day 8 Adding Flash—Incorporating Graphics, Drawing, and Bitmaps 149

  9 Adding ActiveX Controls to Your Application 179

  10 Creating Single Document Interface Applications 199

  11 Creating Multiple Document Interface Applications 229

  12 Adding Toolbars and Status Bars 243

  13 Saving and Restoring Work—File Access 279

  14 Retrieving Data from an ODBC Database 315

  W EEK

  2 IN R EVIEW 337 W EEK

  3 AT A G LANCE 341

  Day 15 Updating and Adding Database Records Through ADO 343

  16 Creating Your Own Classes and Modules 379

  17 Sharing Your Functionality with Other Applications—Creating DLLs 405

  18 Doing Multiple Tasks at One Time—Multitasking 429

  19 Building Your Own Widgets—Creating ActiveX Controls 473

  20 Internet Applications and Network Communications 495

  21 Adding Web Browsing Functionality to Your Applications 521

  W EEK

3 IN R EVIEW

  537 A PPENDIXES 541

  A C++ Review 541

  B Answers 579

  C Printing and Print Previewing 637 D Understanding and Exception Handling 661

  E Using the Debugger and Profiler 677 F Using MFC’s Helper Classes 699

  Index 731

  Contents NTRODUCTION

  I

  1 W EEK

  1 AT A G LANCE AY HE ISUAL EVELOPM ENT NVIRONM ENT UILDING OUR IRST

  5 D

  1 T ISUAL PPLICATION

  V C++ D E — B Y F

  V C++ A

  7 The Visual C++ Development Environment ..........................................................8 The Output Pane ................................................................................................9 The Editor Area ..................................................................................................9 Menu Bars ........................................................................................................10 Rearranging the Developer Studio Environment ............................................10

  Starting Your First Project ....................................................................................11 Creating the Project Workspace ......................................................................11 Using the Application Wizard to Create the Application Shell ......................12 Designing Your Application Window....................................................................15

  Adding Code to Your Application ........................................................................17 Finishing Touches ..................................................................................................20 Creating the Dialog Box Icon ..........................................................................20 Adding Maximize and Minimize Buttons........................................................21

  Summary ................................................................................................................22 Q&A ......................................................................................................................22 Workshop ..............................................................................................................23 Quiz ..................................................................................................................23 AY SING ONTROLS IN OUR PPLICATION Exercise ............................................................................................................23

  D

  2 U C Y A

  25 The Basic Windows Controls ................................................................................26 The Static Text Control ....................................................................................26 The Edit Box Control ......................................................................................26 The Command Button Control ........................................................................27 The Check Box Control....................................................................................27 The Radio Button Control ................................................................................27 The Drop-Down List Box Control ..................................................................27

  Adding Controls to Your Window ........................................................................27 Creating the Application Shell and Dialog Layout ..........................................28

  vi Sams Teach Yourself Visual C++ 6 in 21 Days

  Specifying the Control Tab Order ....................................................................30 Attaching Variables to Your Controls ....................................................................32 Attaching Functionality to the Controls ................................................................33 Closing the Application ....................................................................................36

  Showing the User’s Message ..........................................................................37 Clearing the User’s Message............................................................................38 Disabling and Hiding the Message Controls....................................................39 Running Another Application ..........................................................................42

  Summary ................................................................................................................44 Q&A ......................................................................................................................44 Workshop ..............................................................................................................45 Quiz ..................................................................................................................45 AY LLOWING SER NTERACTION NTEGRATING THE OUSE AND EYBOARD Exercises ..........................................................................................................45

  D

  3 A U IN OUR PPLICATION I —

  I M K Y A

  47 Understanding Mouse Events ................................................................................48 Drawing with the Mouse ..................................................................................49 Improving the Drawing Program ....................................................................53 Adding the Finishing Touches..........................................................................55 Capturing Keyboard Events ..................................................................................56 Changing the Drawing Cursor..........................................................................57 Making the Change Stick ................................................................................60

  Summary ................................................................................................................64 Q&A ......................................................................................................................64 Workshop ..............................................................................................................65 Quiz ..................................................................................................................65 AY ORKING WITH Exercises ..........................................................................................................65 IM ERS D

  4 W T

  67 Understanding Windows Timers............................................................................68 Placing a Clock on Your Application ....................................................................68 Creating the Project and Application ..............................................................68

  Adding the Timer IDs ......................................................................................70 Starting the Clock Timer ..................................................................................71 Handling the Clock Timer Event......................................................................72 Adding a Second Timer to Your Application ........................................................74 Adding the Application Variables ....................................................................74 Starting and Stopping the Counting Timer ......................................................75 Enabling the Stop Button ................................................................................79 Summary ................................................................................................................81

  Q&A ......................................................................................................................81 Workshop ..............................................................................................................82

Quiz ..................................................................................................................82

Exercise ............................................................................................................82

  D AY

  5 G ETTING U SER F EEDBACK — A DDING D IALOG

B

OXES TO Y OUR A PPLICATION

  83 Using Pre-existing (or System) Dialog Windows ................................................84

Using Message Boxes ......................................................................................84

Using Common Dialogs ..................................................................................90

  Creating Your Own Dialog Windows....................................................................93

Creating the Dialog Window............................................................................93

Using the Dialog in Your Application..............................................................96

Summary ..............................................................................................................101

  Q&A ....................................................................................................................101 Workshop ............................................................................................................103

Quiz ................................................................................................................103

Exercises ........................................................................................................104

  D AY

  6 C REATING M ENUS FOR Y OUR A PPLICATION 105

  Menus ..................................................................................................................106

Menu Styles ....................................................................................................106

Keyboard Shortcut–Enabling Menus ............................................................106

Menu Standards and Conventions..................................................................107

  Designing Menus ................................................................................................108 Creating a Menu ..................................................................................................108

Creating the Application ................................................................................108

Adding and Customizing a Menu ..................................................................109

Attaching the Menu to Your Dialog Window ................................................112

Attaching Functionality to Menu Entries ......................................................112

  Creating Pop-Up Menus ......................................................................................116 Creating a Menu with Accelerators ....................................................................118 Summary ..............................................................................................................119 Q&A ....................................................................................................................119 Workshop ............................................................................................................120

Quiz ................................................................................................................120

  

Exercises ........................................................................................................120

D AY

  7 W ORKING WITH T EXT AND F ONTS 121

  Finding and Using Fonts......................................................................................122

Listing the Available Fonts ............................................................................122

Using a Font ..................................................................................................125

  Cont ent s vii

  viii Sams Teach Yourself Visual C++ 6 in 21 Days

  Using Fonts ..........................................................................................................129 Creating the Application Shell ......................................................................129 Building a List of Fonts..................................................................................131 Setting the Font Sample Text ........................................................................135 Selecting a Font to Display ............................................................................136 Summary ..............................................................................................................139

  Q&A ....................................................................................................................139 Workshop ............................................................................................................140 Quiz ................................................................................................................140 IN EVIEW Exercises ........................................................................................................140

  W EEK

  1 R AT A LANCE 143 W EEK

  2 G

AY DDING LASH NCORPORATING RAPHICS RAWING AND

ITM APS 147 D

  8 A F —

  I G , D , B 149 Understanding the Graphics Device Interface ....................................................150 Device Contexts..............................................................................................150

  Mapping Modes and Coordinate Systems......................................................156 Creating a Graphics Application..........................................................................157 Generating the Application Shell ..................................................................157 Adding the Graphics Capabilities ..................................................................163

  Summary ..............................................................................................................177 Q&A ....................................................................................................................177 Workshop ............................................................................................................177 Quiz ................................................................................................................178 AY DDING CTIVE ONTROLS TO OUR PPLICATION Exercises ........................................................................................................178

  D

  9 A A

  X C Y A 179 What Is an ActiveX Control? ..............................................................................180 ActiveX and the

  IDispatch Interface ..........................................................180

  ActiveX Containers and Servers ....................................................................182 Adding an ActiveX Control to Your Project ......................................................183 Registering the Control ..................................................................................183 Adding the Control to Your Dialog................................................................186

  Using an ActiveX Control in Your Application ..................................................187 Interacting with the Control ..........................................................................187 Responding to Control Events........................................................................193 Summary ..............................................................................................................196

  Q&A ....................................................................................................................196 Workshop ............................................................................................................197

  Cont ent s ix

  D AY

  10 C REATING S INGLE D OCUM ENT

  I NTERFACE A PPLICATIONS 199

The Document/View Architecture ......................................................................200

Creating an SDI Application................................................................................202

  

Building the Application Shell ......................................................................202

Creating a Line Class ....................................................................................203

Implementing the Document Functionality....................................................205

Showing the User ..........................................................................................208

  

Saving and Loading the Drawing ........................................................................213

Deleting the Current Drawing ........................................................................214

Saving and Restoring the Drawing ................................................................215

Interacting with the Menu....................................................................................218

Adding Color to the CLine Class ..................................................................218

Adding Color to the Document ......................................................................219

Modifying the Menu ......................................................................................222

Summary ..............................................................................................................226

  

Q&A ....................................................................................................................227

Workshop ............................................................................................................228

Quiz ................................................................................................................228

Exercise ..........................................................................................................228

  D AY

  11 C REATING M ULTIPLE D OCUM ENT

  I NTERFACE A PPLICATIONS 229

What Is an MDI Application?..............................................................................229

Creating an MDI Drawing Program ....................................................................231

  

Building the Application Shell ......................................................................231

Building the Drawing Functionality ..............................................................232

Adding Menu Handling Functionality ..........................................................233

Adding a Context Menu ......................................................................................236

  

Summary ..............................................................................................................239

Q&A ....................................................................................................................239

Workshop ............................................................................................................240

Quiz ................................................................................................................240

  

Exercise ..........................................................................................................241

D AY

  12 A DDING T OOLBARS AND S TATUS B ARS 243

Toolbars, Status Bars, and Menus ......................................................................244

Designing a Toolbar ............................................................................................245

  

Creating a New Toolbar ................................................................................246

Attaching the Toolbar to the Application Frame............................................247

Controlling the Toolbar Visibility ..................................................................254

Adding a Combo Box to a Toolbar ....................................................................257

Editing the Project Resources ........................................................................257

  x Sams Teach Yourself Visual C++ 6 in 21 Days

  Handling the Toolbar Combo Box Events ....................................................267 Updating the Toolbar Combo Box ................................................................268 Adding a New Status Bar Element......................................................................271 Adding a New Status Bar Pane ......................................................................271

  Setting a Status Bar Pane Text ......................................................................273 Summary ..............................................................................................................275 Q&A ....................................................................................................................276 Workshop ............................................................................................................277

  Quiz ................................................................................................................277 AY AVING AND ESTORING ORK Exercises ........................................................................................................277 ILE CCESS D

  13 S R W — F A 279 Serialization ........................................................................................................279 The CArchive and CFile Classes ................................................................280

  The Serialize Function....................................................................................281 Making Objects Serializable ..........................................................................281 Implementing a Serializable Class ......................................................................283 Creating a Serialized Application ..................................................................284

  Creating a Serializable Class..........................................................................288 Building Support in the Document Class ......................................................294 Adding Navigating and Editing Support in the View Class ..........................305 Summary ..............................................................................................................311

  Q&A ....................................................................................................................311 Workshop ............................................................................................................313 Quiz ................................................................................................................313 AY ETRIEVING ATA FROM AN ATABASE Exercise ..........................................................................................................313

  D

  14 R D ODBC D 315 Database Access and ODBC................................................................................316 The Open Database Connector (ODBC) Interface ........................................316

  The CRecordset Class..................................................................................317 Creating a Database Application Using ODBC ..................................................322 Preparing the Database ..................................................................................322 Creating the Application Shell ......................................................................324 Designing the Main Form ..............................................................................325 Adding New Records ....................................................................................331 Deleting Records ............................................................................................334 Summary ..............................................................................................................335

  Q&A ....................................................................................................................335 Workshop ............................................................................................................336 Quiz ................................................................................................................336

  IN EVIEW Cont ent s xi

  W EEK

  2 R AT A LANCE 337 W EEK

  3 G AY PDATING AND DDING ATABASE ECORDS HROUGH 341 D

  

15 U A D R T ADO 343

What Is ADO?......................................................................................................344 ADO Objects ..................................................................................................345

  Using the ADO ActiveX Control ..................................................................346 Importing the ADO DLL................................................................................349 Connecting to a Database ..............................................................................350 Executing Commands and Retrieving Data ..................................................351 Navigating the Recordset ............................................................................352 Accessing Field Values ..................................................................................353 Updating Records ..........................................................................................356 Adding and Deleting ......................................................................................356 Closing the Recordset and Connection Objects ......................................357 Building a Database Application Using ADO ....................................................358 Creating the Application Shell ......................................................................358 Building a Custom Record Class ..................................................................361 Connecting and Retrieving Data ....................................................................365 Populating the Form ......................................................................................367 Saving Updates ..............................................................................................370 Navigating the Record Set..............................................................................371 Adding New Records ....................................................................................373 Deleting Records ............................................................................................375

  Summary ..............................................................................................................376 Q&A ....................................................................................................................377 Workshop ............................................................................................................377 Quiz ................................................................................................................377 AY REATING OUR WN LASSES AND ODULES Exercise ..........................................................................................................378

  D

  

16 C Y O C M 379

Designing Classes ................................................................................................380 Encapsulation..................................................................................................380

  Inheritance ......................................................................................................380 Visual C++ Class Types ................................................................................381 Creating Library Modules....................................................................................382 Using Library Modules........................................................................................383

  Creating the Library Module..........................................................................383 Creating a Test Application ............................................................................393 Updating the Library Module ........................................................................398

  xii Sams Teach Yourself Visual C++ 6 in 21 Days

  Summary ..............................................................................................................401 Q&A ....................................................................................................................402 Workshop ............................................................................................................403 Quiz ................................................................................................................403 AY HARING OUR UNCTIONALITY WITH THER PPLICATIONS REATING S Exercise ..........................................................................................................403

  D

  17 S Y F O A — C DLL 405 Why Create DLLs? ..............................................................................................406 Creating and Using DLLs ..............................................................................406

  Designing DLLs ............................................................................................409 Creating and Using an MFC Extension DLL......................................................410 Creating the MFC Extension DLL ................................................................410 Adapting the Test Application........................................................................413 Changing the DLL..........................................................................................414 Creating and Using a Regular DLL ....................................................................416 Creating the Regular DLL..............................................................................417 Adapting the Test Application........................................................................423

  Summary ..............................................................................................................426 Q&A ....................................................................................................................427 Workshop ............................................................................................................428 Quiz ................................................................................................................428 AY OING ULTIPLE ASKS AT NE Exercises ........................................................................................................428 IM E ULTITASKING D

  18 D M T O T — M 429 What Is Multitasking?..........................................................................................430 Performing Multiple Tasks at One Time ........................................................430

  Idle Processing Threads..................................................................................431 Spawning Independent Threads ....................................................................431 Building a Multitasking Application ..................................................................441 Creating a Framework ....................................................................................441

  Designing Spinners ........................................................................................443 Supporting the Spinners ................................................................................449 Adding the OnIdle Tasks ..............................................................................455 Adding Independent Threads ........................................................................460

  Summary ..............................................................................................................468 Q&A ....................................................................................................................468 Workshop ............................................................................................................471 Quiz ................................................................................................................471

  Exercises ........................................................................................................471

  Cont ent s xiii

  D AY

  19 B UILDING Y OUR O WN W IDGETS — C REATING A CTIVE

  X C ONTROLS 473

What Is an ActiveX Control? ..............................................................................474

Properties ........................................................................................................474

  

Methods ..........................................................................................................475

Events ............................................................................................................476

Creating an ActiveX Control ..............................................................................476

Building the Control Shell..............................................................................477

  

Modifying the CModArt Class ......................................................................478

Adding Properties ..........................................................................................481

Designing and Building the Property Page ....................................................483

Adding Basic Control Functionality ..............................................................485

Adding Methods ............................................................................................487

Adding Events ................................................................................................489

Testing the Control ........................................................................................491

Summary ..............................................................................................................493

  

Q&A ....................................................................................................................493

Workshop ............................................................................................................494

Quiz ................................................................................................................494

Exercises ........................................................................................................494

  D AY

  20 I NTERNET A PPLICATIONS AND N ETWORK C OM M UNICATIONS 495

How Do Network Communications Work? ........................................................496

Sockets, Ports, and Addresses ........................................................................497

  

Creating a Socket............................................................................................498

Making a Connection ....................................................................................500

Sending and Receiving Messages ..................................................................501

Closing the Connection ..................................................................................503

Socket Events ................................................................................................503

Detecting Errors..............................................................................................504

  

Building a Networked Application ......................................................................505

Creating the Application Shell ......................................................................505

Window Layout and Startup Functionality ....................................................505

Inheriting from the CAsyncSocket Class ....................................................509

Connecting the Application ............................................................................511

Sending and Receiving ..................................................................................515

Ending the Connection ..................................................................................517

Summary ..............................................................................................................519

  

Q&A ....................................................................................................................519

Workshop ............................................................................................................520

Quiz ................................................................................................................520

Exercise ..........................................................................................................520

  xiv Sams Teach Yourself Visual C++ 6 in 21 Days

  D AY

  21 A DDING W EB B ROWSING F UNCTIONALITY TO Y OUR A PPLICATIONS 521 The Internet Explorer ActiveX Model ................................................................522 The CHtmlView Class ........................................................................................523

  Navigating the Web ........................................................................................523 Controlling the Browser ................................................................................524 Getting the Browser Status ............................................................................524 Building a Web-Browsing Application................................................................525 Creating the Application Shell ......................................................................525 Adding Navigation Functionality ..................................................................526