HASH_DEFINES
 Macro variables are defined here.
HASH_INCLUDES
 Header files are included here with the %INCLUDE macro statement.
PROTOTYPES
 This a predeclaration of application window procedures and their
 parameters.
GLOBAL_HANDLES
 A handle is a unique number that OS/2 uses to refer to an object.
 You use the handle as an input parameter to calls that refer to
 the object.
GLOBAL_VARIABLES
 Use to declare a variable which has storage and a defined value for
 the duration of the program.
MAIN
 The MAIN function is the starting point for running a program. It
 controls the program by directing the calls to other functions.
LOCAL_VARIABLES
 A local variable has storage and a defined value reserved each time
 the current point of program execution enters the program block
 that defines or declares that item.
 When the current point leaves that block, the local item loses
 its storage and its value.
INITIALIZE
 Initialization of Presentation Manager is done here.
CREATE_MSG_QUEUE
 This sets aside a block of memory in which to store messages
 that your generated application will process.
REGISTER_CLASS
 This registers the classes for the windows in your application.
SET_FLCREATE
 This defines the Frame Creation Flags for the windows in
 your application.
CREATE_STD_WINDOW
 Your windows are created here.
SET_WINDOW_POS
 This sets your window's positions.
 Code added at this point would be executed after your primary window
 appears.  The help manager code block normally goes here.
MESSAGE_LOOP
 This is the heart of an application. It uses the WinGetMsg and the
 WinDispatchMsg APIs.
 WinGetMsg removes messages one by one from the application queue.
 WinDispatchMsg effectively calls the window procedure for the
 window defined in the qmsg structure.
DESTROY_WINDOWS
 This removes your windows from the screen, and deletes the
 definition of the window held by OS/2.
DESTROY_MSG_QUEUE
 This destroys the applications input queue. When this is
 done the application can no longer receive input.
TERMINATE_A
 This ends the application's use of the Win and Gpi calls.
 A PM application would terminate at this point as you have removed
 the means of displaying the results.
TERMINATE_B
 This is the closing end statement for the main call
Local Variables
 The compiler reserves storage each time the current point of program
 excution enters the program block that defines or declares that item.
 When the current point leaves that block, the local item loses its
 storage and its value.
WM_ACTIVATE
 This message occurs when an application causes the activation
 or deactivation of a window.
WM_ADJUSTWINDOWPOS
 This message is sent by the WinSetWindowPos call
 to enable the window to adjust its new position or
 size whenever it is about to be moved.
WM_APPTERMINATENOTIFY
 This message is posted when an application terminates.
WM_BEGINDRAG
 This message occurs when the operator initiates a drag
 operation.
WM_BEGINSELECT
 This message occurs when the operator initiates a swipe
 selection.
WM_BUTTON1DBLCLK
 This message occurs when the operator presses button
 one of the pointing device twice within a specified time.
WM_BUTTON2DBLCLK
 This message occurs when the operator presses button two
 of the pointing device twice within a specified time.
WM_BUTTON3DBLCLK
 This message occurs when the operator presses button two
 of the pointing device twice within a specified time.
WM_BUTTON1DOWN
 This message occurs when the operator presses pointer button one.
WM_BUTTON2DOWN
 This message occurs when the operator presses pointer button two.
WM_BUTTON2DOWN
 This message occurs when the operator presses pointer button three.
WM_BUTTON1MOTIONEND
 This message occurs when the operator completes a drag
 operation which was initiated by pressing button one on
 the pointing device.
WM_BUTTON2MOTIONEND
 This message occurs when the operator completes a drag
 operation which was initiated by pressing button one on
 the pointing device.
WM_BUTTON3MOTIONEND
 This message occurs when the operator completes a drag
 operation which was initiated by pressing button one on
 the pointing device.
WM_BUTTON1MOTIONSTART
 This message occurs when the operator initiates a drag
 operation by moving the mouse while pressing button one
 on the pointing device.
