| 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
|