Home > Store

Visual C++ 6 Unleashed

Register your product to gain access to bonus material or receive a coupon.

Visual C++ 6 Unleashed

Book

  • Sorry, this book is no longer in print.
Not for Sale

Description

  • Copyright 2000
  • Edition: 1st
  • Book
  • ISBN-10: 0-672-31241-7
  • ISBN-13: 978-0-672-31241-0

Visual C++ 6 Unleashed provides comprehensive coverage of the core topics for Visual C++ 6 programming. This book skips the beginning level material and jumps right in to Visual C++. By the end of the book, you will be able to master the 32-bit power of Windows using Visual C++ as your programming language. Topics include mastering the debugger, using and integrating HTML help, creating custom AppWizards, customizing the IDE with add-ins, writing multi-threaded MFC applications, developing NT services, using advanced UI techniques, and much more.

Sample Content

Table of Contents

I. INTRODUCTION.

1. The Visual C++ 6.0 Environment.

Developer Studio.

View Windows. Toolbars.

The Project Workspace. The Workspace Window.

The <F35014M>FileView. The <F35014M>ClassView.

Project Configurations.

Project Settings.

Converting Older Projects. Working with Multiple Projects. Working with Resources.

The Resource View. Importing Resources. Managing Resource IDs. Resource Templates.

Editing Resources.

Dialog Boxes. Editing Menus. Other Resources.

MFC AppWizard.

What MFC AppWizard Can Do for You. Starting MFC AppWizard. Project Types.

ClassWizard.

Message Maps. Member Variables. Automation. ActiveX Events. Class Info. Adding a Class.

Component Gallery. Integrated Debugger.

Looking at Your Data. Debugging After Exceptions.

Command-Line Tools. Other Tools.

Spy++. MFC Tracer. Register Control. ActiveX Control Test Container. OLE/COM Object Viewer. Error Lookup. WinDiff. Help Workshop.

Summary.

II. MFC PROGRAMMING.

2. MFC Class Library Overview.

The Application Framework. Creating an MFC Application with MFC AppWizard.

Starting MFC AppWizard. Getting to Know Your New Application. Classes Created by MFC AppWizard. <F35014M>CDocument, CView, and <F35014M>Frame Classes.

The <F35014M>CWinApp Class. The <F35014M>CWinThread Class. The <F35014M>CCmdTarget Class. The <F35014M>CObject Class.

Serialization.

Runtime Type Information.

Using MFC Runtime Type Information.

Debugging Support.

<F35014M>AssertValid(). The <F35014M>ASSERT Macro. <F35014M>Dump(). The<F35014M> TRACE() Macro.

Putting It All Together.

<F35014M>WinMain(). InitApplication() and <F35014M>InitInstance(). LoadStdProfileSettings(). Working with the Command Line. Creating the Main Window.

The Message Pump.

<F35014M>OnIdle().

Summary.

3. MFC Message Handling Mechanism.

Message Categories. Message Handling in MFC. Message Dispatching. Message Handling with <F35014M>ClassWizard. Creating Your Own Message Maps.

Populating the Message Map. Inside the Message Map. Implementing Handler Functions. <F35014M>PreTranslateMessage().

A Common Problem with MFC Message Maps. Summary.

4. The Document View Architecture.

Examining the Document View Architecture.

Single Versus Multiple Document Applications. Document Classes. View Classes. Frames. Document Templates.

Creating Your Application.

Creating Your Document Class. Document Data. The Dirty Flag. <F35014M>Serialize(). OnNewDocument(). DeleteContents(). OnOpenDocument(). OnSaveDocument(). OnCloseDocument(). ReportSaveLoadException(). Accessing Your Document.

Using the View Classes.

<F35014M>CScrollView. CFormView and <F35014M>CRecordView. Control Views. <F35014M>CEditView. Using <F35014M>CRichEditView. CListView and <F35014M>CTreeView.

Using Document Templates.