WM_BUTTON2MOTIONSTART
 This message occurs when the operator initiates a drag
 operation by moving the mouse while pressing button one
 on the pointing device.
WM_BUTTON3MOTIONSTART
 This message occurs when the operator initiates a drag
 operation by moving the mouse while pressing button one
 on the pointing device.
WM_BUTTON1UP
 This message occurs when the operator releases button one of
 the pointing device.
WM_BUTTON2UP
 This message occurs when the operator releases button two of
 the pointing device.
WM_BUTTTON3UP
 This message occurs when the operator releases button three
 of the pointing device.
WM_CALCFRAMERECT
 This message occurs when an application uses the WinCalcFrameRect call.
WM_CALVALIDRECTS
 This message is sent from WinSetWindowPos and WinSetMultWindowPos
 to determine which areas of a window may be preserved if a window
 is sized, and which should be redisplayed.
WM_CHAR
 This message occurs when an operator presses a key.
WM_CHORD
 This message occurs when the operator presses both
 button one and button two on the pointing device.
WM_CLOSE
 This message is sent to a frame window to indicate that the window
 is being closed by the user.
WM_COMMAND
 This message occurs when a control has a significant event to notify
 to its owner or when a key stroke has been translated by an
 accelerator table into a WM_COMMAND.
WM_CONTEXTMENU
 This message occurs when the operator requests a pop-up
 menu.
WM_CONTROL
 This message occurs when a control has a significant event to
 notify to its owner.
WM_CONTROLHELP
 This message returns the heap handle to be used for allocating
 control-specific data.
WM_CONTROLPOINTER
 This message is sent to a control's owner window when the mouse pointer
 moves over the control window, allowing the owner to set the mouse
 pointer.
WM_CREATE
 This message occurs when an application requests the
 creation of a window.
WM_DESTROY
 This message occurs when an application requests the
 destruction of a window.
WM_DESTROYCLIPBOARD
 This message is sent to the clipboard owner when the
 clipboard is emptied through a call to WinEmptyClipbrd.
WM_DRAWITEM
 This notification is sent to the owner of a control
 each time an item is to be drawn.
WM_DRAWCLIPBOARD
 This message is sent to the clipboard viewer window
 whenever the contents of the clipboard change; that is, as
 a result of the WinCloseClipbrd call following a call to
 WinSetClipbrdData.
WM_ENABLE
 This message sets the enable state of a window.
WM_ENDDRAG
 This message occurs when the operator completes a drag
 operation.
WM_ENDSELECT
 This message occurs when the operator either makes a
 selection or completes a swipe selection.
WM_ERASEBACKGROUND
 This message causes a client window to be filled with the
 background, should this be appropriate.
WM_ERASEWINDOW
 This message is sent to a window when it is invalidated.
WM_ERROR
 This message occurs when an error is detected in a
 WinGetMsg or a WinPeekMsg call.
WM_FOCUSCHANGE
 This message occurs when the window possessing the focus is changed.
WM_FORMATFRAME
 This message is sent to a frame window to calculate the
 sizes and positions of all of the frame controls and the
 client window.
WM_HELP
 This message occurs when a control has a significant event
 to notify to its owner or when a key stroke has been
 translated by an accelerator table into a WM_HELP.
WM_HITTEST
 This message is sent to determine which window is associated
 with an input from the pointing device.
WM_HSCROLL
 This message occurs when a horizontal scroll bar control has
 a significant event to notify to its owner.
WM_HSCROLLCLIPBOARD
 This message is sent to the clipboard-owner window when
 the clipboard contains a data handle for the
 CFI_OWNERDISPLAY format, and there is an event in the
 clipboard viewer's horizontal scroll bar.
WM_INITDLG
 This message occurs when a dialog box is being created.
WM_INITMENU
 This message occurs when a menu control is about to become active.
WM_JOURNALNOTIFY
 This message is used to maintain correct operation during journal playback.
WM_MATCHMNEMONIC
 This message is sent by the dialog box to a control window
 to determine whether a typed character matches a mnemonic
 in its window text.
