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

Software Application Development
A Visual C++, MFC, and STL Tutorial

  • This product is currently out of stock.
ISBN 9781466511002
Published August 8, 2012 by Chapman & Hall
1216 Pages 246 B/W Illustrations

FREE Standard Shipping
USD $105.00

Prices & shipping based on shipping country


Book Description

Software Application Development: A Visual C++, MFC, and STL Tutorial provides a 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

View More