The EmpList Sample Project. Creating a Document Template. Creating a Different View for a Document. <F35014M>CDocument: OnChangedViewList(). UpdateAllViews(). Accessing Views from Your Document.

Working with Frames.

Status Bars. Adding a Toolbar. Floating and Docking Toolbars.

More on Working with Menus.

Updating the User Interface. Pop-Up Menus. Creating Menus Dynamically.

Adding Splitters to Your Application.

Dynamic Splitters. Creating Different Views. Static Splitters.

Adding Drag and Drop to Your Application.

Enabling Drag and Drop. Handling <F35014M>WM_DROPFILES Messages.

Summary.

5. Creating and Using Dialog Boxes.

Handling Dialog Boxes in MFC.

Creating Dialog Box Template Resources. Creating a <F35014M>CDialog-Derived Class. Displaying the Dialog Box. Dialog Box Coordinates. Changing the Input Focus and Default Buttons.

Dialog Box Data Exchange and Validation.

Mapping Member Variables to Controls. The Data Exchange and Validation Mechanism. Initializing the Dialog Box Controls. Retrieving Data from the Controls. Responding to Control Notifications. Dynamically Mapping Controls. Responding to OK and Cancel.

Derived Control Classes in Dialog Boxes.

Creating a Derived Control. Customizing the Derived Control. Using the Derived Control in a Dialog Box.

Modeless Dialog Boxes.

Modeless Dialog Box Resource Templates. Creating and Destroying Modeless Dialog Boxes. Tracking Modeless Dialog Boxes. Dialog Bars.

Summary.

6. Working with Device Contexts and GDI Objects.

Device Contexts in MFC.

The <F35014M>CDC Class. The <F35014M>CClientDC Class. The <F35014M>CPaintDC Class. The <F35014M>CMetaFileDC Class.

Brushes and Pens.

Pens and the <F35014M>CPen Class. Selecting Pens into the Device Context. Using Stock Pens. Drawing with Pens. Brushes and the <F35014M>CBrush Class. Selecting Brushes into the Device Context. Using Stock Brushes. Drawing with Brushes.

MFC Classes for GDI Operations.

The <F35014M>CPoint Class. The <F35014M>CSize Class. The <F35014M>CRect Class. The <F35014M>CRgn Class and Clipping.

Working with Fonts.

Fonts and the <F35014M>CFont Class. Selecting Fonts into the Device Context. Stock Fonts. Device Context Font Interrogation Functions. Text-Rendering Functions.

Creating and Loading Bitmaps.

Creating a Bitmap Resource with the Resource Editor. Loading a Bitmap. Creating Bitmaps.

Drawing with Bitmaps.

Bitmap Copying.

Creating a Device-Independent Bitmap Class.

Creating a DIB. Creating a DIB from a Device-Dependent Bitmap. Drawing with a DIB.

Summary.

7. Creating and Using Property Sheets.

Understanding Property Sheets. Creating a Property Sheet.

Creating the Property Page Resources. Creating <F35014M>CPropertyPage-Derived Classes. Creating a <F35014M>CPropertySheet-Derived Class. Adding the Property Pages. Creating a Modeless Property Sheet.

Responding to Property Sheet Messages.

Initializing the Property Pages. Property Page Activation and Deactivation. Handling Messages from OK, Apply, and Cancel Buttons. Sending Messages Between Property Pages.

Customizing the Standard Property Sheet.

Property Page Management. Creating a Wizard Mode Property Sheet. Using the New <F35014M>CPropertySheetEx and <F35014M>CPropertyPageEx Classes. Adding Help Buttons and Help Support.

Understanding the Win32 Sequence of Events. Summary.

8. Working with the File System.

File System Overview.

The FAT File System. Protected-Mode FAT. The FAT-32 File System. The HPFS File System. The NTFS File System. The CDFS File System. Networked File Systems and Mapped Volumes. The DFS File System. File System Compression. Disk Quotas. Differences in Functions Among File Systems. Determining the File System and Drive Types.

Win32 File Objects.

Basic File I/O. Asynchronous I/O.

