Cover image for Software application development : a visual C++, MFC, and STL tutorial
Title:
Software application development : a visual C++, MFC, and STL tutorial
Personal Author:
Series:
Chapman & Hall/CRC computer & information science series

Chapman & Hall/CRC computer & information science series
Publication Information:
Boca Raton, FL : Chapman and Hall/CRC, 2013
Physical Description:
xxxviii, 1177 p. : ill. ; 26 cm.
ISBN:
9781466511002
Title Subject:

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000010327987 QA76.76.A65 F69 2013 Open Access Book Book
Searching...

On Order

Summary

Summary

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
Menus
Application Icon
Toolbars
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
Menus
Toolbars
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
Serialization
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
Annotations
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
Conclusion
Project Review
Improvements
Appendix A ControlEng: Win32 Console Application
Appendix B Constructing Connections: An Exploration
Appendix C NodeArcConnectivity: Win32 Console Application
Appendix D Debugging: An
Appendix E MatrixInversion: Win32 Console Application
Appendix F Using DiagramEng
Index