Cross-Platform GUI Programming with wxWidgets
Prentice Hall
978-0-13-147381-2 (ISBN)
- Titel ist leider vergriffen;
keine Neuauflage - Artikel merken
–Mitch Kapor, founder of Lotus Software and the Open Source Applications Foundation
Build advanced cross-platform applications that support native look-and-feel on Windows, Linux, Unix, Mac OS X, and even Pocket PC
Master wxWidgets from start to finish–even if you've never built GUI applications before
Leverage advanced wxWidgets capabilities: networking, multithreading, streaming, and more
CD-ROM: library of development tools, source code, and sample applications
Foreword by Mitch Kapor, founder, Lotus Development and Open Source Application Foundation
wxWidgets is an easy-to-use, open source C++ API for writing GUI applications that run on Windows, Linux, Unix, Mac OS X, and even Pocket PC–supporting each platform's native look and feel with virtually no additional coding. Now, its creator and two leading developers teach you all you need to know to write robust cross-platform software with wxWidgets. This book covers everything from dialog boxes to drag-and-drop, from networking to multithreading. It includes all the tools and code you need to get great results, fast. From AMD to AOL, Lockheed Martin to Xerox, world-class developers are using wxWidgets to save money, increase efficiency, and reach new markets. With this book, you can, too.
wxWidgets quickstart: event/input handling, window layouts, drawing, printing, dialogs, and more
Working with window classes, from simple to advanced
Memory management, debugging, error checking, internationalization, and other advanced topics
Includes extensive code samples for Windows, Linux (GTK+), and Mac OS X
About the CD-ROM The CD-ROM contains all of the source code from the book; wxWidgets distributions for Windows, Linux, Unix, Mac OS X, and other platforms; the wxWidgets reference guide; and development tools including the OpenWatcom C++ compiler, the poEdit translation helper, and the DialogBlocks user interface builder.
© Copyright Pearson Education. All rights reserved.
Julian Smart has degrees from the University of St. Andrews and the University of Dundee. After working on model-based reasoning at the Scottish Crop Research Institute, he moved to the Artificial Intelligence Applications Institute at the University of Edinburgh, where he founded the wxWidgets project in 1992. Since starting Anthemion Software in 1996, Julian has been helping other companies deploy wxWidgets, and he sells tools for programmers, including DialogBlocks and HelpBlocks. He has worked as a consultant for various companies including Borland and was a member of Red Hat's eCos team, writing GUI tools to support the embedded operating system. In 2004, Julian and his wife Harriet launched a consumer product for fiction writers called Writer's Café, written with wxWidgets. Julian and Harriet live in Edinburgh with their daughter Toni. Kevin Hock has degrees from Miami University (Oxford, Ohio) in Computer Science and Accounting and has taught courses at Miami in both Java and client-server systems. In 2002, he started work on an instant messaging system and founded BitWise Communications, LLC, in 2003, offering both professional and personal instant messaging. During the course of developing BitWise using wxWidgets, Kevin became a wxWidgets developer and has provided enhancements to all platforms. Kevin lives in Oxford, Ohio. Stefan Csomor is director and owner of Advanced Concepts AG, a company that specializes in cross-platform development and consulting. In addition to being a qualified medical doctor, he has more than 15 years of experience in object-oriented programming and has been writing software for 25 years. Stefan is the main author of the Mac OS port of wxWidgets. © Copyright Pearson Education. All rights reserved.
Foreword by Mitch Kapor.
Preface.
Acknowledgments.
About the Authors.
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
wxMSW
wxGTK
wxX11
wxMotif
wxMac
wxCocoa
wxWinCE
wxPalmOS
wxOS2
wxMGL
Internal Organization
Summary
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
3. Event Handling.
Event-Driven Programming
Event Tables and Handlers
Skipping Events
Pluggable Event Handlers
Dynamic Event Handlers
Window Identifiers
Defining Custom Events
Summary
4. Window Basics.
Anatomy of a Window
The Concept of a Window
Client and Non-Client Areas
Scrollbars
Caret and Cursor
Top-Level Windows
Coordinate System
Painting
Color and Font
Window Variant
Sizing
Input
Idle Time Processing and UI Updates
Window Creation and Deletion
Window Styles
A Quick Guide to the Window Classes
Base Window Classes
Top-Level Windows
Container Windows
Non-Static Controls
Static Controls
Menus
Control Bars
Base Window Classes
wxWindow
wxControl
Top-Level Windows
wxFrame
wxMDIParentFrame
wxMDIChildFrame
wxDialog
wxPopupWindow
Container Windows
wxPanel
wxNotebook
wxScrolledWindow
wxSplitterWindow
Non-Static Controls
wxButton
wxButton Labels
wxBitmapButton
wxChoice
wxComboBox
wxCheckBox
wxListBox and wxCheckListBox
wxRadioBox
wxRadioButton
wxScrollBar
wxSpinButton
wxSpinCtrl
wxSlider
wxTextCtrl
wxToggleButton
Static Controls
wxGauge
wxStaticText
wxStaticBitmap
wxStaticLine
wxStaticBox
Menus
wxMenu
Control Bars
wxMenuBar
wxToolBar
wxStatusBar
Summary
5. Drawing and Printing.
Understanding Device Contexts
Available Device Contexts
Drawing on Windows with wxClientDC
Erasing Window Backgrounds
Drawing on Windows with wxPaintDC
Drawing on Bitmaps with wxMemoryDC
Creating Metafiles with wxMetafileDC
Accessing the Screen with wxScreenDC
Printing with wxPrinterDC and wxPostScriptDC
Drawing Tools
wxColour
wxPen
wxBrush
wxFont
wxPalette
Device Context Drawing Functions
Drawing Text
Drawing Lines and Shapes
Drawing Splines
Drawing Bitmaps
Filling Arbitrary Areas
Logical Functions
Using the Printing Framework
More on wxPrintout
Scaling for Printing and Previewing
Printing under Unix with GTK+
3D Graphics with wxGLCanvas
Summary
6. Handling Input.
Mouse Input
Handling Button and Motion Events
Handling Mouse Wheel Events
Handling Keyboard Events
An Example Character Event Handler
Key Code Translation
Modifier Key Variations
Accelerators
Handling Joystick Events
wxJoystick Events
wxJoystickEvent Member Functions
wxJoystick Member Functions
Summary
7. Window Layout Using Sizers.
Layout Basics
Sizers
Common Features of Sizers
Programming with Sizers
Programming with wxBoxSizer
Programming with wxStaticBoxSizer
Programming with wxGridSizer
Programming with wxFlexGridSizer
Programming with wxGridBagSizer
Further Layout Issues
Dialog Units
Platform-Adaptive Layouts
Dynamic Layouts
Summary
8. Using Standard Dialogs.
Informative Dialogs
wxMessageDialog
wxProgressDialog
wxProgressDialog Example
wxBusyInfo
wxShowTip
File and Directory Dialogs
wxFileDialog
wxDirDialog
Choice and Selection Dialogs
wxColourDialog
wxFontDialog
wxSingleChoiceDialog
wxMultiChoiceDialog
Entry Dialogs
wxNumberEntryDialog
wxTextEntryDialog and wxPasswordEntryDialog
wxFindReplaceDialog
Printing Dialogs
wxPageSetupDialog
wxPrintDialog
Summary
9. Writing Custom Dialogs.
Steps in Creating a Custom Dialog
An Example: PersonalRecordDialog
Deriving a New Class
Designing Data Storage
Coding the Controls and Layout
Data Transfer and Validation
Handling Events
Handling UI Updates
Adding Help
The Complete Class
Invoking the Dialog
Adapting Dialogs for Small Devices
Further Considerations in Dialog Design
Keyboard Navigation
Data and UI Separation
Layout
Aesthetics
Alternatives to Dialogs
Using wxWidgets Resource Files
Loading Resources
Using Binary and Embedded Resource Files
Translating Resources
The XRC Format
Writing Resource Handlers
Foreign Controls
Summary
10. Programming with Images.
Image Classes in wxWidgets
Programming with wxBitmap
Creating a wxBitmap
Setting a wxMask
The XPM Format
Drawing with Bitmaps
Packaging Bitmap Resources
Programming with wxIcon
Creating a wxIcon
Using wxIcon
Associating an Icon with an Application
Programming with wxCursor
Creating a wxCursor
Using wxCursor
Using wxSetCursorEvent
Programming with wxImage
Loading and Saving Images
Transparency
Transformations
Color Reduction
Manipulating wxImage Data Directly
Image Lists and Icon Bundles
Customizing Art in wxWidgets
Summary
11. Clipboard and Drag and Drop.
Data Objects
Data Source Duties
Data Target Duties
Using the Clipboard
Implementing Drag and Drop
Implementing a Drag Source
Implementing a Drop Target
Using Standard Drop Targets
Creating a Custom Drop Target
More on wxDataObject
Drag and Drop Helpers in wxWidgets
Summary
12. Advanced Window Classes.
wxTreeCtrl
wxTreeCtrl Styles
wxTreeCtrl Events
wxTreeCtrl Member Functions
wxListCtrl
wxListCtrl Styles
wxListCtrl Events
wxListItem
wxListCtrl Member Functions
Using wxListCtrl
Virtual List Controls
wxWizard
wxWizard Events
wxWizard Member Functions
wxWizard Example
wxHtmlWindow
wxHtmlWindow Styles
wxHtmlWindow Member Functions
Embedding Windows in HTML Pages
HTML Printing
wxGrid
The wxGrid System of Classes
wxGrid Events
wxGrid Member Functions
wxTaskBarIcon
wxTaskBarIcon Events
wxTaskBarIcon Member Functions
Writing Your Own Controls
The Custom Control Declaration
Adding DoGetBestSize
Defining a New Event Class
Displaying Information on the Control
Handling Input
Defining Default Event Handlers
Implementing Validators
Implementing Resource Handlers
Determining Control Appearance
A More Complex Example: wxThumbnailCtrl
Summary
13. Data Structure Classes.
Why Not STL?
Strings
Using wxString
wxString, Characters, and String Literals
Basic wxString to C Pointer Conversions
Standard C String Functions
Converting to and from Numbers
wxStringTokenizer
wxRegEx
wxArray
Array Types
wxArrayString
Array Construction, Destruction, and Memory Management
Array Sample Code
wxList and wxNode
wxHashMap
Storing and Processing Dates and Times
wxDateTime
wxDateTime Constructors and Modifiers
wxDateTime Accessors
Getting the Current Time
Parsing and Formatting Dates
Date Comparisons
Date Arithmetic
Helper Data Structures
wxObject
wxLongLong
wxPoint and wxRealPoint
wxRect
wxRegion
wxSize
wxVariant
Summary
14. Files and Streams.
File Classes and Functions
wxFile and wxFFile
wxTextFile
wxTempFile
wxDir
wxFileName
File Functions
Stream Classes
File Streams
Memory and String Streams
Reading and Writing Data Types
Socket Streams
Filter Streams
Zip Streams
Virtual File Systems
Summary
15. Memory Management, Debugging, and Error Checking.
Memory Management Basics
Creating and Deleting Window Objects
Creating and Copying Drawing Objects
Initializing Your Application Object
Cleaning Up Your Application
Detecting Memory Leaks and Other Errors
Facilities for Defensive Programming
Error Reporting
wxMessageOutput Versus wxLog
Providing Run-Time Type Information
Using wxModule
Loading Dynamic Libraries
Exception Handling
Debugging Tips
Debugging X11 Errors
Simplify the Problem
Debugging a Release Build
Summary
16. Writing International Applications.
Introduction to Internationalization
Providing Translations
poEdit
Step-by-Step Guide to Using Message Catalogs
Using wxLocale
Character Encodings and Unicode
Converting Data
wxEncodingConverter
wxCSConv (wxMBConv)
Converting Outside of a Temporary Buffer
Help Files
Numbers and Dates
Other Media
A Simple Sample
Summary
17. Writing Multithreaded Applications.
When to Use Threads, and When Not To
Using wxThread
Creation
Specifying Stack Size
Specifying Priority
Starting the Thread
How to Pause a Thread or Wait for an External Condition
Termination
Synchronization Objects
wxMutex
Deadlocks
wxCriticalSection
wxCondition
wxSemaphore
The wxWidgets Thread Sample
Alternatives to Multithreading
Using wxTimer
Idle Time Processing
Yielding
Summary
18. Programming with wxSocket.
Socket Classes and Functionality Overview
Introduction to Sockets and Basic Socket Processing
The Client
The Server
Connecting to a Server
Socket Events
Socket Status and Error Notifications
Sending and Receiving Socket Data
Creating a Server
Socket Event Recap
Socket Flags
Blocking and Non-Blocking Sockets in wxWidgets
How Flags Affect Socket Behavior
Using wxSocket as a Standard Socket
Using Socket Streams
File Sending Thread
File Receiving Thread
Alternatives to wxSocket
Summary
19. Working with Documents and Views.
Document/View Basics
Step 1: Choose an Interface Style
Step 2: Create and Use Frame Classes
Step 3: Define Your Document and View Classes
Step 4: Define Your Window Classes
Step 5: Use wxDocManager and wxDocTemplate
Other Document/View Capabilities
Standard Identifiers
Printing and Previewing
File History
Explicit Document Creation
Strategies for Implementing Undo/Redo
Summary
20. Perfecting Your Application.
Single Instance or Multiple Instances?
Modifying Event Handling
Reducing Flicker
Implementing Online Help
Using a Help Controller
Extended wxWidgets HTML Help
Authoring Help
Other Ways to Provide Help
Context-Sensitive Help and Tooltips
Menu Help
Parsing the Command Line
Storing Application Resources
Reducing the Number of Data Files
Finding the Application Path
Invoking Other Applications
Running an Application
Launching Documents
Redirecting Process Input and Output
Managing Application Settings
Storing Settings
Editing Settings
Application Installation
Installation on Windows
Installation on Linux
Installation on Mac OS X
Following UI Design Guidelines
Standard Buttons
Menus
Icons
Fonts and Colors
Application Termination Behavior
Further Reading
Summary
Appendix A. Installing wxWidgets.
Appendix B. Building Your Own wxWidgets Applications.
Appendix C. Creating Applications with DialogBlocks.
Appendix D. Other Features in wxWidgets.
Appendix E. Third-Party Tools for wxWidgets.
Appendix F. wxWidgets Application Showcase.
Appendix G. Using the CD-ROM.
Appendix H. How wxWidgets Processes Events.
Appendix I. Event Classes and Macros.
Appendix J. Code Listings.
Appendix K. Porting from MFC.
Glossary.
Index.
Erscheint lt. Verlag | 4.8.2005 |
---|---|
Reihe/Serie | Bruce Peren's Open Source Series |
Verlagsort | Upper Saddle River |
Sprache | englisch |
Maße | 100 x 100 mm |
Gewicht | 100 g |
Themenwelt | Informatik ► Betriebssysteme / Server ► Unix / Linux |
Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge | |
Informatik ► Software Entwicklung ► User Interfaces (HCI) | |
Schlagworte | Benutzeroberfläche • Benutzeroberfläche / GUI • Open Source • Programmierung |
ISBN-10 | 0-13-147381-6 / 0131473816 |
ISBN-13 | 978-0-13-147381-2 / 9780131473812 |
Zustand | Neuware |
Haben Sie eine Frage zum Produkt? |