Compatibility I/O.

Low-Level I/O. Stream I/O. The <F35014M>IOStream Classes.

Serial Communications.

Opening and Configuring Serial Ports. Asynchronous Communications. Setting Communication Timeouts. Communication Events.

Using Consoles.

Allocating a Console. Console I/O. Customizing the Console Buffers and Display.

Summary.

9. Using Serialization with File and Archive Objects.

File I/O Differences Between MFC and Win32.

Using Basic Win32 File I/O. Using Basic MFC File I/O.

Working with the <F35014M>CFile Class.

Opening Files. Reading and Writing from a <F35014M>CFile Object.

Using the <F35014M>CArchive and <F35014M>CObject Classes.

Using the <F35014M>CObject Class. Using the <F35014M>CArchive Class.

Understanding Serialization in MFC. Using the Insertion and Extraction Operators.

Using the Serialization Macros. Overriding the <F35014M>Serialize Function. Creating a Serialized Collection.

Using Serialization with Document/View. How Are Document/View Applications Serialized?

Creating a Document. Tracking Modifications to a Document. Storing a Document. Closing a Document. Loading a Document.

Creating a Document/View Serialization Example.

Modifying the Document Class. Creating a Dialog Box. Modifying the View.

Summary.

III. INTERNET PROGRAMMING WITH MFC.

10. MFC and the Internet Server API (ISAPI).

Developing a Server Extension Application.

ISA Entry Points. <F35014M>GetExtensionVersion(). TerminateExtension(). HttpExtensionProc(). The Extension Control Block. <F35014M>ServerSupportFunction(). WriteClient(). Sending Files. Asynchronous Operations. Writing to the Server Log. Exception Handling in ISAs. Debugging Your ISA. Converting from CGI to ISAPI.

ISAPI Filters.

Installing a Filter. ISAPI Filter Architecture. <F35014M>GetFilterVersion(). TerminateFilter(). HttpFilterProc(). The <F35014M>HTTP_FILTER_CONTEXT Structure. Handling Filter Notifications.

ISAPI Support in MFC.

Creating ISAPI DLLs with AppWizard. <F35014M>CHttpServer. CHttpServerContext. CHtmlStream. CHttpFilter. CHttpFilterContext.

The Internet Service Manager API. Summary.

11. The WinInet API.

Using the WinInet C API.

Handles. Error Handling. Passing Buffer Parameters. Asynchronous I/O.

General Internet Functions.

Beginning a WinInet Session. Setting Handle Options. Querying Handle Options. Verifying Internet Connectivity. Connecting to a Server. Adding a Callback Function. Working with URLs. Basic File Operations. Querying Data Availability. Reading Data. Moving the File Pointer. Writing to Internet Files.

FTP Client Functions.

The Current Directory. Creating and Removing Directories. Finding Files. Retrieving a File. Sending a File. Opening a File on the FTP Server. Other FTP File Operations.

HTTP Client Functions.

HTTP Requests. Handling <F35014M>HttpSendRequest() Errors. Retrieving Response Information. Getting Your Hands in the Cookie Jar. Working with the Cache.

Gopher Client Functions. MFC WinInet Classes.

<F35014M>CInternetSession. Connection Classes. File Classes. <F35014M>CInternetException. Using <F35014M>CInternetSession. Working with FTP. Working with HTTP. Working with Gopher.

Summary.

12. MFC HTML Support.

Understanding Dynamic HTML. Using the Win32 WebBrowser ActiveX Control.

The WebBrowser Control Architecture. An Example Project Using the WebBrowser Control.

The <F35014M>CHtmlView Class.

Navigating with <F35014M>CHtmlView. Other Useful <F35014M>CHtmlView Functions. Adding Dynamic HTML to Your Programs.

Using MFC and Dynamic HTML.

Simple Navigation Using <F35014M>CHtmlView. Navigating to a Source File. Navigating to the User's Home Page. Using a Dynamic HTML Resource.

Summary.

