Software Application Development: A Visual C++, MFC, and STL Tutorial, 1st Edition (Paperback) book cover

Software Application Development

A Visual C++, MFC, and STL Tutorial, 1st Edition

By Bud Fox, Ph.D., Zhang Wenzu, Ph.D., Tan May Ling, M.Sc.

Chapman and Hall/CRC

1,216 pages | 246 B/W Illus.

Purchasing Options:$ = USD
Paperback: 9781466511002
pub: 2012-08-08
SAVE ~$19.19
Hardback: 9781138468450
pub: 2018-06-28
SAVE ~$39.00
eBook (VitalSource) : 9780429185595
pub: 2012-08-08
from $45.98

FREE Standard Shipping!


Software Application Development: A Visual C++, MFC, and STL Tutorial providesa detailed account of the software development process using Visual C++, MFC, and STL. It covers everything from the design to the implementation of all software modules, resulting in a demonstration application prototype which may be used to efficiently represent mathematical equations, perform interactive and intuitive model-building, and conduct control engineering experiments.

All computer code is included, allowing developers to extend and reuse the software modules for their own project work. The book’s tutorial-like approach empowers students and practitioners with the knowledge and skills required to perform disciplined, quality, real-world software engineering.

Table of Contents

Part I: User Interaction

Object-Oriented Analysis and Design

Background Research

Software Requirements

General Use Case Narratives

Use Case Scenarios and Conversations

Noun and Verb Analysis

Object Analysis

Preliminary Class Diagram

Basic Program Implementing the Class Structure

Initial Graphical User Interface

Application Wizard


Application Icon


Block Library Dialog Window

Add Functionality to the Common Blocks Toolbar Buttons

Constructing Blocks

Merging the WIN32 Console Application with the Visual C++ Application

Modifying Program Structure for Block Construction

Drawing of Primitive Block Shapes

Completing Block Construction

Drawing Block Graphical Detail

Constructing Block Ports

Block-Based Port Position

Changing the CPort Class

Augmenting the CBlock Class

Augmenting the CBlockShape Class

Derived-Block Constructors

Drawing Ports

Constructing Connections

Adding Connections to the DiagramEng Project

Context Menu

Moving Blocks and Connections

Moving Blocks

Moving Connection End Points

Inserting and Moving Connection-Based Bend Points

Deletion of Connections and Bend Points

Automatic Block Placement

Hypothetical Interactive Block Positioning

Actual Improved Automatic Block Positioning

Connection-Based Bend Points

Attaching a Connection Tail Point to a Bend Point

Deletion of a Bend Point to Which a Connection is Attached

Deletion of a Connection with a Bend Point to Which a Connection is Attached

Problem Concerning the Insertion of Bend Points

Automatic Attachment of Connection End Points upon Initial Construction

Deletion of Blocks with Attached Connections

Block Dialog Windows

Processing a Left-Button-Double-Click Event

Adding Dialog Windows to Accept User Input

Conversion of String Input to Double Data

Conversion of CString Input Strings to Double Member Data

Augmenting the CBlock-Derived Classes

Moving Multiple Items

Edit the TrackItem() Function to Call TrackMultipleItems()

Add a TrackMultipleItems() Function to CDiagramEngDoc

Add a Function for a Key-Down Event to CDiagramEngView

Add Key-Flag-Based Members to CDiagramEngDoc

Flow of Control in the TrackMultipleItems() Function

Add a Toolbar Button to Activate Multiple Item Tracking

Addition of a Tree View Control

Add a Tree View Control Dialog Window

Docking of the Tree Dialog Window as a Tree Dialog Bar

Resetting the Appropriate Dialog

Controlling the Toolbar Visibility

Review of Menu and Toolbar-Based Functionality: Part I



Functionality to be Added

Context Menu Extension

Numerical Solver Dialog Window

Deleting Multiple Grouped Items

Setting of Item Properties

Setting Port Properties

Setting Divide Block Ports

Setting Sum Block Ports

Drawing Ports Depending on Connection Status

Drawing Port Signs

Preparation for Adjustment of Port Properties

Dialog-Based Port Property Setting

Deleting Ports

Key-Based Item Movement

Add a Fine Move Item Entry to the Context Menu

Add Members to the CDiagramEngDoc Class

Edit the CDiagramEngView::OnKeyDown() Function