WM_MEASUREITEM
 This notification is sent to the owner of a specific control
 to establish the height and width for an item in that
 control.
WM_MENUEND
 This message occurs when a menu control is about to terminate.
WM_MENUSELECT
 This message occurs when a menu item has been selected.
WM_MINMAXFRAME
 This message is sent to a frame window that is being minimized,
 maximized, or restored.
WM_MOUSEMOVE
 This message occurs when the pointing device pointer moves.
WM_MOVE
 This message occurs when a window with style CS_MOVENOTIFY
 changes its absolute position.
WM_NEXTMENU
 This message occurs when either the beginning or the end of
 the menu is reached by use of the cursor control keys.
WM_NULL
 This message is not sent by the system.
WM_OPEN
 This message occurs when the operator makes an OPEN
 request.
WM_OTHERWINDOWDESTROYED
 This message is sent to all top-level windows when a
 registered window is being destroyed.
WM_PACTIVATE
 This message is posted when the Language Support Window
 or Dialog Procedure processes a WM_ACTIVATE message.
WM_PCONTROL
 This message is posted when the Language Support Window
 or Dialog Procedure processes a WM_CONTROL message.
WM_PAINT
 This message occurs when a window needs repainting.
WM_PAINTCLIPBOARD
 This message is sent when the clipboard contains a data
 handle with the CFI_OWNERDISPLAY information flag set.
WM_PPAINT
 This message is posted when the Language Support Window or
 Dialog Procedure processes a WM_PAINT message.
WM_PRESPARAMCHANGED
 This message is sent when a presentation parameter is set
 or removed dynamically from a window instance using the
 WinSetPresParam or WinRemovePresParam calls.
 It is also sent to all windows owned by the window whose
 presentation parameter was changed.
WM_PSETFOCUS
 This message is posted when the Language Support Window
 or Dialog Procedure processes a WM_SETFOCUS message.
WM_PSIZE
 This message is posted when the Language Support Window
 or Dialog Procedure processes a WM_SIZE message.
WM_PSYSCOLORCHANGE
 This message is posted when the Language Support Window
 or Dialog Procedure processes a WM_SYSCOLORCHANGE message.
WM_QUERYACCELTABLE
 This message returns the handle to a window's accelerator table.
WM_QUERYBORDERSIZE
 This message is sent to the frame window to determine
 the width and height of the window's border.
WM_QUERYCONVERTPOS
 This message is sent by an application to determine whether
 it is appropriate to begin conversion of DBCS characters.
WM_QUERYDLGCODE
 This message is sent by the dialog manager to identify the
 type of control, to determine what kinds of messages the
 control understands, and also to determine whether an
 input message may be processed by the dialog manager
 or passed down to the control.
WM_QUERYHELPINFO
 This message returns the help information for a window.
WM_QUERYICON
 This message is sent to a frame window to query its
 associated icon.
WM_QUERYTRACKINFO
 The frame control and title bar control generate this message
 on receiving a WM_TRACKFRAME message or a TBM_TRACKMOVE
 message respectively.
WM_QUERYWINDOWPARAMS
 This message occurs when an application queries the window parameters.
WM_QUIT
 This message is posted to terminate the application.
WM_REALIZEPALLETTE
 This message is sent to an application whenever changes
 have been made to the display hardware physical color
 table as a result of another application calling
 WinRealizePalette.
WM_RENDERALLFMTS
 The application renders the clipboard data in all
 formats it is capable of generating and passes a
 handle to each format to WinSetClipbrdData. This
 ensures that the data in the clipboard can be
 rendered even though the application has been
 destroyed.
WM_RENDERFMT
 This message is a request to the clipboard owner to
 render the data of the format specified in usfmt.
WM_SAVEAPPLICATION
 This message is sent by the system to notify an application
 to save its current state.
WM_SEM1
 This message is sent or posted by an applicaton.
WM_SEM2
 This message is sent or posted by an applicaton.
WM_SEM3
 This message is sent or posted by an applicaton.