IV. ADVANCED PROGRAMMING TOPICS.

13. Using the Standard C++ Library.

Standard C++ Library. Standard Template Library (STL). Containers.

Sequence Containers. Associative Containers.

Iterators. Algorithms.

<F35014M>count(). find(). for_each(). merge(). sort(). swap(). Using<F35014M> _if: The <F35014M>replace_if () Algorithm. Reverse Iterator.

Using STL with MFC and ATL.

Using STL with MFC. Introduction to ATL. ATL Versus MFC.

Summary.

14. Error Detection and Exception Handling Techniques.

Structured Exception Handling.

The Structured Exception Method. A Look at Software Exceptions. A Look at Hardware Exceptions. Structured Exception Handling Functions.

C++ Exception Handling.

Using C++ Exceptions. Exception-Handling Overhead.

MFC Error and Exception Handling.

MFC Exception Macros. The Advantages of Converting from MFC Exception Macros. Predefined Exceptions for MFC. Using <F35014M>CFileException. Using <F35014M>CMemoryException. Using <F35014M>CResourceCollection. Using <F35014M>CArchiveException. Using <F35014M>CDaoException. Using OLE Exceptions: <F35014M>COleException and <F35014M>COleDispatchException. Using <F35014M>NotSupportedException. Using <F35014M>CUserException.

Summary.

15. Debugging and Profiling Strategies.

MFC Support for Debugging. Techniques for Debugging Your MFC Application.

<F35014M>AfxDump. The <F35014M>TRACER.EXE Utility. MFC Diagnostic Features. Detecting Memory Leaks.

Using the DevStudio IDE Debugger.

Compiler Warning Levels. Debug Info Settings. Using the Source Browser Tool. Breakpoints and Single-Stepping. Debugger Windows.

Using Spy++.

Tree View. Messages View. Processes View. Threads View.

Using the OLE-COM Object Viewer. Using the Process Viewer. Performing Remote Debugging. Troubleshooting.

Attaching to Running Processes. Using Dr Watson Logs.

Profiling Your Application.

Building the Project for Function Profiling. Line Profiling. Profiling with PREP, PROFILE, and PLIST.

Summary.

16. Multithreading.

Win32 Processes, Threads, and Synchronization.

Understanding Threads. The Need for Synchronization.

Using Multiple Threads in Your Application.

MFC Objects and Threads. Types of Threads.

Using Worker Threads.

Starting the Thread. Implementing a Thread Function. Accessing a Thread's Return Code.

Using User-Interface Threads.

Creating the Thread. Creating a Thread Class. Initializing New Threads. Handling Messages in Threads. Terminating Threads. Thread Local Storage.

Thread Synchronization.

Potential Pitfalls. <F35014M>CCriticalSection. <F35014M>CMutex. CSemaphore. CEvent. CSingleLock. CMultiLock.

Creating a New Process. Summary.

17. Using Scripting and Other Tools to Automate the Visual C++ IDE.

The Developer Studio Object Model.

The Objects Exposed in Developer Studio.

Using VBScript to Write Developer Studio Macros.

Declaring Variables. VBScript Subroutines. Using Functions in VBScript. Creating a VBScript Macro. Removing a Developer Studio Macro File. Example Macros Included with Visual C++. Debugging a Visual Studio Macro. Adding a VBScript Macro to the Toolbar.

Writing Developer Studio Add-Ins.

Using the Developer Studio Add-In Wizard. The Developer Studio Add-in Architecture. Adding Command-Handling Code. Handling Developer Studio Events.

The SourceInfo Add-In.

Adding the Source Information Dialog Box to the Project. Adding Command-Handling Code to the Project. Modifying the Toolbar. Using the SourceInfo Add-in.

Summary.

V. DATABASE PROGRAMMING.

18. Creating Custom AppWizards.

How Do AppWizards Work? Creating a Custom AppWizard.

Starting a New AppWizard Project.

Components of a Custom AppWizard Project. Template Files.

