This book is the best way for beginning developers to learn wxWidgets programming in C++. It is a must-have for programmers thinking of using wxWidgets and those already using it.
Chapter 1. Introduction
- What Is wxWidgets?
- Why Use wxWidgets?
- A Brief History of wxWidgets
- The wxWidgets Community
- wxWidgets and Object-Oriented Programming
- License Considerations
- The wxWidgets Architecture
- Summary
Chapter 2. Getting Started
- A Small wxWidgets Sample
- The Application Class
- The Frame Class
- The Event Handlers
- The Frame Constructor
- The Whole Program
- Compiling and Running the Program
- Program Flow
- Summary
Chapter 3. Event Handling
- Event-Driven Programming
- Event Tables and Handlers
- Skipping Events
- Pluggable Event Handlers
- Dynamic Event Handlers
- Window Identifiers
- Defining Custom Events
- Summary
Chapter 4. Window Basics
- Anatomy of a Window
- A Quick Guide to the Window Classes
- Base Window Classes
- Top-Level Windows
- Container Windows
- Non-Static Controls
- Static Controls
- Menus
- Control Bars
- Summary
Chapter 5. Drawing and Printing
- Understanding Device Contexts
- Drawing Tools
- Device Context Drawing Functions
- Using the Printing Framework
- 3D Graphics with wxGLCanvas
- Summary
Chapter 6. Handling Input
- Mouse Input
- Handling Keyboard Events
- Handling Joystick Events
- Summary
Chapter 7. Window Layout Using Sizers
- Layout Basics
- Sizers
- Programming with Sizers
- Further Layout Issues
- Summary
Chapter 8. Using Standard Dialogs
- Informative Dialogs
- File and Directory Dialogs
- Choice and Selection Dialogs
- Entry Dialogs
- Printing Dialogs
- Summary
Chapter 9. Writing Custom Dialogs
- Steps in Creating a Custom Dialog
- An Example: PersonalRecordDialog
- Adapting Dialogs for Small Devices
- Further Considerations in Dialog Design
- Using wxWidgets Resource Files
- Summary
Chapter 10. Programming with Images
- Image Classes in wxWidgets
- Programming with wxBitmap
- Programming with wxIcon
- Programming with wxCursor
- Programming with wxImage
- Image Lists and Icon Bundles
- Customizing Art in wxWidgets
- Summary
Chapter 11. Clipboard and Drag and Drop
- Data Objects
- Using the Clipboard
- Implementing Drag and Drop
- Summary
Chapter 12. Advanced Window Classes
- wxTreeCtrl
- wxListCtrl
- wxWizard
- wxHtmlWindow
- wxGrid
- wxTaskBarIcon
- Writing Your Own Controls
- Summary
Chapter 13. Data Structure Classes
- Why Not STL?
- Strings
- wxArray
- wxList and wxNode
- wxHashMap
- Storing and Processing Dates and Times
- Helper Data Structures
- Summary
Chapter 14. Files and Streams
- File Classes and Functions
- Stream Classes
- Summary
Chapter 15. Memory Management, Debugging, and Error Checking
- Memory Management Basics
- Detecting Memory Leaks and Other Errors
- Facilities for Defensive Programming
- Error Reporting
- Providing Run-Time Type Information
- Using wxModule
- Loading Dynamic Libraries
- Exception Handling
- Debugging Tips
- Summary
Chapter 16. Writing International Applications
- Introduction to Internationalization
- Providing Translations
- Character Encodings and Unicode
- Numbers and Dates
- Other Media
- A Simple Sample
- Summary
Chapter 17. Writing Multithreaded Applications
- When to Use Threads, and When Not To
- Using wxThread
- Synchronization Objects
- The wxWidgets Threads Sample
- Alternatives to Multithreading
- Summary
Chapter 18. Programming with wxSocket
- Socket Classes and Functionality Overview
- Introduction to Sockets and Basic Socket Processing
- Socket Flags
- Using Socket Streams
- Alternatives to wxSocket
- Summary
Chapter 19. Working with Documents and Views
- Document/View Basics
- Other Document/View Capabilities
- Strategies for Implementing Undo/Redo
- Summary
Chapter 20. Perfecting Your Application
- Single Instance or Multiple Instances?
- Modifying Event Handling
- Reducing Flicker
- Implementing Online Help
- Parsing the Command Line
- Storing Application Resources
- Invoking Other Applications
- Managing Application Settings
- Application Installation
- Following UI Design Guidelines
- Summary
Appendix A. Installing wxWidgets
- Choosing Your Development Tools
- Downloading and Unpacking wxWidgets
- Configuration/Build Options
- WindowsMicrosoft Visual Studio
- WindowsMicrosoft Visual C++ Command Line
- WindowsBorland C++
- WindowsMinGW with MSYS
- WindowsMinGW without MSYS
- Linux, Unix, and Mac OS XGCC
- Modifying Setup.h for Further Customizations
- Rebuilding After Updating wxWidgets Files
- Using Contrib Libraries
Appendix B. Building Your Own wxWidgets Applications
- WindowsMicrosoft Visual Studio
- LinuxKDevelop
- Mac OS XXcode
- Any PlatformMakefiles
- Cross-Platform Builds Using Bakefile
- Using wx-config
- wxWidgets Symbols and Headers
Appendix C. Creating Applications with DialogBlocks
- What is DialogBlocks?
- Installing DialogBlocks
- The DialogBlocks Interface
- The DialogBlocks Sample Project
- Compiling the Sample
- Creating a New Project
- Creating a Dialog
- Creating a Frame
- Creating an Application Object
- Debugging Your Application
- Further Information
Appendix D. Other Features in wxWidgets
- Further Window Classes
- ODBC Classes
- MIME Types Manager
- Network Functionality
- Multimedia Classes
- Embedded Web Browsers
- Accessibility
- OLE Automation
- Renderer Classes
- Event Loops
Appendix E. Third-Party Tools for wxWidgets
- Language Bindings
- Tools
- Add-on Libraries
Appendix F. wxWidgets Application Showcase
Appendix G. Using the CD-ROM
- Browsing the CD-ROM
- The CD-ROM Contents
Appendix H. How wxWidgets Processes Events
Appendix I. Event Classes and Macros
Appendix J. Code Listings
- Custom Dialog Class Implementation
- wxWizard Sample Code
Appendix K. Porting from MFC
- General Observations
- Feature Comparison
- Equivalent Functionality
- Further Information
GLOSSARY
wxWidgets is a first-class, open source response to the need for portability in an increasingly heterogeneous computing world. Being tied to specific hardware or a single operating system is often undesirable and sometimes impermissible, hence the well-understood need for cross-platform GUI frameworks. Given the long life of open source products and the often-transient nature of proprietary solutions, developers are wise to base their applications on an infrastructure that is going to survive long-term, as wxWidgets has and will continue to do.
wxWidgets combines countless years' worth of hard-earned wisdom contributed by developers worldwide, abstracting functionality and finding solutions for platform-specific issues. You, the developer, are protected both from shifts in computing trends and from the intricacies and frustrations of each platform's native API.
Becoming a wxWidgets user is an invitation into a community that spans individuals, startups, government organizations, large companies, and open source projects. When you contribute, you are forging a connection between yourself and a community that is broadly representative of the reach of information technology in the 21st century. wxWidgets-based applications may be found not just in the software industry but also in medicine, archaeology, physics, astronomy, processor manufacturing, education, geological exploration, the transport industry, space exploration, and many other fields as well.
"Chandler," the Personal Information Manager now under development at the Open Source Applications Foundation, uses wxWidgets to run under Windows, Mac OS X, and Linux. Some of our developers have become active contributors to the wxWidgets project, following the virtuous circle of open source development.