WM_SEM4
 This message is sent or posted by an applicaton.
WM_SETACCELTABLE
 This message establishes the window accelerator table
 to be used for translation, when the window is active.
WM_SETBORDERSIZE
 This message is sent to the frame window to change
 the width and height of the border.
WM_SETFOCUS
 This message occurs when a window is to receive
 or lose the input focus.
WM_SETHELPINFO
 This message establishes the help information to be used
 when the window is active.
WM_SETSELECTION
 This message occurs when a window is selected or deselected.
WM_SETWINDOWPARAMS
 This message occurs when an application sets or
 changes the window parameters.
WM_SHOW
 This message occurs when a window's WS_VISIBLE state is being changed.
WM_SIZE
 This message occurs when a window changes its size.
WM_SIZECLIPBOARD
 This message is sent when the clipboard contains a data
 handle for the CFI_OWNERDISPLAY format, and the
 clipboard application window has changed size.
WM_SUBSTITUTESTRING
 This message is sent from the WinSubstituteStrings call.
WM_SYSCOLORCHANGE
 This message is sent to all main windows when a change
 is made to the system colors by the WinSetSysColors
 function.
WM_SYSCOMMAND
 This message occurs when a control has a significant event
 to notify to its owner or when a key stroke has been
 translated by an accelerator table into a WM_SYSCOMMAND
 message.
WM_SYSVALUECHANGED
 This message is posted to all main windows when one
 of the settable system values is changed.
WM_TEXTEDIT
 This message occurs when the operator requests a direct
 name edit operation.
WM_TIMER
 This message is posted when a timer times out.
WM_TRACKFRAME
 This message is sent to a window whenever it is to be moved or sized.
WM_TRANSLATEACCEL
 This message is sent to the focus window whenever a
 WM_CHAR message occurs.
WM_TRANSLATEMNEMONIC
 This message occurs during frame control processing of
 a WM_TRANSLATEACCEL message.
WM_UPDATEFRAME
 This message is sent by an application after frame controls
 have been added or removed from the window frame.
WM_VSCROLL
 This message occurs when a vertical scroll bar control
 has a significant event to notify to its owner.
WM_VSCROLLCLIPBOARD
 This message is sent to the clipboard owner window when
 the clipboard contains a data handle for the
 CFI_OWNERDISPLAY format, and there is an event in the
 clipboard viewer's vertical scroll bar.
WM_WINDOWPOSCHANGED
 This message is sent to the window procedure of the
 window whose position is changed.
BN_CLICKED
 The button has been held down.
BN_DBLCLICKED
 The button has been double-clicked.
BN_PAINT
 The button requires painting, using one of the
 following draw states:

       BDS_DISABLED
          The disabled state of the button requires
          painting.

       BDS_HILITED
          The highlighted state of the button requires
          painting.

       BDS_DEFAULT
          The default state of the button requires
          painting.
CBN_EFCHANGE
 The content of the entry field control has changed, and the
 change has been displayed on the screen.
CBN_MEMERROR
 The entry field control cannot allocate the storage
 necessary to accommodate window text of the length implied
 by the EM_SETTEXTLIMIT message.
CBN_EFSCROLL
 The entry field control is about to scroll horizontally.
 This can happen in these circumstances:

    The application has issued a WinScrollWindow call.

    The content of the entry field control has changed.

    The caret has moved.

    The entry field control must scroll to show the caret position.
CBN_EFCHANGE
 The content of the entry field control has changed, and
 the change has been displayed on the screen.
CBN_LBSELECT
 An item in the list box control has been selected.
CBN_LBSCROLL
 The list box is about to scroll.
CBN_SHOWLIST
 The list box is about to be displayed.
CBN_ENTER
 The user has depressed the ENTER key or double
 clicked (single clicked in the case of a drop-down list)
 on an item in the list box control.
CBM_HILITE
 This message sets the highlighting state of the entry field
 control.
CBM_ISLISTSHOWING
 This message determines if the list box control is
 showing.