The <F35014M>newproj.inf Template File. Macros in Template Files. Directives in Template Files. The <F35014M>confirm.inf Template File. Text Templates. Binary Resource Templates.

Programming Your AppWizard DLL.

Defining Macros. Creating Step Dialog Boxes.

Building a Custom AppWizard. Debugging a Custom AppWizard. Summary.

19. Database Overview.

ODBC 4.0. OLE DB and ATL's Database Classes. ActiveX Data Objects (ADO). MFC's Database Classes. Structured Query Language. Data Definition Language.

Tables. Procedures. Triggers.

Data Control Language.

Granting Privileges. Revoking Privileges.

Data Manipulation Language.

<F35014M>SELECT Statements. <F35014M>INSERT Statements. <F35014M>DELETE Statements. <F35014M>UPDATE Statements.

Summary.

20. ODBC Programming.

ODBC Architecture.

ODBC Drivers. ODBC Driver Manager. Data Sources. ODBC Data Source Administrator. ODBC Installation and Setup Programming.

ODBC API Basics.

ODBC Handles. ODBC Data Types.

Creating ODBC Applications.

Allocating and Freeing ODBC Handles. ODBC Error Handling. Connecting to a Data Source. <F35014M>SQLDriverConnect(). <F35014M>SQLBrowseConnect(). <F35014M>SQLDataSources(). Retrieving Connection Information.

Executing SQL Statements.

Statement Handles. <F35014M>SQLExecDirect(). Prepared SQL Statements. <F35014M>SQLExecute(). Working with Parameters.

Working with Result Sets.

Binding Columns. <F35014M>SQLBindCol(). <F35014M>SQLFetch(). Closing the Cursor. Reusing Statement Handles. <F35014M>SQLGetData(). Column Information. Retrieving More Than One Row at a Time. Block Cursors. Scrollable Cursors. The ODBC Cursor Library. Using Block Cursors. Using Scrollable Cursors.

Inserting, Updating, and Deleting Rows.

Positioned Updates and Deletions. <F35014M>SQLBulkOperations().

Asynchronous Operations. Transactions.

ODBC Commit Modes. Transaction Isolation Levels. Cursor Concurrency Types.

Catalog Functions. Summary.

21. MFC Database Classes.

Using the AppWizard to Generate MFC Classes.

Step 1. Step 2. Step 3. Step 4. Step 5. Step 6. Step 7.

The <F35014M>CRecordset Class.

Record Field Exchange. <F35014M>GetFieldValue(). Refreshing the Recordset. Moving About in the Recordset. Changing Data in a Recordset.

The <F35014M>CRecordView Class.

Dialog Data Exchange with <F35014M>CRecordView. <F35014M>OnGetRecordset(). CRecordView: :OnMove().

The <F35014M>CDatabase Class.

Executing SQL Statements with <F35014M>CDatabase. Transactions with <F35014M>CDatabase. Using the ODBC API Directly.

Exception Handling. Bulk Row Operations.

Opening a <F35014M>CRecordset for Bulk RFX. Implementing Bulk Record Field Exchange. Fetching Bulk Records. Using Single-Row Functions.

Summary.

22. Using OLE DB.

OLE DB Architecture. Developing an OLE DB Application.

Adding an ATL OLE DB Consumer Object. Consumer Components. Data Source Properties. Using a Consumer. Opening and Closing a Rowset. Catching OLE DB Errors.

Retrieving Column Information.

<F35014M>GetColumnInfo(). DBCOLUMNINFO. GetColumnsRowset().

Using Transactions. Using Enumerators. Summary.

23. Programming with ADO.

ADO Objects. Connection Objects.

<F35014M>ADOConnection Properties. <F35014M>ADOConnection Methods.

<F35014M>ADOCommand Objects.

<F35014M>ADOCommand Properties. <F35014M>ADOCommand Methods.

<F35014M>ADORecordset Objects.

<F35014M>ADORecordset Properties. <F35014M>ADORecordset Methods.

<F35014M>ADOFields Collections and <F35014M>ADOField Objects.