Add a FineMoveItem() Function

Add a FineMoveBlock() Function

Add a FineMoveConnectionBendPoint() Function

Fine Movement Process Control Flow

Reversing Block Direction

Add a Reverse Block Entry to the Context Menu

Add a ReverseBlockDirection() Function to the CBlock Class

Add Accessor Methods to the CBlockShape Class

Add Accessor Methods to the CPort Class

Test the Application

Part II: Model Computation and Data

Model Validation

Validating a Model

Changes to be Made to Draw in the Correct Color

Unique Port and Bend Point Connection

Non-Feedback-Based Signal Propagation

Signals and Systems

Models with Algebraic and Feedback Loops

Signal Propagation

Determination of Feedback Loops

Signal-Based Class Structure

Additions Required for Direct Signal Propagation

Propagating a Simple Direct Signal

Graph Drawing

Addition of Structure to Display an Empty View Window

Supplementing Existing Classes to Access Output Block Data

Plotting Data as a Text String

Plotting Numerical Data as a Graph

Deleting an Output Block and Its View

Adding Functionality to the Output Block Dialog Window

Block Operations

Linear Function Block Data Operation

Signal Generator Block Data Operation

Gain Block Data Operation

Sum Block Data Operation

Derivative Block Data Operation

Integrator Block Data Operation

Divide Block Data Operation

Remaining Block Operation Functions

Preparation for Feedback-Based Signal Propagation

Linear Systems

Nonlinear Systems

Model Assumptions

Determining Initial Output Signals

Adding Functionality to Set the Initial Output Signal

Building the System of Equations Representing the Block Diagram

Stopping a Simulation

Feedback-Based Signal Propagation

Newton-Method-Based Solver

Object-Oriented Transformation of the Newton-Method-Based Solver

Adding the Newton-Method-Based Solver to the DiagramEng Project

Convergence of the Newton Method Used to Compute Models with Feedback Loops

Testing the Newton-Method-Based Code for Models with Feedback Loops

Placing an Edit Box on a Toolbar

Edit the Resource File

Create the Toolbar Edit Box

Update the Toolbar Edit Box

A Memory Leak


System Model Data Structure

Event Handler Functions for File Input/Output

Writing Data Members to a File

Reading Data Members from a File

Saving the Initial Output Signal for the Divide Block

Adding Data-Writing Functionality to the Output Block

Part III: Refinement

Review of Menu and Toolbar-Based Functionality: Part II

Functionality to be Added

Printing and Print Preview

Additions to the DiagramEng Project

Mapping Modes

Augmenting the CDiagramEngView OnBeginPrinting() Function

Augmenting the CDiagramEngView OnPrepareDC() Function

Augmenting the CDiagramEngView OnDraw() Function

Implementing a Scroll View

Coordinate Systems

Conversion from CView to CScrollView

Device Point to Logical Point Coordinate Conversions

Tracking of Multiple Items

Limiting Diagram Entity Placement

Fitting the Logical View to the Physical View

Zooming In and Out of the View

Edit Menu

Selection of All Content

Cut, Copy, and Paste

Undoing and Redoing Editing Actions


Add a CAnnotation Class to the Project

Add an Annotation Dialog Window to the Project

Add an Annotation to a System Model

Deleting Annotations

Moving Annotations

View Menu–Based Actions

Format Menu–Based Actions

Edit Menu–Based Actions

Serialization of the CAnnotation Class

Tools Menu

Tools Menu Implementation: Diagnostic Information

Help Menu

Using DiagramEng

Creating the Using DiagramEng Document

Finalizing the Project

Preventing Usage of Nonfunctional Blocks

Preventing the Building of Subsystems

Disabling Nonfunctional Items

Preparing the Source and Executable Files


Project Review


Appendix A: ControlEng: Win32 Console Application

Appendix B: Constructing Connections: An Exploration

Appendix C: NodeArcConnectivity: Win32 Console Application

Appendix D: Debugging: An Introduction

Appendix E: MatrixInversion: Win32 Console Application

Appendix F: Using DiagramEng


About the Series

Chapman & Hall/CRC Computer and Information Science Series

Learn more…

Subject Categories

BISAC Subject Codes/Headings:
COMPUTERS / Programming / Games
COMPUTERS / Software Development & Engineering / General