CBM_SHOWLIST
 This message sets the showing state of the list box
 control.
EN_CHANGE
 The content of the entry field control has changed, and the
 change has been displayed on the screen.
EN_KILLFOCUS
 The entry field control is losing the focus.
EN_MEMERROR
 The entry field control cannot allocate the storage necessary to
 accommodate window text of the length implied by the
 EM_SETTEXTLIMIT message.
EN_OVERFLOW
 The entry field control cannot insert more text
 than the current text limit.
 If the recipient of this message returns TRUE, then the entry
 field control retries the operation, otherwise it terminates the
 operation.
EN_SCROLL
 The entry field control is about to scroll horizontally. This can
 happen in these circumstances:

    The application has issued a WinScrollWindow call.

    The content of the entry field control has changed.

    The caret has moved.

    The entry field control must scroll to show the caret position.
LN_ENTER
 Either the the ENTER or RETURN key has been pressed while
 the list box control has the focus, or the list box control has
 been double-clicked.
LN_KILLFOCUS
 The list box control loses the focus.
LN_SCROLL
 The list box control is about to scroll horizontally. This can
 happen when the application has issued a WinScrollWindow call.
LN_SETFOCUS
 The list box control receives the focus.
LN_SELECT
 An item is being selected (or deselected).
MLN_TEXTOVERFLOW
 A key stroke causes the amount of text to exceed the
 limit on the number of bytes of data (refer to
 MLM_SETTEXTLIMIT).  The parameter contains the
 number of bytes of data which would not fit within the
 current text limit.  For character key strokes this can
 be 1 or 2 (DBCS). For SHIFT+INS (paste) it can be
 any amount up to the paste limit.

 The default action of FALSE causes the default error
 handling, which is to ignore the key stroke, and
 beep.

 An action of TRUE implies that corrective action has
 been taken (such as deleting existing text or raising
 the limit) and the WM_CHAR should be reprocessed
 as if just entered.
MLN_PIXHORZOVERF
 A key stroke causes the size of the display bit map
 to exceed the horizontal limit of the format rectangle
 (refer to MLM_SETFORMATRECT). The parameter
 contains the number of pels that would not fit within
 the current text limit.

 The default action of FALSE causes the default error
 handling, which is to ignore the key stroke, and
 beep.

 An action of TRUE implies that corrective action has
 been taken (such as changing to a smaller font or
 raising the limit) and the WM_CHAR should be
 reprocessed as if just entered.
MLN_PIXVERTOVERF
 A key stroke causes the size of the display bit map
 to exceed the vertical limit of the format rectangle
 (refer to MLM_SETFORMATRECT). The parameter
 contains the number of pels that would not fit within
 the current text limit.

 The default action of FALSE causes the default error
 handling, which is to ignore the key stroke, and
 beep.

 An action of TRUE implies that corrective action has
 been taken (such as changing to a smaller font or
 raising the limit) and the WM_CHAR should be
 reprocessed as if just entered.
MLN_OVERFLOW
 An action other than entry of a key stroke causes a
 condition involving the text limit or format rectangle
 limit, such that either the limit becomes inadequate
 to contain the text, or the text exceeds the limit.

 This can be caused by:

   MLM_SETWRAP
   MLM_SETTABSTO
   MLM_SETFONT
   MLM_IMPORT
   MLM_PASTE
   MLM_CUT
   MLM_UNDO
   MLM_DELETE
   WM_SIZE
MLN_HSCROLL
 Indicates that the MLE has completed a scrolling
 calculation and is about to update the display
 accordingly.  All queries return values as if the
 scrolling were complete.  However, no scrolling
 action is visible on the user interface.
MLN_VSCROLL
 Indicates that the MLE has completed a scrolling
 calculation and is about to update the display
 accordingly.  All queries return values as if the
 scrolling were complete.  However, no scrolling
 action is visible on the user interface.
MLN_CHANGE
 Signals that the text has changed.  This notification
 is sent whenever any text change occurs.