<F35014M>ADOFields Collection Members. ADOField Object Properties. <F35014M>ADOField Object Methods.

<F35014M>ADOParameter Objects and the <F35014M>ADOParameters Collection.

<F35014M>ADOParameters Collection Members. <F35014M>ADOParameter Object Properties. <F35014M>ADOParameter Object Methods.

<F35014M>ADOProperty Objects and <F35014M>ADOProperties Collections.

<F35014M>ADOProperties Collection Members. <F35014M>ADOProperty Object Properties.

Writing a Visual C++ ADO Application.

Step 1—Creating Connections and Recordsets ADO Objects. Step 2—Connecting to a Database Through ADO. Step 3—Opening an ADO Recordset. Step 4—Closing the Connection and Recordset. Step 5—Writing an <F35014M>UpdateData Routine for ADO. Step 6—Navigating Through a Recordset. Step 7—Inserting into the Recordset. Step 8—Deleting from the Recordset.

Processing ADO Errors.

ADO <F35014M>HRESULT Values, <F35014M>FAILED, and <F35014M>SUCCEEDED. <F35014M>ADOErrors Collection Members. <F35014M>Error Object Properties. ADO C++ Exceptions. The <F35014M>Errors Collection.

Enhanced ADO Recordset Functionality.

Limiting the Rows in a Recordset. Filtering Rows in the Recordset. Refreshing the Recordset. <F35014M>Move(). Absolute Positioning. Scrolling by Pages. Using Bookmarks.

Executing Commands. Transactions. Summary.

VI. MFC SUPPORT FOR COM AND ACTIVEX.

24. Overview of COM and Active Technologies.

COM, OLE, and Active Technology History in a Nutshell. COM and OLE from the Eyes of the End User. COM, OLE, and Active Technologies from a Programmer's View.

Component Object Model (COM). Structured Storage. Monikers (Persistent Naming). Uniform Data Transfer (UDT). OLE Documents. Automation. ActiveX Controls.

Evolving OLE with Active Technologies.

Active Documents. ActiveX Controls. COM. Internet Monikers.

New Active Technologies.

Active Hyperlinks. NetShow. Active Scripting. Code Signing. HTML Extensions. ActiveMovie.

Summary.

25. Active Documents.

Just What Is an Active Document? Some Details About Active Documents. The COM Interfaces.

<F35014M>IOleObject. IDataObject. IPersistStorage. IPersistFile (Optional). <F35014M>IOleDocument. IOleInPlaceObject. IOleInPlaceActiveObject. IOleDocumentView. IPrint. IOleCommandTarget.

The Active Template Library.

ATL Classes Required for Active Document Support.

The ACTIVEDOC Program.

<F35014M>activectl.h. oledocument.h. activedoc.htm.

Summary.

26. Active Containers.

Just What Is an Active Document Container? Some Details About Active Document Containers.

Structured Storage. Monikers. Uniform Data Transfer. Embedded Objects. Linked Objects. Drag-and-Drop. In-Place Activation. Active Documents.

The COM Interfaces.

<F35014M>IOleInPlaceFrame. IOleCommandTarget. IOleInPlaceUIWindow. IOleContainer. IOleClientSite. IAdviseSink. IOleDocumentSite. IOleInPlaceSite. IContinueCallback.

Building an Active Document Container.

Active Document Container Support in MFC. The Pocket Project. Creating the Pocket Project.

Summary.

27. Active Servers.

Active Servers Introduction. Three-Tier Development Using Server Components. MFC Versus Active Template Libraries. Designing an MFC Miniserver.

AppWizard: Step-by-Step. A Closer Look at the <F35014M>GLServer Classes. Combining Container and Server Menus During Activation. Testing Out the GLServer Skeleton. Adding Customization to the GLServer Skeleton. Testing the GLServer Example.

Designing an MFC Automation Server.

Using MFC AppWizard to Create Automation Servers. A Closer Look at the <F35014M>MFCAuto Classes. Adding Customization to the <F35014M>MFCAuto Sample Skeleton. Testing the <F35014M>MFCAuto Example.

