| | Preface | vii
|
| |
| PART I GETTING STARTED | 1
|
| |
| 1 | Preparing for Application Development | 3
|
| | Software Requirements | 3
|
| | Visual Development Tools | 5
|
| | Additional Tools | 6
|
| | Compiler Precautions | 7
|
| | Using MAKE and NMAKE | 8
|
| | Dynamic Link Libraries | 10
|
| | Project Directory Structure | 11
|
| | Where to Find Additional Tools and Information | 12
|
| | Chapter Summary | 15
|
| 2 | OS/2 and Presentation Manager Basics | 16
|
| | What is OS/2? | 16
|
| | How OS/2 is Structured | 20
|
| | What is Presentation Manager? | 21
|
| | How Does PM Work? | 23
|
| | Goals for PM Applications | 31
|
| | Common User Access | 32
|
| | Other Reference Works | 36
|
| | Chapter Summary | 38
|
| TCP/IP Basics | 39
|
| | What is TCP/IP? | 39
|
| | How is TCP/IP Structured? | 40
|
| | Internet Addressing | 42
|
| | Common Internet Protocols | 43
|
| | TCP/IP Sockets | 45
|
| | Chapter Summary | 51
|
| 4 | Considerations for System Performance | 52
|
| | The 1/10 Second Rule | 52
|
| | Multithreading | 53
|
| | Using Object Windows | 57
|
| | Chapter Summary | 63
|
| |
| PART II BUILDING CLASS LIBRARIES | 65
|
| |
| 5 | Developing a Class Library for Nonvisual Objects | 67
|
| | Why Build a Class Library? | 67
|
| | The Question of Portability | 68
|
| | The NVCLASS Class Library | 69
|
| | The C_INI Class | 70
|
| | The C_INI_USER Class | 74
|
| | The C_INI_SYSTEM Class | 76
|
| | The C_THREAD Class | 77
|
| | The C_THREAD_PM Class | 81
|
| | The C_SEM_EVENT Class | 84
|
| | Chapter Summary | 89
|
| 6 | Developing a Simple PM Class Library | 90
|
| | The PMCLASS Class Library | 90
|
| | Application Class | 93
|
| | Basic Window Class | 99
|
| | Standard Window Class | 126
|
| | Child Window Class | 142
|
| | Dialog Class | 148
|
| | Push Button Class | 154
|
| | List Box Class | 156
|
| | Status Line Class | 163
|
| | Menu Class | 166
|
| | Slider Class | 169
|
| | Toolbar Button Class | 174
|
| | Toolbar Class | 183
|
| | Edit Class | 199
|
| | Multiline Editor Class | 202
|
| | CUA Container Class | 221
|
| | Debug\x12/\x12Data Logging Class | 245
|
| | Chapter Summary | 254
|
| 7 | Developing a Network Interface Class Library | 255
|
| | What is NETCLASS? | 255
|
| | The C_CONNECT Class | 256
|
| | Ping Class | 272
|
| | News Class | 278
|
| | FTP Class | 295
|
| | Developing Other Network Classes | 321
|
| | Building a Connection Manager | 321
|
| | Chapter Summary | 323
|
| |
| PART III BUILDING APPLICATIONS | 325
|
| |
| 8 | An Improved Editor | 327
|
| | Coding the Editor | 327
|
| | Handling Window Creation | 332
|
| | Adding Status Bar Objects | 333
|
| | Adding a Multiline Editor Object | 334
|
| | Sizing Up | 335
|
| | Adding a Menu | 336
|
| | Adding a Toolbar | 339
|
| | Processing WM_COMMAND Messages | 344
|
| | Loading and Saving Files | 350
|
| | Adding Clipboard Interaction and Word Wrap | 353
|
| | Loading Dialogs | 354
|
| | Search and Replace | 358
|
| | Final Embellishments | 367
|
| | Chapter Summary | 367
|
| 9 | A Simple PM Ping | 368
|
| | Ping Main Program | 368
|
| | Getting Ping Addresses | 383
|
| | Ping Product Information Dialog | 387
|
| | The Ping Toolbar | 390
|
| | Chapter Summary | 392
|
| 10 | A Simple News Client | 393
|
| | Goals for the News Client Application | 393
|
| | Building a News Connection Manager | 395
|
| | Starting Up a News Client | 402
|
| | Listing Available Groups | 420
|
| | Managing News Subscriptions | 431
|
| | Displaying Message Lists | 438
|
| | Viewing Articles | 450
|
| | What's Missing? | 451
|
| | Dealing with Code Inefficiency | 452
|
| | Chapter Summary | 453
|
| 11 | A Basic FTP Client | 454
|
| | Goals for the FTP Client Application | 454
|
| | Coding the FTP Client | 456
|
| | Creating FTP Connections | 461
|
| | Processing FTP Commands | 462
|
| | Closing the Application | 465
|
| | Possible Enhancements | 466
|
| | Chapter Summary | 467
|
| A | Nonvisual Class Library Reference | 469
|
| B | PM Class Library Reference | 474
|
| C | Network Class Library Reference | 490
|
| | Index | 497
|