MLN_UNDOOVERFLOW
 Signals that the text change operation, which could
 normally be undone, cannot be undone because the
 amount of text involved exceeds the "undo" capability.
 This includes text entry, deletion, cutting, and
 pasting.
MLN_CLPBDFAIL
 Signals that a clipboard operation failed.
MLN_MEMERROR
 Signals that the required storage cannot be obtained.
 The action that results in the increased storage
 requirement, fails.
MLN_SETFOCUS
 Sent whenever the MLE window receives the input focus.
MLN_KILLFOCUS
 Sent whenever the MLE window loses the input focus.
MLN_MARGIN
 Whenever the user moves the mouse into the left,
 right, top, or bottom margins, this message is sent
 to the window's owner.

 If the owner returns an action of TRUE, the mouse
 move is assumed to have been processed by the
 owner and no further action need be taken.

 If the owner returns an action of FALSE, the MLE
 performs a default action appropriate to each
 different mouse action.

 The exceptions to this are all mouse messages that
 occur after a button-down inside the margin, until and
 including the matching button-up.  Conceptually the
 "drag" (button-down until button-up) is a single macro
 event.  Therefore, if FALSE is returned for a
 button-down event, no further margin notifications
 are given until after the drag has ended (button-up).

 Note:  If the application receives a notification of
 button-down in the margin and processes it, it must
 capture the mouse until the button-up event.
MLN_SEARCHPAUSE
 This notification is sent periodically by the MLE,
 while an MLM_SEARCH message is being
 processed, to give an application the opportunity to
 stop excessively long searches, and to provide
 search progress information.  The owner window can
 respond either with TRUE or FALSE. FALSE causes
 the MLE to continue searching, and TRUE causes the
 MLE to stop the search immediately. For further
 information, see MLM_SEARCH.
SPBN_UPARROW
 Tells the application that the Up Arrow was clicked on, or
 the Up Arrow key was pressed.
SPBN_DOWNARROW
 Tells the application that the Down Arrow was clicked on, or
 the Down Arrow key was pressed.
SPBN_SETFOCUS
 Tells the application which spin field was selected.
SPBN_KILLFOCUS
 Tells the application when the spin field loses focus.
SPBN_ENDSPIN
 Tells the application that the user released the select
 button or one of the arrow keys while spinning a button.
SPBN_CHANGE
 Tells the application that the contents of the spin field
 changed.
SPBN_SETFOCUS
 This message tells the application which spin field is selected.
SPBN_KILLFOCUS
 This message tells the application when a spin field loses
 focus.
CM_ALLOCDETAILFIELDINFO
 The container control requires that the application use the
 CM_ALLOCDETAILFIELDINFO message to allocate memory for any FIELDINFO
 structures that are used.
CM_ALLOCRECORD
 This message allocates memory for one or more RECORDCORE structures.
CM_ARRANGE
 The container items fill the topmost row until the width of the
 client area is reached. The container items then wrap to form
 another row immediately below the filled row. This process is
 repeated until all of the container items are positioned in rows.
 Default spacing is implemented according to the guidelines for the CUA
 user interface. A vertical scroll bar is enabled, if necessary.

 Refer to the description of containers in the SAA CUA Advanced
 Interface Design Reference for more information about
 container guidelines.
CM_CLOSEEDIT
 The application sends this message to the container
 control to end the direct editing of container text.
 The application can assign this message to a
 key or key combination, a menu choice, or both so
 that the user can end the direct editing of container
 text from the keyboard.

 When the container control receives this message, it sends the
 CN_REALLOCPSZ and CN_ENDEDIT notification codes to the application.
CM_COLLAPSETREE
 This message causes one parent item in the tree view to
 be collapsed.
CM_ERASERECORD
 This message erases the source record from the current
 view when a move occurs as a result of direct
 manipulation.
CM_EXPANDTREE
 This message causes one parent item in the tree view to
 be expanded.
CM_FILTER
 This message filters the contents of a container so that a
 subset of the container items is viewable.