Summary.

28. ActiveX Controls.

A Short History. What Is an ActiveX Control?

ActiveX Control Architecture. Properties. Events. Methods.

ActiveX Control Interfaces. ActiveX Controls.

Supporting the <F35014M>IUnknown Interface. A Control Must Be Self-Registering. Component Categories. Component Categories and Interoperability. Code Signing. Performance Considerations.

Reinventing the Wheel.

Visual C++ ActiveX Controls.

Testing an ActiveX Control.

Displaying a Control on a Web Page. ActiveX Control Pad. ActiveX Control Test Container. ActiveX Controls in Development Tools.

Methods of Creating ActiveX Controls. Creating an ActiveX Control with Visual C++ and MFC.

Using Visual C++ and MFC for ActiveX Controls. MFC Encapsulation of ActiveX and ActiveX Controls.

Summary.

VII. USING THE ACTIVE TEMPLATE LIBRARY.

29. ATL Architecture.

The History of ATL. ATL's Advanced Use of Templates. Commonly Used ATL Classes.

High-Level ATL Classes. ATL Helper Classes.

Using the Interface Definition Language. ATL Wizards.

Using the ATL COM AppWizard. Using the ATL Object Wizard. Merging the Proxy/Stub Code with Your DLL.

Summary.

30. Creating COM Objects Using ATL.

Using IDL to Describe Custom COM Objects.

Understanding MIDL Attributes. Compiling an IDL Source File with MIDL. Using Type Libraries. Using Structures in IDL. Using Enumerations in IDL. Pointers in IDL. Using Direction Attributes in IDL.

A Custom COM Class Example.

Defining the <F35014M>IOsVersion Interface. Modifications to the <F35014M>COsVersion Declaration. Implementing the <F35014M>COsVersion Class. Compiling and Registering the Standard Proxy/Stub DLL. Creating Test Clients for <F35014M>OsVersionInfo.

Summary.

31. Creating ActiveX Controls Using ATL.

ATL Control Classes.

Implementing Stock Properties Using ATL. Implementing Custom Properties Using ATL. Using Ambient Properties with ATL. Adding Message and Event Handlers.

Connection Points. Creating Scriptable Controls.

Requirements for Scriptable Controls. Persistence for ActiveX Controls. A Scriptable ActiveX Control.

Summary.

32. Using ATL to Create MTS and COM+ Components.

Understanding Transactions. COM+ and MTS Features.

Understanding Contexts. Concurrency in COM+. Just-In-Time Activation. What Is Object Pooling? Registering a COM+ Application. Configuring Properties for a COM+ Application. Registering a COM+ Component. Configuring Properties for a COM+ Component.

An Example of a COM+ Application.

The VcBank Database. Creating the VCBankApp COM+ Module. Registering the <F35014M>VcBank COM+ Application. A Client Application for <F35014M>VcBank.

Summary.

VIII. FINISHING TOUCHES.

33. Adding Windows Help.

Windows Help Basics.

Understanding WinHelp. Understanding HTML Help.

Help Options in AppWizard. Help Project Components. Authoring Help Topics Using WinHelp.

Creating Help Topics. Adding Hot Spots. Including Graphics in Help Files.

Managing Help Projects.

Help Project Files. Contents Files. Compiling Help Projects. Testing Help Projects.

Calling WinHelp from Your Applications.

<F35014M>::WinHelp(). Using Help with MFC.

Adding Context-Sensitive Help. Using HTML Help with Visual C++.

Creating an HTML Help Project. Integrating HTML into a Visual C++ Project.

Summary.

IX. APPENDIX.

A. Additional Resources.

Visual C++ Resources.

Microsoft Developer's Network. Hard-Copy Visual C++ Documentation. Magazines and Journals. Conferences. Software. Books on Visual C++, MFC, and Windows Programming. Internet. Newsgroups and FAQs.

Summary.

Updates

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020