Windows 2000 programming from the ground up / Herbert Schildt.
By: Schildt, Herbert
.
Material type: ![materialTypeLabel](/opac-tmpl/lib/famfamfam/BK.png)
![](/opac-tmpl/bootstrap/images/filefind.png)
Item type | Current library | Call number | Copy number | Status | Date due | Barcode | Item holds |
---|---|---|---|---|---|---|---|
General Lending | MTU Bishopstown Library Lending | 005.2768 (Browse shelf(Opens below)) | 1 | Available | 00075300 |
Enhanced descriptions from Syndetics:
A repugnant Amercian widow is killed during a trip to Petra...
Among the towering red cliffs of Petra, like some monstrous swollen Buddha, sat the corpse of Mrs Boynton. A tiny puncture mark on her wrist was the only sign of the fatal injection that had killed her.
With only 24 hours available to solve the mystery, Hercule Poirot recalled a chance remark he'd overheard back in Jerusalem: 'You see, don't you, that she's got to be killed?' Mrs Boynton was, indeed, the most detestable woman he'd ever met...
Includes index.
Windows 2000 Overview -- Windows 2000 Programming Fundamentals -- Application Essentials: Messages and Basic I/O -- Introducing Menus -- Dialog Boxes -- More controls -- Working with Bitmaps and Solving the Repaint Problem -- Working with Text -- Using graphics -- Introducing common controls and common dialog boxes -- More common controls: Up-down controls, Trackbars and Progress Bars -- Status Windows, Tab Controls, and the Tree-Views -- Property Sheets and Wizards -- Using the Header and Month Calendar Controls -- Thread-based Multitasking -- Using the two help systems -- Using the printer -- Using the system registry and creating screen savers -- Supercharging Menus -- DLLs and Security.
Table of contents provided by Syndetics
- Preface (p. xv)
- For Further Study (p. xvii)
- 1 Windows 2000 Overview (p. 1)
- What Is Windows 2000? (p. 2)
- The Application Programming Interface (p. 3)
- Dynamic Link Libraries (DLLs) (p. 4)
- Windows 2000 Supports Multithreaded Multitasking (p. 4)
- Multiple File Systems (p. 5)
- Challenging but Rewarding (p. 6)
- 2 Windows 2000 Programming Fundamentals (p. 7)
- Two Ways to Program for Windows (p. 8)
- Windows 2000 Programming Perspective (p. 9)
- The Desktop Model (p. 9)
- The Mouse (p. 10)
- Icons, Bitmaps, and Graphics (p. 10)
- Menus, Controls, and Dialog Boxes (p. 10)
- The Components of a Window (p. 11)
- How Windows and Your Program Interact (p. 11)
- Some Windows 2000 Application Basics (p. 12)
- WinMain() (p. 12)
- The Window Procedure (p. 13)
- Window Classes (p. 14)
- The Message Loop (p. 14)
- Windows Data Types (p. 14)
- A Windows 2000 Skeleton (p. 15)
- Defining the Window Class (p. 19)
- Creating a Window (p. 22)
- The Message Loop (p. 24)
- The Window Function (p. 26)
- Definition File No Longer Needed (p. 27)
- Naming Conventions (p. 28)
- 3 Application Essentials: Messages and Basic I/O (p. 31)
- Message Boxes (p. 32)
- Understanding Windows 2000 Messages (p. 35)
- Responding to a Keypress (p. 37)
- A Closer Look at Keyboard Messages (p. 41)
- More Keyboard Messages (p. 46)
- Outputting Text to a Window (p. 46)
- Device Contexts (p. 52)
- Processing the WM_PAINT Message (p. 52)
- Generating a WM_PAINT Message (p. 58)
- Responding to Mouse Messages (p. 63)
- A Closer Look at Mouse Messages (p. 67)
- Using Button-Up Messages (p. 68)
- Responding to a Double Click (p. 68)
- More Messages (p. 73)
- 4 Introducing Menus (p. 75)
- Menu Basics (p. 76)
- Resources (p. 77)
- Compiling RC Files (p. 77)
- Creating a Simple Menu (p. 77)
- Including a Menu in Your Program (p. 81)
- Responding to Menu Selections (p. 81)
- A Sample Menu Program (p. 82)
- Adding Menu Accelerator Keys (p. 86)
- Loading the Accelerator Table (p. 89)
- Translating Accelerator Keys (p. 90)
- Trying Accelerator Keys (p. 90)
- Non-Menu Accelerator Keys (p. 92)
- Overriding the Class Menu (p. 96)
- An Example that Overrides the Class Menu (p. 97)
- More Menus to Come (p. 103)
- 5 Dialog Boxes (p. 105)
- Dialog Boxes Use Controls (p. 106)
- Modal vs. Modeless Dialog Boxes (p. 107)
- Receiving Dialog Box Messages (p. 107)
- Activating a Dialog Box (p. 108)
- Deactivating a Dialog Box (p. 109)
- Creating a Simple Dialog Box (p. 109)
- The Dialog Box Resource File (p. 109)
- The Dialog Box Window Function (p. 112)
- A First Dialog Box Sample Program (p. 113)
- Adding a List Box (p. 118)
- List Box Basics (p. 119)
- Initializing the List Box (p. 121)
- Processing a Selection (p. 122)
- Adding an Edit Box (p. 124)
- The Entire Modal Dialog Box Program (p. 127)
- Using a Modeless Dialog Box (p. 133)
- Creating a Modeless Dialog Box (p. 136)
- 6 More Controls (p. 145)
- Scroll Bars (p. 146)
- Activating the Standard Scroll Bars (p. 146)
- Receiving Scroll Bar Messages (p. 146)
- SetScrollinfo() and GetScrollinfo() (p. 148)
- Working with Scroll Bars (p. 149)
- A Sample Scroll Bar Program (p. 150)
- Using a Scroll Bar Control (p. 157)
- Creating a Scroll Bar Control (p. 157)
- Demonstrating a Scroll Bar Control (p. 158)
- Check Boxes (p. 166)
- Obtaining the State of a Check Box (p. 167)
- Checking a Check Box (p. 167)
- Check Box Messages (p. 168)
- Radio Buttons (p. 169)
- Demonstrating Check Boxes, Radio Buttons, and Scroll Bars (p. 170)
- Generating Timer Messages (p. 170)
- The Countdown Timer Resource and Header Files (p. 171)
- The Countdown Timer Program (p. 173)
- A Closer Look at the Countdown Program (p. 178)
- Static Controls (p. 180)
- 7 Working with Bitmaps and Solving the Repaint Problem (p. 185)
- Two Types of Bitmaps (p. 186)
- Two Ways to Obtain a Bitmap (p. 186)
- Using a Bitmap Resource (p. 187)
- Creating a Bitmap Resource (p. 187)
- Displaying a Bitmap (p. 188)
- Deleting a Bitmap (p. 191)
- The Complete Bitmap Example Program (p. 192)
- Creating a Bitmap Dynamically (p. 196)
- Using a Dynamically Created Bitmap (p. 196)
- Solving the Repaint Problem (p. 201)
- Some Additional API Functions (p. 202)
- Creating and Using a Virtual Window (p. 203)
- The Entire Virtual Window Demonstration Program (p. 205)
- Improving Repaint Efficiency (p. 210)
- A Closer Look at BeginPaint() (p. 211)
- Reducing Virtual Window Repaint Time (p. 211)
- Creating a Custom Icon and Cursor (p. 213)
- Defining Icons and Cursors (p. 213)
- Loading Your Icons and Cursor (p. 216)
- A Sample Program that Demonstrates a Custom Icon and Cursor (p. 216)
- Using Loadlmage() (p. 219)
- 8 Working with Text (p. 221)
- Window Coordinates (p. 222)
- Setting the Text and Background Color (p. 223)
- Setting the Background Display Mode (p. 224)
- Obtaining the Text Metrics (p. 224)
- Computing the Length of a String (p. 227)
- A Short Text Demonstration (p. 228)
- Working with Fonts (p. 233)
- Fonts, Families, Typefaces, and Styles (p. 233)
- Raster, Vector, and TrueType Fonts (p. 234)
- Using Built-in Fonts (p. 234)
- Creating Custom Fonts (p. 242)
- Using CreateFontIndirect() (p. 250)
- Rotating Text (p. 251)
- Enumerating Fonts (p. 255)
- A Font Enumeration Program (p. 257)
- 9 Using Graphics (p. 267)
- The Graphics Coordinate System (p. 268)
- Pens and Brushes (p. 268)
- Setting a Pixel (p. 269)
- Drawing a Line (p. 269)
- Setting the Current Location (p. 269)
- Drawing an Arc (p. 270)
- Displaying Rectangles (p. 270)
- Drawing Ellipses and Pie Slices (p. 271)
- Working with Pens (p. 272)
- Creating Custom Brushes (p. 274)
- Deleting Custom Pens and Brushes (p. 275)
- Setting the Output Mode (p. 275)
- A Graphics Demonstration (p. 277)
- A Closer Look at the Paint Program (p. 286)
- Using World Transforms (p. 289)
- Coordinate Spaces (p. 289)
- SetWorldTransform() (p. 290)
- Setting the Graphics Mode (p. 291)
- Adding Rotation to the Paint Program (p. 292)
- A Closer Look at the Rotation Mechanism (p. 302)
- Things to Try (p. 303)
- Mapping Modes and Viewports (p. 304)
- Setting the Mapping Mode (p. 304)
- Defining Window Extents (p. 305)
- Defining a Viewport (p. 306)
- Setting the Viewport Origin (p. 307)
- A Viewport and Mapping Mode Demonstration Program (p. 307)
- Experiment with the GDI (p. 311)
- 10 Introducing Common Controls and Common Dialog Boxes (p. 313)
- The Common Controls (p. 314)
- Including and Initializing the Common Controls (p. 316)
- Common Controls Are Windows (p. 318)
- Using a Toolbar (p. 318)
- Adding Tooltips (p. 322)
- Creating a Toolbar Bitmap (p. 324)
- A Toolbar Sample Program (p. 326)
- A Closer Look at the Toolbar Program (p. 338)
- Introducing the Common Dialogs (p. 339)
- GetOpenFileName() and GetSaveFileName() (p. 342)
- A Short Word on Using Files in a Windows 2000 Program (p. 347)
- 11 More Common Controls: Up-Down Controls, Trackbars, and Progress Bars (p. 349)
- Up-Down Controls (p. 350)
- Creating an Up-Down Control (p. 351)
- Receiving Up-Down Control Messages (p. 351)
- Sending Up-Down Control Messages (p. 352)
- Creating a Spin Control (p. 352)
- Using a Trackbar (p. 353)
- Trackbar Styles (p. 354)
- Sending Trackbar Messages (p. 355)
- Processing Trackbar Notification Messages (p. 356)
- Using a Progress Bar (p. 357)
- Demonstrating a Spin Control, Trackbar, and Progress Bar (p. 359)
- Creating the Spin Control, Trackbar, and Progress Bar (p. 369)
- Managing the Spin Control (p. 371)
- Managing the Trackbar (p. 371)
- Managing the Progress Bar (p. 373)
- Large Reward, Little Effort (p. 374)
- 12 Status Windows, Tab Controls, and the Tree-Views (p. 377)
- Using a Status Window (p. 378)
- Creating a Status Window (p. 378)
- Status Window Messages (p. 379)
- Using a Status Bar (p. 380)
- Introducing Tab Controls (p. 390)
- Creating a Tab Control (p. 390)
- Sending Tab Control Messages (p. 392)
- Tab Notification Messages (p. 392)
- A Simple Tab Demonstration Program (p. 394)
- Using Tab Controls (p. 398)
- Tree-View Controls (p. 409)
- Create a Tree-View Control (p. 410)
- Sending Tree-View Messages (p. 411)
- Tree-View Notification Messages (p. 415)
- A Tree-View Demonstration Program (p. 416)
- 13 Property Sheets and Wizards (p. 425)
- Property Sheet Basics (p. 426)
- Creating a Property Sheet (p. 428)
- Defining a Property Sheet Page (p. 428)
- Initializing Each Page (p. 431)
- Initializing the PROPSHEETHEADER Structure (p. 431)
- Creating the Property Sheet Control (p. 435)
- Processing Property Sheet Messages (p. 435)
- Sending Messages to the Property Sheet (p. 436)
- Property Sheet Dialog Dimensions (p. 439)
- A Property Sheet Demonstration Program (p. 439)
- Creating a Wizard (p. 453)
- The Wizard 97 Specification (p. 453)
- Enabling Wizard Buttons (p. 456)
- A Wizard Demonstration Program (p. 457)
- A Closer Look at the Wizard Example (p. 473)
- Worth the Effort (p. 474)
- 14 Using the Header and Month Calendar Controls (p. 475)
- Header Controls (p. 476)
- Creating a Header Control (p. 476)
- Sending Messages to a Header Control (p. 477)
- Sizing the Header (p. 482)
- Inserting Headings into the Header Control (p. 484)
- Displaying the Header Control (p. 485)
- Header Notification Messages (p. 485)
- A Simple Header Control Example (p. 486)
- A Closer Look at the First Header Control Example (p. 496)
- Enhancing the Header Control (p. 497)
- Creating Button Headers (p. 497)
- Responding to Mouse Events (p. 498)
- Using the HDN_TRACK Message (p. 498)
- An Enhanced Header Control Example (p. 498)
- A Closer Look at the Enhanced Header Control Program (p. 508)
- Some Things to Try (p. 510)
- The Month Calendar Control (p. 510)
- Creating a Month Calendar (p. 510)
- Sending Messages to a Month Calendar (p. 510)
- Month Calendar Notification Messages (p. 512)
- Sizing the Month Calendar Control (p. 513)
- Demonstrating a Month Calendar Control (p. 514)
- Common Control Wrap-up (p. 519)
- 15 Thread-based Multitasking (p. 521)
- Creating a Multithreaded Program (p. 522)
- Creating a Thread (p. 523)
- Terminating a Thread (p. 524)
- A Multithreaded Example (p. 524)
- A Closer Look at the Multithreaded Program (p. 529)
- Alternatives to CreateThread() and ExitThread() (p. 530)
- The Microsoft Alternatives (p. 530)
- Using the Microsoft C/C++ Thread Functions (p. 532)
- Avoiding the C Library Functions (p. 536)
- Suspending and Resuming a Thread (p. 536)
- Thread Priorities (p. 537)
- Priority Classes (p. 537)
- Thread Priorities (p. 538)
- Creating a Thread Control Panel (p. 539)
- A Thread Control Panel Program (p. 540)
- A Closer Look at the Thread Control Panel (p. 549)
- Synchronization (p. 554)
- Understanding the Synchronization Problem (p. 556)
- Windows 2000 Synchronization Objects (p. 558)
- Using a Semaphore to Synchronize Threads (p. 559)
- A Closer Look at the Semaphore Program (p. 565)
- Using an Event Object (p. 565)
- Using a Waitable Timer (p. 567)
- Uses for Waitable Timers (p. 575)
- Creating a Separate Task (p. 575)
- 16 Using the Two Help Systems (p. 581)
- Two Styles of Help (p. 582)
- Context-Sensitive Versus Reference Help (p. 582)
- How the User Invokes Help (p. 584)
- Using the WinHelp Help System (p. 585)
- The WinHelp Help File (p. 585)
- Creating a Help File (p. 586)
- The General Form of an RTF Help File (p. 586)
- Some RTF Commands (p. 586)
- A Sample WinHelp Help File (p. 591)
- Executing Help Using WinHelp() (p. 598)
- Responding to WM_HELP and WM_CONTEXTMENU Messages (p. 600)
- WM_HELP (p. 601)
- WM_CONTEXTMENU (p. 602)
- Including the? Button (p. 603)
- A WinHelp Demonstration Program (p. 603)
- A Closer Look at the WinHelp Demonstration Program (p. 611)
- Using WinHelp Secondary Windows (p. 612)
- Using HTML Help (p. 613)
- HTML, not RTF (p. 614)
- The HTML Help Workshop (p. 614)
- HtmlHelp() (p. 616)
- Demonstrating HtmlHelp() (p. 620)
- Some Things to Try (p. 628)
- 17 Using the Printer (p. 629)
- Obtaining a Printer Device Context (p. 630)
- CreateDC() (p. 630)
- PrintDlgEx() (p. 631)
- The Printer Functions (p. 637)
- A Simple Printing Example (p. 639)
- A Closer Look at the First Printing Program (p. 645)
- Printing Bitmaps (p. 647)
- Determining Printer Raster Capabilities (p. 647)
- Maintaining Perspective (p. 648)
- StretchBlt() (p. 649)
- Obtaining Printer-Compatible DCs (p. 650)
- A Bitmap Printing Demonstration Program (p. 651)
- A Closer Look at the Bitmap Printing Program (p. 660)
- Adding an Abort Function (p. 664)
- SetAbortProc() (p. 664)
- The Cancel Printing Dialog Box (p. 666)
- A Complete Printing Example (p. 666)
- Some Things to Try (p. 678)
- 18 Using the System Registry and Creating Screen Savers (p. 679)
- Screen Saver Fundamentals (p. 680)
- The Screen Saver Functions (p. 681)
- Two Screen Saver Resources (p. 682)
- Other Programming Considerations (p. 683)
- Creating a Minimal Screen Saver (p. 684)
- A Closer Look at the First Screen Saver (p. 686)
- Problems with the First Screen Saver (p. 687)
- Understanding the System Registry (p. 687)
- The Registry Structure (p. 688)
- The Built-in Keys (p. 689)
- Registry Values (p. 691)
- Creating and Opening a Key (p. 692)
- Storing Values (p. 694)
- Retrieving Values (p. 695)
- Closing a Key (p. 695)
- Using REGEDIT (p. 697)
- Creating a Configurable Screen Saver (p. 697)
- A Closer Look at the Configurable Screen Saver (p. 702)
- Some Things to Try (p. 706)
- 19 Supercharging Menus (p. 709)
- Dynamic Menus (p. 710)
- Adding an Item to a Menu (p. 710)
- Deleting a Menu Item (p. 714)
- Obtaining a Handle to a Menu (p. 714)
- Obtaining the Size of a Menu (p. 715)
- Enabling and Disabling a Menu Item (p. 715)
- Dynamically Adding Menu Items (p. 716)
- A Closer Look at the First Dynamic Menu Program (p. 722)
- Creating Dynamic Pop-up Menus (p. 724)
- Using Floating Menus (p. 731)
- Activating a Floating Menu (p. 731)
- Demonstrating Floating Menus (p. 736)
- A Closer Look at the Floating Menu Program (p. 743)
- Animating Pop-up Menus (p. 745)
- Handling WM_MENURBUTTONUP Messages (p. 746)
- Some Things to Try (p. 747)
- 20 DLLs and Security (p. 749)
- Creating DLLs (p. 750)
- Dynamic Linking vs. Static Linking (p. 750)
- Why Create a DLL? (p. 751)
- DLL Basics (p. 751)
- A Simple DLL (p. 753)
- Creating A Header File (p. 754)
- Using the DLL (p. 755)
- Using DllMain() (p. 758)
- Adding a DllMain() to MYDLL (p. 759)
- Demonstrating DllMain() (p. 760)
- Security (p. 764)
- Defining Terms (p. 767)
- How Security Works (p. 768)
- Some Security-Related API Functions (p. 769)
- What Next? (p. 769)
- Index (p. 771)