• Data Types
    • ACCEL
    • ACCELTABLE
    • APIRET
    • APSZ
    • ARCPARAMS
    • AREABUNDLE
    • ATOM
    • BITMAPARRAYFILEHEADER
    • BITMAPARRAYFILEHEADER2
    • BITMAPFILEHEADER
    • BITMAPFILEHEADER2
    • BITMAPINFO
    • BITMAPINFO2
    • BITMAPINFOHEADER
    • BITMAPINFOHEADER2
    • BIT8
    • BIT16
    • BIT32
    • BOOL
    • BOOKPAGEINFO
    • BOOKTEXT
    • BTNCDATA
    • BYTE
    • CATCHBUF
    • CDATE
    • CHAR
    • CHARBUNDLE
    • CLASSINFO
    • CNRDRAGINFO
    • CNRDRAGINIT
    • CNRDRAWITEMINFO
    • CNREDITDATA
    • CNRINFO
    • CNRLAZYDRAGINFO
    • COLOR
    • CONVCONTEXT
    • CREATESTRUCT
    • CSBITMAPDATA
    • CTIME
    • CTLCOLOR
    • Control-Data
    • CURSORINFO
    • DDEINIT
    • DDESTRUCT
    • DELETENOTIFY
    • DESKTOP
    • DEVOPENSTRUC
    • DLGTEMPLATE
    • DLGTITEM
    • DRAGIMAGE
    • DRAGINFO
    • DRAGITEM
    • DRAGTRANSFER
    • DRIVDATA
    • ENTRYFDATA
    • ERRINFO
    • ERRORID
    • ESCMODE
    • ESCSETMODE
    • FACENAMEDESC
    • FATTRS
    • FFDESCS
    • FIELDINFO
    • FIELDINFOINSERT
    • FILEDLG
    • FIXED
    • FONTDLG
    • FONTMETRICS
    • FRAMECDATA
    • GETPORTFROMQ
    • GRADIENTL
    • GRIDINFO
    • GRIDSQUARE
    • HAB
    • HACCEL
    • HAPP
    • HATOMTBL
    • HBITMAP
    • HCINFO
    • HDC
    • HDDF
    • HELPINIT
    • HELPSUBTABLE
    • HELPTABLE
    • HENUM
    • HEV
    • HINI
    • HLIB
    • HMF
    • HMODULE
    • HMQ
    • HMTX
    • HMUX
    • HOBJECT
    • HPOINTER
    • HPROGRAM
    • HPS
    • HRGN
    • HSAVEWP
    • HSEM
    • HSPL
    • HSTR
    • HSWITCH
    • HWND
    • ICONINFO
    • IMAGEBUNDLE
    • IPT
    • LBOXINFO
    • LHANDLE
    • LINEBUNDLE
    • LONG
    • MARKERBUNDLE
    • MATRIXLF
    • MB2D
    • MB2INFO
    • MENUITEM
    • MINIRECORDCORE
    • MLE_SEARCHDATA
    • MLECTLDATA
    • MLEMARGSTRUCT
    • MPARAM
    • MQINFO
    • MRESULT
    • NOTEBOOKBUTTON
    • NOTIFYDELTA
    • NOTIFYRECORDEMPHASIS
    • NOTIFYRECORDENTER
    • NOTIFYSCROLL
    • OBJCLASS
    • MLEOVERFLOW
    • OWNERBACKGROUND
    • OWNERITEM
    • PAGEINFO
    • PAGESELECTNOTIFY
    • PANOSE
    • PARAM
    • PCH
    • PCSZ
    • PDEVOPENDATA
    • PFN
    • PFNWP
    • PID
    • PIX
    • PKERNPAIRS
    • POINTERINFO
    • POINTL
    • POINTS
    • PORTFROMQ
    • PQMOPENDATA
    • PRDINFO3
    • PRDRIVINFO
    • PRESPARAMS
    • PRFHOOKPARMS
    • PRFPROFILE
    • PRINTDEST
    • PRINTERINFO
    • PRJINFO2
    • PRJINFO3
    • PRJINFO4
    • PROGCATEGORY
    • PROGDETAILS
    • PROGRAMENTRY
    • PROGTYPE
    • PRPORTINFO
    • PRPORTINFO1
    • PRPORTINFO2
    • PRQINFO3
    • PRQINFO6
    • PRQPROCINFO
    • PSZ
    • PVOID
    • PWPOINT
    • QMJOBINFO
    • QMSG
    • QUERYRECFROMRECT
    • QUERYRECORDRECT
    • RECORDCORE
    • RECORDINSERT
    • RECTL
    • RENDERFILE
    • RGB
    • RGB2
    • RGNRECT
    • SBCDATA
    • SEARCHSTRING
    • SEGOFF
    • SHORT
    • SIZEF
    • SIZEL
    • SLDCDATA
    • SMHSTRUCT
    • SPBCDATA
    • SPLERR
    • STR8
    • STR16
    • STR32
    • STR64
    • STYLECHANGE
    • SWBLOCK
    • SWCNTRL
    • SWENTRY
    • SWP
    • TID
    • TRACKINFO
    • TREEITEMDESC
    • TREEMOVE
    • UCHAR
    • ULONG
    • USERBUTTON
    • USHORT
    • VIDEOMODEINFO
    • VIOFONTCELLSIZE
    • VIOSIZECOUNT
    • VOID
    • VSCDATA
    • VSDRAGINFO
    • VSDRAGINIT
    • VSTEXT
    • WNDPARAMS
    • WPOINT
    • WRECT
    • XYWINSIZE
  • Errors
    • Error Number and Name
    • Error Name and Explanation
  • Atom Tables
    • About Atom Tables
      • System Atom Table
      • Private Atom Tables
      • Atom Types
        • String Atoms
        • Integer Atoms
      • Atom Creation and Usage Count
      • Atom Deletion
      • Atom Queries
      • Atom String Formats
    • Using Atom Tables
      • Creating Unique Window-Message Atoms
      • Creating DDE Formats and a Unique Clipboard Format
  • Button Controls
    • About Button Controls
      • Button Types
        • Push Buttons
        • Radio Buttons
        • Check Boxes
        • Three-State Check Boxes
        • Application-defined Buttons
      • Button Styles
      • Default Button Behavior
      • Button Notification Messages
      • Button States
      • Custom Buttons
    • Using Button Controls
      • Using Buttons in a Dialog Window
      • Using Buttons in a Client Window
      • Creating Buttons with Icons and Icon/Text Combinations
  • Clipboards
    • About the Clipboard
      • Shared Memory and the Clipboard
      • Clipboard Operations
        • Cut and Copy Operations
        • Paste Operation
      • Standard Clipboard-Data Formats
      • Private Clipboard-Data Formats
        • Format Identification Number
        • Display Formats
      • Delayed Rendering
      • Clipboard Viewer
      • Clipboard Owner
    • Using the Clipboard
      • Putting Data on the Clipboard
      • Retrieving Data from the Clipboard
      • Viewing Data on the Clipboard
  • Combination Box
    • About Combination-Box Controls
      • Combination-Box Styles
      • Combination-Box Notification Codes
    • Using Combination-Box Controls
  • Container Controls
    • About Container Controls
      • Container Control Functionality
      • Container Items
      • Container Views
        • Icon View
        • Name View
          • Non-Flowed Name View
          • Flowed Name View
        • Text View
          • Non-Flowed Text View
          • Flowed Text View
        • Tree View
          • Tree Icon View and Tree Text View
          • Tree Name View
        • Details View
          • Determining the Width of a Column in a Details View
          • Split Bar Support for the Details View
    • Using Container Controls
      • Creating a Container
      • Allocating Memory for Container Records
      • Allocating Memory for Container Columns
      • Inserting Container Records
      • Removing Container Records
      • Setting the Container Control Focus
      • Using Container Views
      • Changing a Container View
      • Creating a Grid for Icons
    • Graphical User Interface Support for Container Controls
      • Scrolling
      • Dynamic Scrolling
      • Selecting Container Items
        • Selection Types
        • Selection Techniques
        • Selection Mechanisms
      • Providing Emphasis
      • Using Direct Manipulation
    • Enhancing Container Controls Performance and Effectiveness
      • Positioning Container Items
        • Scrollable Workspace Areas
        • Workspace and Work Area Origins
      • Specifying Space between Container Items
      • Providing Source Emphasis
      • Providing Target Emphasis
      • Specifying Deltas for Large Amounts of Data
      • Direct Editing of Text in a Container
      • Searching for Exact Text String Matches
      • Specifying Container Titles
      • Specifying Fonts and Colors
      • Drawing Container Items and Painting Backgrounds
      • Filtering Container Items
      • Optimizing Container Memory Usage
        • Allocating Memory for when Using MINIRECORDCORE
        • Sharing Records among Multiple Containers
        • Invalidating Records Shared by Multiple Containers
        • Freeing Records Shared by Multiple Containers
    • Sample Code for Container Controls
      • Container Application Sample Code
  • Control Windows
    • About Control Windows
    • Using Control Windows
      • Using Control Windows in a Dialog Window
      • Using Control Windows in a Non-Dialog Window
      • Creating a Custom Control Window
  • Cursors
    • About Cursors
      • Cursor Creation and Destruction
        • Position and Size
        • Other Cursor Characteristics
      • Cursor Visibility
    • Using Cursors
      • Creating and Destroying a Cursor
  • Dialog Windows
    • About Dialog Windows
      • Modal and Modeless Dialog Windows
      • Dialog Items
      • Dialog-Item Groups
      • Message Boxes
        • Standard Message Boxes
        • Enhanced Message Boxes
      • Minimizing Dialog Windows
      • Dialog Data Structures
      • Dialog Resources
    • Using Message Boxes and Dialog Windows
      • Creating a Standard Message Box
        • Creating a System-Modal Standard Message Box
        • Creating an Enhanced Message Box
      • Using a Dialog Window
        • Creating a Dialog Template
        • Creating a Modal Dialog Window
        • Creating a Modeless Dialog Window
        • Initializing a Dialog Window
        • Adding a Menu in a Dialog Window
        • Creating a Dialog Procedure
        • Manipulating Dialog Items
  • Direct Manipulation
    • About Direct Manipulation
      • Application-Defined Drag Operations
      • Rendering Mechanism and Format
        • Non-Standard Rendering Mechanisms
      • Responsibilities of a Source Application
      • Responsibilites of a Target Application
        • Messages Sent to a Target Application
        • Response to Messages Sent to a Target Application
      • Two-Object Drag Operation
      • Conversation after the Drop
      • Canceling a Drag Operation
      • About Pickup and Drop
        • Data Structure Handling
        • Message Handling
    • About Rendering Mechanisms
      • OS/2 File Rendering Mechanism
        • Mechanism Name
        • Messages
        • Native Mechanism Actions
        • Preventing a Target from Rendering an Item
        • Requesting the Source to Render the Item
        • Allocating and Freeing a DRAGTRANSFER Data Structure
        • Operation Specifics
        • Non-Native Mechanism Actions
        • Naming Conventions
        • Types
      • Print Rendering Mechanism
        • Mechanism Name
        • Messages
        • Native Mechanism Actions
        • Naming Conventions
      • Dynamic Data Exchange (DDE) Rendering Mechanism
        • Mechanism Name
        • Messages
        • Native Mechanism Actions
        • Operation Specifics
        • Non-Native Mechanism Actions
        • Naming Conventions
        • Types
      • Application-Defined Rendering Mechanisms
        • Mechanism Name
        • Native Mechanism Actions
        • Naming Conventions
        • Performance Considerations
    • Using Direct Manipulation
      • Allocating Memory for the Drag Operation
      • Initializing DRAGITEM Data Structure
        • Type
        • True Type
        • Rendering Mechanism and Format
        • Native Rendering Mechanism and Format
        • Suggested Name at Target
        • Container Name
        • Source Name
        • Sample Code for Initializing DRAGITEM Data Structure
      • Initializing DRAGIMAGE Data Structure
      • Starting the Drag Operation
      • Responding to the DM_DRAGOVER Message
        • Providing Target Emphasis
        • Providing Customized Images
      • Responding to the DM_DRAGLEAVE Message
      • Responding to the DM_DROP Message
      • Exchanging Data
        • Performance Considerations
      • Using Pickup and Drop
    • Graphical User Interface Support for Direct Manipulation
      • Keyboard Augmentation
    • Sample Code for Direct Manipulation
      • Source Application Sample Code
      • Target Application Sample Code
  • Drawing in Windows
    • About Window-Drawing Functions
      • Points
      • Rectangles
    • Using Window-Drawing Functions
      • Working with Points and Rectangles
        • Determining the Dimensions of a Rectangle
        • Filling a Rectangle
      • Scrolling the Contents of a Window
      • Drawing a Bit Map
      • Drawing Text
  • Dynamic Data Exchange
    • About Dynamic Data Exchange
      • Client and Server Interaction
      • DDE System Example
      • Applications, Topics, and Items
      • The System Topic
      • DDE Initiation
      • Shared-Memory Object
      • Transaction Status Flags
      • Transaction and Response Messages
        • Request and Poke Transactions
        • Advise and Unadvise Transactions
        • Execute Transaction
      • DDE Termination
      • Unique Data Formats
      • Synchronization Rules
      • Language-Sensitive DDE Applications
    • Using Dynamic Data Exchange
      • Initiating a DDE Conversation
      • Creating a Shared-Memory Object for DDE
      • Sending a Positive Acknowledgment
      • Sending a Negative Acknowledgment
      • Performing a One-Time Data Transfer
      • Establishing a Permanent Data Link
      • Terminating a Permanant Link
      • Executing Commands in a Remote Application
      • Terminating a DDE Conversation
    • Sample Code for Dynamic Data Exchange
      • Client Application Sample Code
      • Server Application Sample Code
  • Entry-Field Controls
    • About Entry Fields
      • Entry-Field Styles
      • Entry-Field Notification Codes
      • Default Entry-Field Behavior
      • Entry-Field Text Editing
      • Entry-Field Control Copy and Paste Operations
      • Entry-Field Text Retrieval
    • Using Entry-Field Controls
      • Creating an Entry Field in a Dialog Window
      • Creating an Entry Field in a Client Window
      • Changing the Default Size of an Entry Field
      • Retrieving Text From an Entry Field
  • File Dialog Controls
    • About File Dialog Controls
      • Customizing the File Dialog
    • Using File Dialog Controls
      • Creating a File Dialog
      • Creating an Open Dialog
      • Creating a SaveAs Dialog
    • Graphical User Interface Support for File Dialog Controls
      • Name Field
      • File List Box
      • Directory List Box
      • Drive Field
      • Type Field
      • Standard Push Button and Default Action
      • Subclassing the Default File Dialog Procedure
  • Font Dialog Controls
    • About Font Dialog Controls
      • Customizing the Font Dialog
    • Using Font Dialog Controls
      • Creating a Font Dialog
    • Graphical User Interface Support for Font Dialog Controls
      • Name Field
      • Style Field
      • Size Field
      • Emphasis Group Box
      • Preview Area
      • Filter Check Box
      • Standard Push Button and Default Action
      • Subclassing the Default Font Dialog Procedure
  • Frame Windows
    • About Frame Windows
      • Main Window
        • Frame Controls
        • Client Window
        • Additional Frame-Window Items
        • Frame-Control Identifiers
      • Frame-Window Creation
        • Frame Window Controls and Styles
        • Frame-Window Resources
      • Frame-Window Class Data
      • Frame-Window Data
      • Frame-Window Operation
      • Nonstandard Frame Windows
      • Default Frame-Window Behavior
    • Using Frame Windows
      • Creating a Main Window
      • Retrieving a Frame Handle
  • Hooks
    • About Hooks
      • Hook Lists
      • Hook Chains
      • Hook Types
        • HK_CHECKMSGFILTER - Check Message Filter Hook
        • HK_CODEPAGECHANGE - Code Page Changed Hook
        • HK_DESTROYWINDOW - Destroy Window Hook
        • HK_FINDWORD - Find Word Hook
        • HK_FLUSHBUF - Flush Buffer Hook
        • HK_HELP - Help Hook
        • HK_INPUT - Input Hook
        • HK_JOURNALPLAYBACK - Journal Playback Hook
        • HK_JOURNALRECORD - Journal Record Hook
        • HK_LOADER - Loader Hook
        • HK_LOCKUP - Lockup Hook
        • HK_MSGCONTROL - Message Control Hook
        • HK_MSGFILTER - Message Filter Hook
        • HK_MSGINPUT - Message Input Hook
        • HK_PLIST_ENTRY - Program List Call Hook
        • HK_PLIST_EXIT - Program List Exit Hook
        • HK_REGISTERUSERMSG - Register User Message Hook
        • HK_SENDMSG - Send Message Hook
        • HK_WINDOWDC - Device Context Hook
    • Using Hooks
      • Installing Hook Functions
      • Releasing Hook Functions
        • Freeing Memory
      • Recording and Playing Back Input Events
    • Sample Code for Hooks
      • Hooks Application Sample Code
  • Initialization Files
    • About Initialization Files
    • Using Initialization Files
      • Creating, Opening, and Closing Initialization Files
      • Reading and Writing Settings
      • Identifying the OS/2 Initialization Files
  • Keyboard Accelerators
    • About Keyboard Accelerators
      • Accelerator Tables
      • Accelerator-Table Resources
      • Accelerator-Table Handles
      • Accelerator-Table Data Structures
      • Accelerator-Item Styles
    • Using Keyboard Accelerators
      • Creating an Accelerator-Table Resource
      • Including an Accelerator Table in a Frame Window
      • Modifying an Accelerator Table
  • List-Box Controls
    • About List Boxes
    • Using List Boxes
      • Creating a List-Box Window
      • Using a List Box in a Dialog Window
      • Adding or Deleting an Item in a List Box
      • Responding to a User Selection in a List Box
      • Handling Multiple Selections
      • Creating an Owner-Drawn List Item
      • Default List-Box Behavior
  • Menus
    • About Menus
      • Menu Bar and Pull-Down Menus
      • Pop-Up Menus
      • System Menu
      • Menu Items
        • The Help Item
        • Menu-Item Styles
        • Menu-Item Attributes
        • Menu-Item Structure
      • Menu Access
        • Mnemonics
        • Accelerators
    • Using Menus
      • Defining Menu Items in a Resource File
      • Including a Menu Bar in a Standard Window
      • Creating a Pop-up Menu
      • Adding a Menu to a Dialog Window
      • Accessing the System Menu
      • Responding to a User's Menu Choice
      • Setting and Querying Menu-Item Attributes
      • Adding and Deleting Menu Items
      • Creating a Custom Menu Item
  • Messages and Message Queues
    • About Messages and Message Queues
      • Messages
      • Message Queues
      • Message Handling
        • Message Loops
        • Window Procedures
      • Posting and Sending Messages
      • Message Types
        • System-Defined Messages
        • Application-Defined Messages
        • Semaphore Messages
      • Message Priorities
      • Message Filtering
    • Using Messages
      • Creating a Message Queue and Message Loop
      • Examining the Message Queue
      • Posting a Message to a Window
      • Sending a Message to a Window
      • Broadcasting a Message
      • Using Message Macros
  • Multiple-Line Entry Field Controls
    • About Multiple-Line Entry Field Controls
      • MLE Styles
      • MLE Notification Codes
      • MLE Text Editing
      • MLE Text Formatting
      • MLE Text Import and Export Operations
      • MLE Cut, Copy, and Paste Operations
      • MLE Search and Replace Operations
      • MLE Colors
    • Using Multiple-Line Entry Field Controls
      • Creating an MLE
      • Importing and Exporting MLE Text
        • Importing MLE Text
        • Exporting MLE Text
      • Searching MLE Text
  • Mouse and Keyboard Input
    • About Mouse and Keyboard Input
      • System Message Queue
      • Window Activation
      • Keyboard Focus
      • Keyboard Messages
        • Message Flags
        • Key-Down or Key-Up Events
        • Repeat-Count Events
        • Character Codes
        • Virtual-Key Codes
        • Scan Codes
        • Accelerator-Table Entries
      • Mouse Messages
      • Capturing Mouse Input
        • Button Clicks
        • Mouse Movement
    • Using the Mouse and Keyboard
      • Determining the Active Status of a Frame Window
      • Checking for a Key-Up or Key-Down Event
      • Responding to a Character Message
      • Handling Virtual-Key Codes
      • Handling a Scan Code
  • Mouse Pointers and Icons
    • About Mouse Pointers and Icons
      • Mouse-Pointer Hot Spot
      • Predefined Mouse Pointers
      • System Bit Maps
    • Using Mouse Pointers and Icons
      • Changing the Mouse Pointer