CM_FREEDETAILFIELDINFO
 This message frees the memory associated with one or
 more FIELDINFO structures.
CM_FREERECORD
 This message frees the memory associated with one or
 more RECORDCORE structures.
CM_HORZSCROLLSPLITWINDOW
 This message scrolls a split window in the split details
 view.
CM_INSERTDETAILFIELDINFO
 This message inserts one or more FIELDINFO structures
 into a container control.
CM_INSERTRECORD
 This message inserts one or more RECORDCORE
 structures into a container control.
CM_INVALIDATEDETAILFIELDINFO
 This message notifies the container control that any or all
 FIELDINFO structures are not valid and that the view must
 refreshed.
CM_INVALIDATERECORD
 This message notifies the container control that a
 RECORDCORE structure or structures are not valid and
 must be refreshed.
CM_OPENEDIT
 This message opens the window that contains the
 multiple-line entry (MLE) field used to edit container text
 directly.
CM_PAINTBACKGROUND
 This message informs an application whenever a
 container's background is painted if the
 CA_OWNERPAINTBACKGROUND attribute of the CNRINFO
 data structure is specified.
CM_QUERYCNRINFO
 This message returns the container's CNRINFO structure.
CM_QUERYDETAILFIELDINFO
 This message returns a pointer to the requested
 FIELDINFO structure.
CM_QUERYDRAGIMAGE
 This message returns a handle to the icon or bit map for
 the record in the current view.
CM_QUERYRECORD
 This message returns a pointer to the requested
 RECORDCORE structure.
CM_QUERYRECORDEMPHASIS
 This message queries for a container record with the
 specified emphasis attributes.
CM_QUERYRECORDFROMRECT
 This message queries for a container record that is
 bounded by the specified rectangle.
CM_QUERYRECORDINFO
 This message updates the specified records with the
 current information for the container.
CM_QUERYRECORDRECT
 This message returns the rectangle of the specified
 container record, relative to the container window origin.
CM_QUERYVIEWPORTRECT
 This message returns a rectangle that contains the
 coordinates of the container's client area. These are virtual
 coordinates that are relative to the origin of the coordinate
 space requested.
CM_REMOVEDETAILFIELDINFO
 This message removes one, multiple, or all FIELDINFO
 structures from the container control.
CM_REMOVECORD
 This message removes one, multiple, or all RECORDCORE
 structures from the container control.

 Note:  If the CCS_MINIRECORDCORE style bit is specified
 when a container is created, then MINIRECORDCORE
 should be used instead of RECORDCORE and
 PMINIRECORDCORE should be used instead of
 PRECORDCORE in all applicable data structures and
 messages.
CM_SCROLLWINDOW
 This message scrolls an entire container window.
CM_SEARCHSTRING
 This message returns the pointer to a container record
 whose text matches the string.
CM_SETCNRINFO
 This message sets or changes the data for the container
 control.
CM_SETRECORDEMPHASIS
 This message sets the emphasis attributes of the
 specified container record.
CM_SORTRECORD
 This message sorts the container records in the container
 control.
DM_DRAGFILECOMPLETE
 This message is sent when a direct manipulation operation
 on a file or files is complete.
DM_DRAGLEAVE
 This message is sent to a window that is being dragged
 over when one of these conditions occur:

  1. The object is dragged outside the boundaries of the
     window.
  2. The drag operation is terminated while the object is
     over the window.
DM_DRAGOVER
 This message allows the window under the mouse pointer
 to determine if the object or objects currently being
 dragged can be dropped.
DM_DROP
 This message is sent to the target when the dragged
 object is dropped.
DM_DROPHELP
 This message requests help for the current drag operation.
DM_EMPHASIZETARGET
 This message is sent to the caller of
 DrgAcceptDroppedFiles to inform it to either apply or
 remove target emphasis from itself.
DM_ENDCONVERSATION
 The target uses this message to notify a source that a
 drag operation is complete.
DM_DRAGERROR
 This message is sent to the caller of DrgDragFiles or
 DrgAcceptDroppedFiles when an error occurs during a
 move or copy operation for a file.
DM_FILERENDERED
 This message is sent to the window handling the drag
 conversation for the caller of DrgDragFiles.
DM_PRINT
 This message is sent to a source to request it to print the
 current view of an object.
DM_RENDER
 This message is used to request a source to provide a
 rendering of an object in a specified rendering mechanism
 and format.
DM_RENDERCOMPLETE
 This message is posted by a source to a target window.  It
 informs the target that the source has completed a
 requested rendering operation.
DM_RENDERFILE
 This message is sent to the caller of DrgDragFiles to tell
 it to render a file.
DM_RENDERPREPARE
 This message tells a source to prepare for the rendering
 of an object.
WM_DDE_ACK
 This message notifies an application of the receipt and
 processing of a WM_DDE_EXECUTE, WM_DDE_DATA,
 WM_DDE_ADVISE, WM_DDE_UNADVISE or
 WM_DDE_POKE message, and in some cases, of a
 WM_DDE_REQUEST message.

 This message is always posted.
WM_DDE_ADVISE
 This message (posted by a client application) requests the
 receiving application to supply an update for a data item
 whenever it changes.

 This message is always posted.
WM_DDE_DATA
 This message notifies a client application of the availability
 of data. It is always posted.
WM_DDE_EXECUTE
 This message posts a string to a server application to be
 processed as a series of commands. The server
 application is expected to post a WM_DDE_ACK message
 in response.

 This message is always posted.
WM_DDE_INITIATE
 This message is sent by an application to one or more
 other applications, to request initiation of a conversation.

 This message is always sent.
WM_DDE_INITIATEACK
 This message is sent by a server application in response
 to a WM_DDE_INITIATE message, for each topic that the
 server application wishes to support.
WM_DDE_POKE
 This message requests an application to accept an
 unsolicited data item. It is always posted.
WM_DDE_REQUEST
 This message is posted from client to server, to request
 that the server provide a data item to the client.

 This message is always posted.
WM_DDE_TERMINATE
 This message is posted by either application participating
 in a DDE conversation, to terminate that conversation.

 This message is always posted.
WM_DDE_UNADVISE
 This message is posted by a client application to a server
 application to indicate that the specified item should no
 longer be updated.
BKN_HELP
 Indicates the notebook control has received a WM_HELP message.
BKN_NEWPAGESIZE
 Indicates the dimensions of the application page window have
 changed.
BKN_PAGESELECTED
 Indicates a new page has been brought to the top of the notebook.
BKN_PAGEDELETED
 Indicates a page has been deleted from the notebook.
SLN_CHANGE
 The slider arm position has changed.
SLN_KILLFOCUS
 The slider control is losing the focus.
SLN_SETFOCUS
 The slider control is receiving the focus.
SLN_SLIDERTRACK
 The slider arm is being dragged, but has not been released.
VN_DRAGLEAVE
 The value set receives a DM_DRAGLEAVE message.
VN_DRAGOVER
 The value set receives a DM_DRAGOVER message.
VN_DROP
 The value set receives a DM_DROP message. The VN_DROP notification
  code is sent only when an item is dropped on an item that has the
  VIA_DROPONABLE attribute.
VN_DROPHELP
 The value set receives a DM_DROPHELP message.
VN_ENTER
 The user presses the Enter key while the value set window
 has the focus or double-clicks the select button while
 the pointer is over an item in the value set.
VN_HELP
 The value set receives a WM_HELP message.
VN_INITDRAG
 The drag button was pressed and the pointer was moved
 while the pointer was over the value set control. The
 VN_INITDRAG notification code is sent only for items
 that have the VIA_DRAGGABLE attribute.
VN_KILLFOCUS
 The value set is losing the focus.
VN_SELECT
 An item in the value set has been selected and is given
 selected-state emphasis.
VN_SETFOCUS
 The value set receives the focus.
Local Variables
 This is where local variables are declared in your window procedure.
