PMGuide - Message Processing
Reprint Courtesy of International Business Machines Corporation, © International Business Machines Corporation
Messages are processed by window and dialog procedures.
Every window has a window procedure. Windows can also be combined into standard windows or dialog boxes. These are special cases of groups of windows that also have their own procedures. A window or dialog procedure must be capable of processing any message. This can be achieved by delegating some message types to the default window, or dialog, procedures by use of the WinDefWindowProc and WinDefDlgProc functions respectively.
Control windows are a special type of child windows. They take the form of objects such as buttons, scroll bars, list boxes, and text entry fields. These child windows process mouse and keyboard input and notify its owner of significant input events. Procedures for these child window controls are inside the Presentation Manager and are often called system-provided window procedures.
All messages have the same form as QMSG. structure.
- Message Types
There are two types of window procedure message processing:
- Default window and dialog procedure message processing
- Control window message processing.
These types are described in Default Window and Dialog Procedure Message Processing and Control Window Message Processing. The messages are described in the message groups found on the Contents.
Default Window and Dialog Procedure Message Processing
These window procedures provide default processing for application window procedures:
- Default window and dialog procedure
- Language support window and dialog procedures, which are used if the application specifies a null window procedure
- Default AVIO window procedure.
These messages are described in Default Window Procedure Message Processing. The system-provided window procedures take no action on messages that are not defined in this chapter, and return NULL.
Control Window Message Processing
Controls are predefined classes of child windows that any application can use for input and output. These control classes are predefined:
- WC_BUTTON
Consists of buttons and boxes that the operator can select by clicking the pointing device or using the keyboard. These messages are described in Button Control Window Processing. WC_CIRCULARSLIDER
Consists of a visual component whose specific purpose is to allow a user to set, display, or modify a value by moving the slider arm around the circular slider dial. Messages are described in Circular Slider Control Window Messages.
- WC_COMBOBOX
Consists of an entry field control and a list box control merged into a single control. The list, which is usually limited in size, is displayed below the entry field and offset one dialog box unit to its right. These messages are described in Combination-Box Control Window Processing.
- WC_CONTAINER
Consists of a visual component whose specific purpose is to hold objects such as executable programs, word processing files, graphics images, and database records. Messages are described in Container Control Window Processing.
- WC_ENTRYFIELD
Consists of a single line of text that the operator can edit. These messages are described in Entry Field Control Window Processing.
- WC_FRAME
Consists of a composite window. These messages are described in Frame Control Window Processing.
- WC_LISTBOX
Presents a list of text items from which the operator can make selections. These messages are described in List Box Control Window Processing.
- WC_MENU
Presents a list of items, which may be text displayed horizontally as action bars or vertically as pull-down menus. Menus are usually used to provide a command interface to applications. These messages are described in Menu Control Window Processing.
- WC_MLE
Consists of a rectangular window that displays multiple lines of text that the operator can edit. When it has the focus, the cursor marks the current insertion or replacement point. These messages are described in Multi-Line Entry Field Control Window Processing.
- WC_NOTEBOOK
Consists of a visual component whose specific purpose is to organize information on individual pages so that a user can find and display that information quickly and easily. Messages are described in Notebook Control Window Processing.
- WC_SCROLLBAR
Consists of window scroll bars that allow the operator to make a request to scroll the contents of an associated window. These messages are described in Scroll Bar Control Window Processing.
- WC_SLIDER
Consists of a visual component whose specific purpose is to allow a user to set, display, or modify a value by moving the slider arm along the slider shaft. Messages are described in Slider Control Window Processing. WC_SPINBUTTON
Presents a scrollable ring of choices from which the operator can select. These messages are described in Spin Button Control Window Processing.
- WC_STATIC
Consists of simple display items that do not respond to keyboard or pointing device events. These messages are described in Static Control Window Processing.
- WC_TITLEBAR
Displays the window title or caption and allows the operator to move its owner. These messages are described in Title Bar Control Window Processing.
- WC_VALUESET
Consists of a visual component whose specific purpose is to allow a user to select one choice from a group of mutually exclusive choices. A value set can use graphical images (bit maps or icons), as well as colors, text, and numbers, to represent the items that a user can select. Messages are described in Value Set Control Window Processing.
- Owner-Notification Messages
Controls are useful because they notify their owners when significant events take place. A control notifies its owner by sending a WM_CONTROL message or by posting a WM_COMMAND or WM_HELP message.
- WM_CONTROL
- WM_COMMAND
Param2 contains information that indicates the source of the WM_COMMAND message:
- CMDSRC_PUSHBUTTON
- Posted by a pushbutton control
- CMDSRC_MENU
- Posted by a menu control
- CMDSRC_ACCELERATOR
- Posted by WinTranslateAccel
- CMDSRC_FONTDLG
- Posted by a font dialog.
- CMDSRC_OTHER
- Other source.
- WM_HELP
Param1 contains information that indicates the source of the WM_HELP message:
- CMDSRC_PUSHBUTTON
- Posted by a pushbutton control
- CMDSRC_MENU
- Posted by a menu control
- CMDSRC_ACCELERATOR
- Posted by WinTranslateAccel
- CMDSRC_OTHER
- Other source.
Notation Conventions
Each message description contains:
- Name
The message name; a 2-byte identity unique to a message.
Some message identity values are reserved for the use of the operating system, some are available for use by an application. See Reserved Messages under Default Window Procedure Message Processing.
For all messages, the first two or three characters of the name indicate the type of window that is related to the message; for example:
- LM
List box control
- SBM
Scroll bar control.
- Cause
The principal reason that caused the generation of the message.
- Parameters
Input and output parameters pertinent to the message.
There are always two parameters (param1 and param2) and one return value. Any or all of the parameters can be NULL.
- Remarks
An explanation of the relationship between the parameters in the context of the message and an indication of the expected processing of the message.
- Default
A definition of how the default window procedures (provided by the system) process the message.
Note: A message is not equivalent to a call of the same name.
Button Control Window Processing
This system-provided window procedure processes the actions on a button control (WC_BUTTON).
For information on button control data see BTNCDATA.
- Purpose
A button control is a small rectangular child window representing a button that the operator can "switch" on or off. Button controls can be used alone or in groups, and can either be labeled or appear without text. Button controls typically change appearance when the operator clicks a pointing device on them or pressing the space bar when the button has the keyboard focus.
Buttons can be disabled to prevent them from responding when the operator clicks on them. Disabled buttons are displayed using a different emphasis technique (for example, color or half-toning).
Button Control Styles
These button control styles are available:
- BS_AUTOCHECKBOX
An automatic check box automatically toggles its state whenever the user clicks on it.
- BS_AUTORADIOBUTTON
When clicked, an automatic radio button automatically checks itself and unchecks all other radio buttons in the same group.
- BS_AUTOSIZE
Buttons with this style are sized automatically to make sure the contents fit.
If BS_AUTOSIZE is selected when the button is created, and a -1 is specified for either the parameter of WinCreateWindow, (or when creating the button as a resource) then the button's optimal size is calculated to display the its contents.
- BS_AUTO3STATE
An automatic three-state check box automatically toggles its state when the user clicks on it.
- BS_BITMAP
Places a bit map instead of text on the push button control. This style works only with the BS_PUSHBUTTON.
- BS_CHECKBOX
- A check box is a small square with a character string to the right. If it is checked, a small black box appears inside the small square. When the box or string is clicked, by clicking on it with the pointing device or pressing the keyboard spacebar when it is active,
- BS_DEFAULT
A BS_DEFAULT pushbutton is one with a thick border box. It has the same properties as a pushbutton. In addition, the user may press a BS_DEFAULT pushbutton by pressing the RETURN or ENTER key. The intention is the same for user-buttons, but the appearance of a BS_DEFAULT userbutton is application defined.
This style can be ORed with the BS_PUSHBUTTON and BS_USERBUTTON styles:
- BS_HELP
The button posts a WM_HELP message rather than a WM_COMMAND message.
This style can be ORed with the BS_PUSHBUTTON style.
If both BS_HELP and BS_SYSCOMMAND are set, BS_HELP takes precedence.
- BS_ICON
Places an icon instead of text on the push button control. This style works only with the BS_PUSHBUTTON style.
- BS_MINIICON
This enables miniicons (half the size of normal icons) to be placed on the push button control.
- BS_NOBORDER
The pushbutton is displayed without a border drawn around it. There is no other change in the pushbutton's operation.
This style can be ORed with the BS_PUSHBUTTON style.
- BS_NOCURSORSELECT
The radio button does not select itself when given the focus as the result of an arrow key or tab key.
This style can be ORed with the BS_AUTORADIOBUTTON style.
- BS_NOPOINTERFOCUS
Buttons with this style do not set the focus to themselves when clicked with the pointing device. This enables the cursor to stay on a control for which information is required, rather than moving to the button. This style has no effect on keyboard interaction. The tab key can still be used as usual to move the focus to the button.
This style can be ORed with any of the basic button styles.
- BS_NOTEBOOKBUTTON
A notebook button is identical to a pushbutton except that when it is created as a child of a notebook page it becomes a button in the common button area of the notebook page. If the button is not in a notebook page it will be indistinguishable from a pushbutton.
- BS_PUSHBUTTON
A pushbutton is a box that contains a string. When a button is pushed, by clicking the pointing device on it or pressing the spacebar when it is active, the parent window is notified. BS_RADIOBUTTON
A radio button is similar to a check box, but is typically used in groups in which only one button at a time is checked. When a radio button is clicked or a cursor key is pressed to move within the group, it notifies its owner window. It is then up to the owner window to check the clicked radio button and uncheck all the rest, if necessary.
- BS_SYSCOMMAND
The button posts a WM_SYSCOMMAND message rather than a WM_COMMAND message.
This style can be ORed with the BS_PUSHBUTTON style.
If both BS_HELP and BS_SYSCOMMAND are set, BS_HELP takes
- BS_TEXT
This enables both text and a bitmap, icon, or miniicon to be placed on the push button control. This style works only with the BS_PUSHBUTTON style, and should be used in conjunction with BS_BITMAP, BS_ICON or BS_MINIICON.
- BS_USERBUTTON
This is an application-definable button. The owner window of this style control receives the additional button style BN_PAINT.
- BS_3STATE
A three-state check box is identical to a check box control except that its check box can be half-toned as well as the box being checked or unchecked.
When BS_ICON, BS_MINIICON or BS_BITMAP is selected, the image can be activated by specifying the image ID with the button text string. For instance, to load an icon (#define ICON_ID 300), and display it within a button, the button string is set to "#300."
When BS_ICON, BS_MINIICON or BS_BITMAP is selected along with BS_TEXT, the image can still be activated by specifying the following with a zero-terminated text string. format:
"#<image-id>\t<text>"
where:
<image-id> resource id of the icon, miniicon or bitmap \t tab character <text> zero-terminated button text string
For example, to load an icon (#define ICON_ID 300) and display it with the button text "My Button," the button string is set to "#300\tMy Button." Notice the "\t" is used to separate the text from the image-id. The image is displayed above the text within the button.
Default Colors
The following system colors are used when the system draws button controls:
SYSCLR_BUTTONDEFAULT SYSCLR_BUTTONLIGHT SYSCLR_BUTTONMIDDLE SYSCLR_MENUTEXT SYSCLR_WINDOW SYSCLR_WINDOWFRAME.
Some of these defaults can be replaced by using the following presentation parameters in the application resource script file or source code:
PP_BACKGROUNDCOLOR PP_BORDERCOLOR PP_DISABLEDFOREGROUNDCOLOR PP_FOREGROUNDCOLOR PP_HILITEFOREGROUNDCOLOR.
Button Control Notification Messages
These messages are initiated by the button control window to notify its owner of significant events.
- WM_COMMAND (in Button Controls)
- WM_CONTROL (in Button Controls)
- WM_HELP (in Button Controls)
- WM_SYSCOMMAND
Button Control Window Messages
- BM_AUTOSIZE
- BM_CLICK
- BM_QUERYCHECK
- BM_QUERYCHECKINDEX
- BM_QUERYHILITE
- BM_SETCHECK
- BM_SETDEFAULT
- BM_SETHILITE
- WM_ENABLE (in Button Controls)
- WM_MATCHMNEMONIC (in Button Controls)
- WM_QUERYCONVERTPOS (in Button Controls)
- WM_QUERYWINDOWPARAMS (in Button Controls)
- WM_SETWINDOWPARAMS (in Button Controls)
Circular Slider Control Window Messages
The system-provided window procedure processes the actions on a circular control (WC_CIRCULARSLIDER).
Purpose
The circular slider control supports values set in analog rather than digital form. This control is intended to emulate the actual controls of stereo and video components.
The circular slider can be used instead of a linear slider. While, at present, there are no particular guidelines as to when a circular slider should replace a linear slider, the circular slider consumes less space on the screen and, therefore, is practical to represent several controls in the same window. For example, for an audio attributes dialog that has volume, balance, bass, and treble controls, you might want to use a linear slider for the volume control (since it is used frequently); but to conserve space and give a more familiar appearance, the circular slider could be used for the balance, bass, and treble.
Circular Slider Control Styles
These circular slider control styles are available:
- CSS_CIRCULARVALUE
Draws a circular thumb, rather than a line, for the value indicator.
- CSS_MIDPOINT
Makes the mid-point tick mark larger.
- CSS_NOBUTTON
Does not display value buttons.
- CSS_NONUMBER
Does not display the value on the dial.
- CSS_NOTEXT
Does not display title text under the dial.
- CSS_POINTSELECT
Permits the values on the circular slider to change immediately when dragged.
Direct manipulation is performed by using a mouse to click on and drag the circular slider. There are two modes of direct manipulation for the circular slider.
The default direct manipulation mode is to scroll to the value indicated by the position of the mouse. This could be important if you used a circular slider for a volume control, for example. Increasing the volume from 0% to 100% too quickly could result in damage to both the user's ears and the equipment.
The other mode of direct manipulation permits the value on the circular slider to change immediately when dragged. This mode is enabled using the CSS_POINTSELECT style bit. When this style is used, the value of the dial can be changed by tracking the value with the mouse, which changes values quickly.
- CSS_PROPORTIONALTICKS
Allow the length of the tick marks to be calculated as a percentage of the radius.
- CSS_360
Permits the scroll range to extend 360 degrees.
CSS_360 forces the CSS_NONUMBER style on. This is necessary to keep the value indicator from corrupting the number value.
Circular Slider Control Data
See CSBITMAPDATA.
Default Colors
The following system colors are used when the system draws circular slider controls:
SYSCLR_BACKGROUNDCOLOR SYSCLR_FOREGROUNDCOLOR
Some of these defaults can be replaced by using the following presentation parameters in the application resource script file or source code:
PP_BACKGROUNDCOLOR PP_BORDERCOLOR
Circular Slider Control Notification Messages
These messages are initiated by the circular slider control window to notify its owner of significant events.
- WM_CONTROL (in Circular Slider Controls)
- WM_CONTROLPOINTER (in Circular Slider Controls)
Circular Slider Control Window Messages
This section describes the Circular Slider Control Window Procedure actions on receiving the following messages.
- CSM_QUERYINCREMENT
- CSM_QUERYRADIUS
- CSM_QUERYRANGE
- CSM_QUERYVALUE
- CSM_SETBITMAPDATA
- CSM_SETINCREMENT
- CSM_SETRANGE
- CSM_SETVALUE
- WM_CHAR (in Circular Slider Controls)
- WM_PRESPARAMCHANGED (in Circular Slider Controls)
- WM_QUERYWINDOWPARAMS (in Circular Slider Controls)
- WM_SETWINDOWPARAMS (in Circular Slider Controls)
Clipboard Message Processing
The clipboard is used by the end-user to transfer data between Presentation Manager* (PM*) applications using the following operations:
- Cut
- Remove from a window, leaving a gap in the source, and save for later use.
- Copy
- Copy from a window, leaving the source intact, and save for later use.
- Paste
Paste the cut or copied data into the window of an application (the target).
Clipboard Messages
This section contains the messages used by the Clipboard.
- WM_DESTROYCLIPBOARD
- WM_DRAWCLIPBOARD
- WM_HSCROLLCLIPBOARD
- WM_PAINTCLIPBOARD
- WM_RENDERALLFMTS
- WM_RENDERFMT
- WM_SIZECLIPBOARD
- WM_VSCROLLCLIPBOARD
Combination-Box Control Window Processing
This system-provided window procedure processes the actions on a prompted entry field (combination-box) control (WC_COMBOBOX).
- Purpose
A combination-box consists of an entry field control and a list box control merged into a single control. The list, which is usually limited in size, is displayed below the entry field, and offset one dialog-box unit to its right.
When the combination-box control has the focus, the text in the entry field is given selected emphasis and, if the list box control has a matching entry, it is scrolled to show that match at the top of the list.
A combination-box, while sometimes only showing the entryfield, also owns the area occupied by the invisible list box. Another window can and will be clipped to it if they have clipping flags set.
Combination Box Control Styles
These combination-box control styles are available:
- CBS_SIMPLE
Both the entry field control and the list box control are visible. When the selection changes in the list box control, the text of the selected item in the list box control is placed in the entry field. Also, the text in the entry field is completed by extending the text of the entry field with the closest match from the list box.
- CBS_DROPDOWN
Inherits all the properties of a combination-box control with a style of CBS_SIMPLE and, in addition, the list box control is hidden until the user requests that it should be displayed.
- CBS_DROPDOWNLIST
In which the entry field control is replaced by a static control, that displays the current selection from the list box control. The user must explicitly cause the display of the list box control in order to make alternative selections in the list box.
Default Colors
The following system colors are used when the system draws combination-box controls:
SYSCLR_WINDOWFRAME SYSCLR_ENTRYFIELD SYSCLR_WINDOW SYSCLR_BUTTONMIDDLE SYSCLR_BUTTONDARK SYSCLR_BUTTONLIGHT SYSCLR_OUTPUTTEXT SYSCLR_WINDOWTEXT SYSCLR_HIGHLITEFOREGROUND SYSCLR_HIGHLITEBACKGROUND SYSCLR_FIELDBACKRGOUND SYSCLR_WINDOWFRAME.
Some of these defaults can be replaced by using the following presentation parameters in the application resource script file or source code:
PP_FOREGROUNDCOLOR PP_DISABLEDFOREGROUNDCOLOR PP_HIGHLIGHTFOREGROUNDCOLOR PP_FONTNAMESIZE PP_BORDERCOLOR.
Combo Box Control Notification Messages
The combo box control uses most of the same window messages as the entry field control and the list box control to notify its owner of significant events.
- WM_CONTROL (in Combination Boxes)
Combo Box Control Window Messages
The combo box control uses most of the same messages as the entry field control and the list box control. In particular, the following messages are supported to achieve the functions of a combo box. These messages are explained in detail in the entry field control window messages and the list box control window messages sections.
- WM_SETWINDOWPARAMS (in Entry Fields)
To set the text of the entry field.
- WM_QUERYWINDOWPARAMS (in Entry Fields)
To obtain the text of the entry field.
- LM_QUERYITEMCOUNT
To obtain the count of items in the list box control.
- LM_INSERTITEM
To insert an item into the list box control.
- LM_SETTOPINDEX
To scroll the list box control so that the specified item is at the top.
- LM_QUERYTOPINDEX
To obtain the index of the item at the top of the list box control.
- LM_DELETEITEM
To delete an item from the list box control. If necessary, this also changes the content of the entry field to the item at the top of the list box control.
- LM_SELECTITEM
To select a specified item in the list box control. Also, this changes the content of the entry field to the item at the top of the list box control and, if the list box control is not visible, causes the list box control to 'dropdown' below the entry field control.
- LM_QUERYSELECTION
To obtain the current selection in the list box control.
- LM_SETITEMTEXT
To change the text of an item in the list box control. If necessary, this also changes the content of the entry field control.
- LM_QUERYITEMTEXT
To obtain the text of an item in the list box control.
- LM_QUERYITEMTEXTLENGTH
To obtain the length of the text of an item in the list box control.
- LM_SEARCHSTRING
To obtain the index of an item in the list box control containing a specified string.
- LM_DELETEALL
To delete all the items in the list box control.
- WM_ENABLE
To enable the combo box control to respond to input.
- EM_QUERYFIRSTCHAR
To obtain the character displayed at the left edge of the entry field control.
- EM_SETFIRSTCHAR
To scroll the entry field control so that the specified character is displayed at the left edge of the entry field control.
- EM_QUERYCHANGED
To obtain the changes to the entry field control.
- EM_QUERYSEL
To obtain the current selection of the entry field control.
- EM_SETSEL
To set the current selection of the entry field control.
- EM_SETTEXTLIMIT
To set the maximum number of characters to be contained in the entry field control.
- EM_CUT
To place the contents of the selection of the entry field control into the clipboard and then delete those contents from the entry field control.
- EM_PASTE
To place the contents of the clipboard into the entry field control.
- EM_COPY
To place the contents of the selection of the entry field control into the clipboard.
- EM_CLEAR
To clear the current selection of the entry field control.
- CBM_HILITE
- CBM_ISLISTSHOWING
- CBM_SHOWLIST
Container Control Window Processing
This system-provided window procedure processes the actions on a container control (WC_CONTAINER).
- Purpose
A container control is a visual component whose specific purpose is to hold objects. These objects, or container items, can be anything that either your application or a user might store in a container. Examples are executable programs, word processing files, graphics images, and database records.
Container item data is stored in RECORDCORE or MINIRECORDCORE data structures. Both the application and the container have access to the data stored in these records.
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.
The maximum number of records is limited by the amount of memory in the user's computer. The container control does not limit the number of records that a container can have.
The following list shows which types of data can be displayed for each container view. Refer to the description of the container control in the OS/2 Programming Guide for more information about the types of views.
- View Types
Data
- Icon view
Icons or bit maps with text strings beneath
- Grid view
Icons or bit maps arranged in grid squares
- Name view
Icons or bit maps with text strings to the right
- Text view
Text strings
- Tree view
Icons or bit maps, and text strings
- Details view
Icons or bit maps, text strings, numbers, times, and dates.
Direct editing of container item text is supported in all views, including blank text fields.
The container control is designed according to the Common User Access (CUA) guidelines. For example, the CUA direct manipulation protocol is fully supported, enabling a user to visually drag an object in a container window and drop it on another object or container window. In addition, the container control supports CUA-defined selection types and techniques for selecting container items, as well as selection mechanisms, such as pointing devices and the keyboard, and multiple forms of emphasis. For a complete description of CUA containers, refer to the SAA CUA Guide to User Interface Design and to the SAA CUA Advanced Interface Design Reference.
The container control automatically provides or enables either horizontal or vertical scroll bars, or both, whenever all or part of one or more container items are not visible in a container window's client area.
Container Control Window Words
The container control reserves 4 bytes in its window words for application use. This memory can be accessed using the WinSetWindowULong and WinQueryWindowULong functions at offset QWL_USER.
Container Control Styles and Selection Types
Containers are WC_CONTAINER class windows that have the following CCS_container styles and selection types. Container control styles and selection types are specified when the container control is created.
- Container Control Styles
The following list defines container style bits that your application can use. These style bits must be set by your application.
- CCS_AUTOPOSITION
- Automatic positioning, which causes container items displayed in the icon view to be arranged when any of the following occur:
- The window size changes
- Container items are inserted, removed, sorted, invalidated, or filtered
- The font or font size changes
- The window title text changes.
- In all of these cases, container items are arranged the same as when the CM_ARRANGE message is sent. The CCS_AUTOPOSITION style bit is valid only when it is used with the icon view (CV_ICON).
- CCS_MINIRECORDCORE
- A record style bit that causes the container to interpret all container records as being smaller than they would otherwise be. If a CM_ALLOCRECORD message is received, all records are interpreted and allocated according to the information in the MINIRECORDCORE data structure instead of the RECORDCORE data structure, which is used if this style bit is not specified.
- CCS_READONLY
- A read-only style bit for an entire container, which prevents a user from editing any of the text in a container window. If you do not set this style bit, a user can edit any of the text in a container window unless you set the following read-only attributes in the appropriate data structures:
- CA_TITLEREADONLY
- Sets the container title to read-only. This is an attribute of the CNRINFO data structure's flWindowAttr field.
- CRA_RECORDREADONLY
- Sets text fields in records to read-only. This is an attribute of the RECORDCORE and MINIRECORDCORE data structures' flRecordAttr field.
- Note: If the CCS_MINIRECORDCORE style bit is specified when a container is created, the MINIRECORDCORE should be used instead of RECORDCORE and PMINIRECORDCORE should be used instead of PRECORDCORE in all applicable data structures and messages.
- CFA_FIREADONLY
- Sets column data to read-only. This is an attribute of the FIELDINFO data structure's flData field.
- CFA_FITITLEREADONLY
- Sets column headings to read-only. This is an attribute of the FIELDINFO data structure's flTitle field.
- CCS_VERIFYPOINTERS
- A pointer verification style bit, which verifies that the application pointers are members of the container's linked list before they are used. If it is not set, the container does not verify the pointers.
Notes: The CCS_VERIFYPOINTERS style bit does not verify the validity of a pointer. It only verifies whether a pointer is a member of a container's linked list.
After your code has been developed and tested, you may want to remove the CCS_VERIFYPOINTERS style bit in order to improve the container's performance. Otherwise, the container will attempt to verify all pointers, which will slow its response to actions that users perform.
- Container Control Selection Types
If a selection type is not specified, single selection is the default. For the tree view, single selection is the only type supported. Refer to the description of the selection types in the SAA CUA Advanced Interface Design Reference for more information.
- CCS_SINGLESEL
- Single selection, which allows a user to select only one container item at a time. Each time a user selects a container item, the selection of any other container item is cancelled.
- CCS_EXTENDSEL
- Extended selection, which allows a user to select one or more container items. A user can select one item, a range of items, or multiple ranges of items.
- CCS_MULTIPLESEL
- Multiple selection, which allows a user to select zero or more container items.
Container Control Data
See the following for information on the container control data structures:
CDATE CNRDRAGINFO CNRDRAGINIT CNRDRAWITEMINFO CNREDITDATA CNRINFO CTIME FIELDINFO FIELDINFOINSERT GRIDINFO GRIDSQUARE MINIRECORDCORE NOTIFYDELTA NOTIFYRECORDEMPHASIS NOTIFYRECORDENTER NOTIFYSCROLL OWNERBACKGROUND QUERYRECFROMRECT QUERYRECORDRECT RECORDCORE RECORDINSERT SEARCHSTRING TREEITEMDESC.
Container Control Notification Messages
These messages are initiated by the container control window to notify its owner of significant events.
- WM_CONTROL (in Container Controls)
- WM_CONTROLPOINTER (in Container Controls)
- WM_DRAWITEM (in Container Controls)
Container Control Notification Codes
The following WM_CONTROL (in Container Controls) notification codes are sent by the container control to its owner.
CN_BEGINEDIT CN_COLLAPSETREE CN_CONTEXTMENU CN_DRAGAFTER CN_DRAGLEAVE CN_DRAGOVER CN_DROP CN_DROPNOTIFY CN_DROPHELP CN_EMPHASIS CN_ENDEDIT CN_ENTER CN_EXPANDTREE CN_GRIDRESIZED CN_HELP CN_INITDRAG CN_KILLFOCUS CN_PICKUP CN_QUERYDELTA CN_REALLOCPSZ CN_SCROLL CN_SETFOCUS
Container Control Window Messages
This section describes the container control window procedure actions on receiving the following messages.
CM_ALLOCDETAILFIELDINFO CM_ALLOCRECORD CM_ARRANGE CM_CLOSEEDIT CM_COLLAPSETREE CM_ERASERECORD CM_EXPANDTREE CM_FILTER CM_FREEDETAILFIELDINFO CM_FREERECORD CM_HORZSCROLLSPLITWINDOW CM_INSERTDETAILFIELDINFO CM_INSERTRECORD CM_INSERTRECORDARRAY CM_INVALIDATEDETAILFIELDINFO CM_INVALIDATERECORD CM_MOVETREE CM_OPENEDIT CM_PAINTBACKGROUND CM_QUERYCNRINFO CM_QUERYDETAILFIELDINFO CM_QUERYDRAGIMAGE CM_QUERYGRIDINFO CM_QUERYRECORD CM_QUERYRECORDEMPHASIS CM_QUERYRECORDFROMRECT CM_QUERYRECORDINFO CM_QUERYRECORDRECT CM_QUERYVIEWPORTRECT CM_REMOVEDETAILFIELDINFO CM_REMOVERECORD CM_SCROLLWINDOW CM_SEARCHSTRING CM_SETCNRINFO CM_SETGRIDINFO CM_SETRECORDEMPHASIS CM_SETTEXTVISIBILITY CM_SNAPTOGRID CM_SORTRECORD WM_PICKUP WM_PRESPARAMCHANGED (in Container Controls)
Default Dialog Processing
This section describes how messages are processed by the default dialog procedure. The default dialog procedure can be called using WinDefDlgProc. A user dialog procedure should make this call for all messages that it does not want to process.
For WM_* messages other than those specified in this section the Default Dialog Procedure takes the same action and sets result to the same value as in Frame Control Window Processing. In the instance of messages that would be sent to FID_CLIENT, they are passed to the default window procedure.
For any other messages the default window procedure takes no action, other than to set reply to NULL.
Default Dialog Messages
This section describes the default dialog procedure actions on receiving the following messages.
- WM_CHAR (Default Dialogs)
- WM_CLOSE (Default Dialogs)
- WM_COMMAND (Default Dialogs)
- WM_INITDLG (Default Dialogs)
- WM_MATCHMNEMONIC (Default Dialogs)
- WM_QUERYDLGCODE
Default File Dialog Processing
This section describes how messages are processed by the default dialog procedure of the file dialog. This standard dialog can be used to provide a common, consistent file selection function.
The file dialog's default procedure can be called using the WinDefFileDlgProc function. A user-provided subclassing dialog procedure should make this call for all messages that it does not process when using the file dialog.
The default dialog procedure of the file dialog sends the messages listed in this section to itself to perform the requested action. This design allows a user-provided dialog procedure to customize the file dialog to its own needs.
File Dialog Messages
This section describes the file dialog procedure actions on receiving the following messages.
- FDM_ERROR
- FDM_FILTER
- FDM_VALIDATE
Default Font Dialog Processing
This section describes how messages are processed by the default dialog procedure of the font dialog. This standard dialog can be used to provide a common, consistent font selection function.
The font dialog's default procedure can be called using the WinDefFontDlgProc function. A user-provided subclassing dialog procedure should make this call for all messages that it does not process when using the font dialog.
The default dialog procedure of the font dialog sends the messages listed in this section to itself to perform the requested action. This design allows a user-provided dialog procedure to customize the font dialog to its own needs.
Font Dialog Messages
This section describes the font dialog procedure actions on receiving the following messages.
WM_DRAWITEM (in Font Dialog) FNTM_FACENAMECHANGED FNTM_FILTERLIST FNTM_POINTSIZECHANGED FNTM_STYLECHANGED FNTM_UPDATEPREVIEW
Direct Manipulation (Drag) Message Processing
This section describes the processing that occurs during a direct manipulation operation when the application sends or receives a direct manipulation (DM_*) message.
Direct Manipulation Messages
This section describes messages that an application may send or receive during a direct manipulation operation.
DM_DISCARDOBJECT DM_DRAGERROR DM_DRAGFILECOMPLETE DM_DRAGLEAVE DM_DRAGOVER DM_DRAGOVERNOTIFY DM_DROP DM_DROPHELP DM_DROPNOTIFY DM_EMPHASIZETARGET DM_ENDCONVERSATION DM_FILERENDERED DM_PRINTOBJECT DM_RENDER DM_RENDERCOMPLETE DM_RENDERFILE DM_RENDERPREPARE
Dynamic Data Exchange Messages
This section describes the message part of the DDE protocol, which is a set of guidelines that allows two applications to share data freely between one another; not necessarily driven directly by user input.
Note: DDE operates between two specific applications, each of which must be aware of the other, and active.
WinDdeInitiate, WinDdePostMsg, and WinDdeRespond are the functions associated with these messages.
Dynamic Data Exchange Messages
This section describes the dynamic data exchange protocol actions on the following messages.
WM_DDE_ACK WM_DDE_ADVISE WM_DDE_DATA WM_DDE_EXECUTE WM_DDE_INITIATE WM_DDE_INITIATEACK WM_DDE_POKE WM_DDE_REQUEST WM_DDE_TERMINATE WM_DDE_UNADVISE
Entry Field Control Window Processing
This system-provided window procedure processes the actions on an entry field control (WC_ENTRYFIELD).
- Purpose
An entry field control is a rectangular window that displays a single line of text that the operator can edit. When it has the focus, the cursor marks the current insertion or replacement point.
When working with entry fields, the WM_CONTROL message is of major concern. An entry-field control communicates with its owner by sending WM_CONTROL messages. It contains a notification code in MP1 and a handle to the current entry field in MP2. The return value for WM_CONTROL is 0. Notification codes are denoted by an EN prefix.
For entry field control data see, ENTRYFDATA.
Entry Field Control Styles
These entry field control styles are available:
- ES_LEFT
The text in the control is left-justified. This is the default style if neither ES_RIGHT nor ES_CENTER is specified.
- ES_RIGHT
The text in the control is right-justified.
- ES_CENTER
The text in the control is centered.
- ES_AUTOSIZE
The text will be sized to make sure the contents fit.
- ES_AUTOSCROLL
If the user tries to move off the end of a line, the control automatically scrolls one-third the width of the window in the appropriate direction.
- ES_MARGIN
This style can be used to cause a border to be drawn around the control, with a margin around the editable text. The margin is half a character-width wide and half a character-height high.
When an entry field control with this style is positioned, it adjusts the position so that the text is placed at the position specified. This position differs from the original position by the width of the border and the margin.
- ES_READONLY
This style causes a single line entry field to be created in read only state.
When an entry field is in read only state, characters do not get inserted into the text. However the insertion interface is still functional.
The entry field read only state can be altered by use of the EM_SETREADONLY message.
- ES_UNREADABLE
This style causes the text to be displayed as an asterisk for each character. It can be used for passwords.
- ES_COMMAND
This style identifies the entry field as a command entry field. This information is used by the Help Manager to provide command help if the end user requests help for this field.
Not more than one entry field on each dialog should be given this style.
- ES_AUTOTAB
This style indicates that when the field is filled by adding a character to the end of the entry field text, the effect of a tab key will be generated. Inserting or replacing a character in the middle of the text, however, does not result in an autotab.
This style is recommended for use with fixed-length, non-scrollable fields that are filled completely. The maximum length of the entry field text is held in the control data, see ENTRYFDATA.
These entry field controls are intended for countries that use a double-byte character encoding scheme:
- ES_SBCS
The text is purely single-byte.
If the number of characters entered exceeds EM_SETTEXTLIMIT, or a DBCS character is entered, the alarm sounds and the last character entered is ignored.
- ES_DBCS
The text is purely double byte.
If the number of bytes in the entry field exceeds EM_SETTEXTLIMIT, or an SBCS character is entered, the alarm sounds and the last character entered is ignored.
- ES_ANY
The text is a mixture of SBCS and DBCS characters.
If the number of bytes in the input field exceeds EM_SETTEXTLIMIT, the alarm sounds and the last character entered is ignored.
ES_ANY is the default.
Note: If the queue code page is an ASCII code page and the data in the entry field is to be converted to an EBCDIC code page, there is a possibility that shift-in and shift-out characters introduced by the conversion process can cause the converted data to overrun the target field. Coding ES_MIXED protects the target field from overrun in this situation.
- ES_MIXED
The text is a mixture of SBCS and DBCS characters which may subsequently be converted from an ASCII DBCS code page to an EBCDIC DBCS code page with a consequent possible increase in the length of the data.
If
DBCSchars*2 + SBCSchars + N > EM_SETTEXTLIMIT
where N starts at 0 and is incremented whenever the string goes from SBCS to DBCS or DBCS to SBCS, the alarm sounds and the last character entered is ignored.
Note: For every conversion from SBCS to DBCS there must be a corresponding return to SBCS (N must be an even number).
Default Colors
The following system colors are used when the system draws button controls:
SYSCLR_ENTRYFIELD SYSCLR_BUTTONDARK SYSCLR_BUTTONLIGHT SYSCLR_OUTPUTTEXT SYSCLR_WINDOWTEXT SYSCLR_HIGHLITEFOREGROUND SYSCLR_HIGHLITEBACKGROUND
Some of these defaults can be replaced by using the following presentation parameters in the application resource script file or source code:
PP_FOREGROUNDCOLOR PP_DISABLEDFOREGROUNDCOLOR PP_HIGHLIGHTFOREGROUNDCOLOR PP_FONTNAMESIZE
Entry Field Control Notification Messages
This message is initiated by the entry field control window to notify its owner of significant events.
WM_CONTROL (in Entry Fields)
Entry Field Control Window Messages
This section describes the entry field control window procedure actions on receiving these messages:
EM_CLEAR EM_COPY EM_CUT EM_PASTE EM_QUERYCHANGED EM_QUERYFIRSTCHAR EM_QUERYREADONLY EM_QUERYSEL EM_SETFIRSTCHAR EM_SETINSERTMODE EM_SETREADONLY EM_SETSEL EM_SETTEXTLIMIT WM_CHAR (in Entry Fields) WM_QUERYCONVERTPOS (in Entry Fields) WM_QUERYWINDOWPARAMS (in Entry Fields) WM_SETWINDOWPARAMS (in Entry Fields)
Frame Control Window Processing
This system-provided window procedure processes the actions on a frame window (WC_FRAME). The frame control window procedure sends all messages not processed to FID_CLIENT and sets reply to 0.
- For a description of the frame creation flags and the frame control styles, see Frame Creation Flags and Frame Control Styles.
- For frame control data, see FRAMECDATA.
- Purpose
The window that contains all of the parts listed below is called the frame window. Each of the parts that make up a window, such as the title bar and menu, are separate child windows of the frame window. All of these child windows, except the client window (FID_CLIENT), are called frame controls.
FID_CLIENT is not a frame control, it is an instance of a window class implemented by the application.
The frame window and all of the frame controls are implemented with system-provided preregistered window classes.
The frame window holds together all of the frame controls and FID_CLIENT that make up an application window. The frame window is responsible for arranging the frame controls and the FID_CLIENT as the frame window is sized and moved. It is also responsible for routing specific messages to its frame controls and the FID_CLIENT.
Each of the frame controls and FID_CLIENT are known to the frame window by a system-provided window-identifier value as listed below:
- FID_CLIENT
Client window
- FID_HORZSCROLL
Horizontal scroll bar
- FID_MENU
Application menu
- FID_MINMAX
Minimize/Maximize box
- FID_SYSMENU
System menu
- FID_TITLEBAR
Title bar
- FID_VERTSCROLL
Vertical scroll bar.
For correct operation, only one window per frame must be defined with each of the above FID_* values.
Frame Creation Flags
These frame creation flags are available:
- FCF_TITLEBAR
Title bar.
- FCF_SYSMENU
System menu.
- FCF_MENU
Application menu.
- FCF_MINMAX
Minimize and Maximize buttons.
- FCF_MINBUTTON
Minimize button.
- FCF_MAXBUTTON
Maximize button.
- FCF_VERTSCROLL
Vertical scroll bar.
- FCF_HORZSCROLL
Horizontal scroll bar.
- FCF_SIZEBORDER
Sizing border.
- FCF_BORDER
Window is drawn with a thin border.
- FCF_DLGBORDER
Window is drawn with a standard dialog border.
- FCF_ACCELTABLE
Causes an accelerator table to be loaded, for this frame window, from the resource file identified on the WinCreateStdWindow function.
- FCF_ICON
Window is created with an icon associated with it that is used to represent the window when it is minimized.
If present, the parameter of the WinCreateStdWindow function must be the identity of an icon. This icon is loaded and associated with the window. When the window is minimized, the icon is shown if the screen is capable of showing it. When the window is destroyed, the icon is also destroyed.
- FCF_SHELLPOSITION
The window is created with a size and position determined by the shell, rather than explicitly by the application.
- FCF_SYSMODAL
The frame window is System Modal.
- FCF_NOBYTEALIGN
When this flag is not set, the frame window is adjusted so that window operations, such as moving, can be performed in an optimized manner. For example, some displays can move a window more quickly if the movement is by a multiple of eight pels.
If this flag is set, such optimizations are not performed and size and position values are honored.
- FCF_TASKLIST
When this flag is set, the program title is added to the front of the frame window text, the resulting string is used as the window title and is also entered on the task list.
In this context, the program title is the text string used by the Desktop Manager to identify the program, or the text string specified as a parameter in the START command. If neither string has been defined, the filename and extension of the .EXE file are used as the program title.
Note that a WinSetWindowText will not change the entry in the switch list, a WinChangeSwitchEntry must be done to affect this.
- FCF_NOMOVEWITHOWNER
The window should not be moved when its owner is moved. FCF_STANDARD Same as (FCF_TITLEBAR | FCF_SYSMENU | FCF_MINBUTTON | FCF_MAXBUTTON | FCF_SIZEBORDER | FCF_ICON | FCF_MENU | FCF_ACCELTABLE | FCF_SHELLPOSITION | FCF_TASKLIST).
This value is assumed if any Frame Window is created with no Control Data.
- FCF_SCREENALIGN
See FS_SCREENALIGN.
- FCF_MOUSEALIGN
See FS_MOUSEALIGN.
- FCF_AUTOICON
Performance optimization. When repainting iconized frames, the system will redraw the icon and will not send a WM_PAINT message to the application.
- FCF_HIDEBUTTON
Hide button.
- FCF_HIDEMAX
Hide and maximize buttons.
Frame Control Styles
These frame control styles are available. Frame styles may only be used when the frame is created from a dialog template.
- FS_SCREENALIGN
The coordinates specifying the location of the dialog box are relative to the top left corner of the screen, rather than being relative to the owner window's origin.
- FS_MOUSEALIGN
The coordinates specifying the location of the dialog box are relative to the position of the pointing device pointer at the time the window was created. The operating system tries to keep the dialog box on the screen, if possible.
- FS_SIZEBORDER
See FCF_SIZEBORDER.
- FS_BORDER
See FCF_BORDER.
- FS_DLGBORDER
See FCF_DLGBORDER.
- FS_SYSMODAL
See FCF_SYSMODAL.
- FS_NOBYTEALIGN
See FCF_NOBYTEALIGN.
- FS_TASKLIST
See FCF_TASKLIST.
- FS_NOMOVEWITHOWNER
See FCF_NOMOVEWITHOWNER.
- FS_AUTOICON
See FCF_AUTOICON.
Default Colors
The following system colors are used when the system draws frame controls:
SYSCLR_DIALOGBACKGROUND SYSCLR_ACTIVETITLE SYSCLR_INACTIVETITLE SYSCLR_APPWORKSPACE SYSCLR_ACTIVEBORDER SYSCLR_WINDOW SYSCLR_SHADOW SYSCLR_WINDOWFRAME SYSCLR_FIRST.
Some of these defaults can be replaced by using the following presentation parameters in the application resource script file or source code:
PP_BACKGROUNDCOLOR PP_SHADOW PP_FOREGROUNDCOLOR PP_BORDERCOLOR PP_DISABLEDBACKGROUNDCOLOR.
Frame Control Notification Messages
These messages are initiated by the frame control window to notify the FID_CLIENT window.
WM_MINMAXFRAME (in Frame Controls)
Frame Control Window Messages
This section describes the frame control window procedure actions on receiving the following messages.
WM_ACTIVATE (in Frame Controls) WM_ADJUSTFRAMEPOS WM_BUTTON1DBLCLK (in Frame Controls) WM_BUTTON2DBLCLK (in Frame Controls) WM_BUTTON1DOWN (in Frame Controls) WM_BUTTON2DOWN (in Frame Controls) WM_BUTTON1UP (in Frame Controls) WM_BUTTON2UP (in Frame Controls) WM_CALCFRAMERECT (in Frame Controls) WM_CHAR (in Frame Controls) WM_CLOSE (in Frame Controls) WM_COMMAND WM_DRAWITEM (in Frame Controls) WM_ERASEBACKGROUND WM_FLASHWINDOW WM_FOCUSCHANGE (in Frame Controls) WM_FORMATFRAME (in Frame Controls) WM_INITMENU (in Frame Controls) WM_MEASUREITEM (in Frame Controls) WM_MENUSELECT (in Frame Controls) WM_NEXTMENU (in Frame Controls) WM_OWNERPOSCHANGE WM_PAINT (in Frame Controls) WM_QUERYBORDERSIZE WM_QUERYCONVERTPOS (in Frame Controls) WM_QUERYFOCUSCHAIN WM_QUERYFRAMECTLCOUNT WM_QUERYFRAMEINFO WM_QUERYICON WM_QUERYWINDOWPARAMS (in Frame Controls) WM_SETBORDERSIZE WM_SETICON WM_SETWINDOWPARAMS (in Frame Controls) WM_SIZE (in Frame Controls) WM_SYSCOMMAND WM_TRACKFRAME (in Frame Controls) WM_TRANSLATEACCEL (in Frame Controls) WM_TRANSLATEMNEMONIC (in Frame Controls) WM_UPDATEFRAME (in Frame Controls)
Help Manager Message Processing
This section describes the processing of messages sent by the Help Manager or applications in response to requests for help by the user.
Help Manager messages
The following messages are sent by the Help Manager to the application, or by the application to the Help Manager.
HM_ACTIONBAR_COMMAND HM_CONTROL HM_CREATE_HELP_TABLE HM_DISMISS_WINDOW HM_DISPLAY_HELP HM_ERROR HM_EXT_HELP HM_EXT_HELP_UNDEFINED HM_GENERAL_HELP HM_GENERAL_HELP_UNDEFINED HM_HELP_CONTENTS HM_HELP_INDEX HM_HELPSUBITEM_NOT_FOUND HM_INFORM HM_INVALIDATE_DDF_DATA HM_KEYS_HELP HM_LOAD_HELP_TABLE HM_NOTIFY HM_QUERY HM_QUERY_DDF_DATA HM_QUERY_KEYS_HELP HM_REPLACE_HELP_FOR_HELP HM_REPLACE_USING_HELP HM_SET_ACTIVE_WINDOW HM_SET_COVERPAGE_SIZE HM_SET_HELP_LIBRARY_NAME HM_SET_HELP_WINDOW_TITLE HM_SET_OBJCOM_WINDOW HM_SET_SHOW_PANEL_ID HM_SET_USERDATA HM_TUTORIAL HM_UPDATE_OBJCOM_WINDOW_CHAIN
Language Support Dialog Processing
This system-provided window procedure processes messages for a dialog that has been created or loaded specifying a 'NULL' dialog procedure.
For any other messages the Language Support Dialog Procedure issues and returns the result of the WinDefDlgProc function.
Language Support Dialog Messages
This section describes the actions taken by the Language Support Dialog Procedure when the following messages are received.
WM_ACTIVATE (Language Support Dialog) WM_CONTROL (Language Support Dialog) WM_PAINT (Language Support Dialog) WM_PPAINT (Language Support Dialog) WM_SETFOCUS (Language Support Dialog) WM_SIZE (Language Support Dialog) WM_SYSCOLORCHANGE (Language Support Dialog)
Language Support Window Processing
This system-provided window procedure processes messages for a window that has been created with a window class specifying a "NULL" window procedure.
This section describes the WM_* messages and the language support window procedure action.
For any other messages the Language Support Window Procedure performs the same actions as the Default Window Procedure.
Language Support Window Messages
This section describes the actions taken by the Language Support Window Procedure when the following messages are received.
WM_ACTIVATE (Language Support Window) WM_CONTROL (Language Support Window) WM_PAINT (Langauge Support Window) WM_PPAINT (Language Support Window) WM_SETFOCUS (Language Support Window) WM_SIZE (Language Support Window) WM_SYSCOLORCHANGE (Language Support Window)
List Box Control Window Processing
This system-provided window procedure processes the actions on a list box control (WC_LISTBOX).
- Purpose
A list box control is a window containing a list of items. Each item in a list box contains a text string (0 or more characters) and a handle. The text string is displayed in the list box window. The handle can be used by the application to refer to other data associated with each item.
- List Box Control Styles
These list box control styles are available:
- LS_HORZSCROLL
The list box control enables the operator to scroll the list box horizontally.
- LS_MULTIPLESEL
The list box control enables the operator to select more than one item at any one time. Lists that do not have this style allow only a single selection at any one time. If this style is specified, LS_EXTENDEDSEL should also be specified.
- LS_EXTENDEDSEL
If this style is specified, the extended selection user interface is enabled.
- LS_OWNERDRAW
The list box control has one or more items that can be drawn by the owner. Typically, these items are represented by bit maps rather than by text strings.
- LS_NOADJUSTPOS
If this style is included, the list box control is drawn at the size specified. This can cause parts of an item to be shown.
Default Colors
The following system colors are used when the system draws list-box controls:
SYSCLR_FIELDBACKRGOUND SYSCLR_BUTTONDARK SYSCLR_WINDOW SYSCLR_WINDOWTEXT SYSCLR_ENTRYFIELD SYSCLR_HILITEFOREGROUND SYSCLR_HILITEBACKGROUND SYSCLR_WINDOWFRAME
Some of these defaults can be replaced by using the following presentation parameters in the application resource script file or source code:
PP_DISABLEDFOREGROUNDCOLOR PP_FOREGROUNDCOLOR PP_HILITEFOREGROUNDCOLOR PP_BORDERCOLOR
List Box Control Notification Messages
These messages are initiated by the list box control window to notify its owner of significant events.
WM_CONTROL (in List Boxes) WM_DRAWITEM (in List Boxes) WM_MEASUREITEM (in List Boxes)
List Box Control Window Messages
This section describes the list box control window procedure actions on receiving the following messages.
LM_DELETEALL LM_DELETEITEM LM_INSERTITEM LM_INSERTMULTITEMS LM_QUERYITEMCOUNT LM_QUERYITEMHANDLE LM_QUERYITEMTEXT LM_QUERYITEMTEXTLENGTH LM_QUERYSELECTION LM_QUERYTOPINDEX LM_SEARCHSTRING LM_SELECTITEM LM_SETITEMHANDLE LM_SETITEMHEIGHT LM_SETITEMTEXT LM_SETITEMWIDTH LM_SETTOPINDEX WM_CHAR (in List Boxes) WM_QUERYCONVERTPOS (in List Boxes) WM_QUERYWINDOWPARAMS (in List Boxes) WM_SETWINDOWPARAMS (in List Boxes)
Menu Control Window Processing
This system-provided window procedure processes the actions on a menu control (WC_MENU).
- Purpose
A menu control is a child or pull-down window that contains a list of selection items. These items can be represented by text strings, separators, bit maps or menu buttons. Menu templates can be loaded as resources and the menu can be created automatically when the parent window is created. The application can build the menu dynamically by sending MM_INSERTITEM messages. An application can change a menu by sending messages to it.
Menus enable the operator to select one of the items in the list, using the pointing device or the keyboard. When a selection is made, the menu parent is notified by posting a WM_COMMAND, WM_SYSCOMMAND, or WM_HELP message and a unique identifier representing the operator's selection.
Menus automatically resize themselves when items are added and removed. Menus are automatically destroyed when their owner is destroyed.
Typically, an application has an action bar menu and several submenus. The action bar is normally visible, and is a child window in the parent window frame. The submenus are normally hidden and become visible when selections are made on the action bar.
Menu Control Styles
These menu control styles are available:
- MS_ACTIONBAR
The items in the list are displayed side-by-side. This style is used to implement a top level menu. Menus that do not have this style are displayed in one or more columns and are submenus associated with an action bar.
All menu controls have styles CS_SYNCPAINT and CS_PARENTCLIP.
- MS_CONDITIONALCASCADE
This style is used to specify that the items in this list are a conditional cascade menu. Conditional cascade menus act like normal cascade menus with the exception that the cascade does not automatically open when the user selects it. To open the conditional cascade menu, the mini-pushbutton on the menu item must be selected. If the menu is selected without opening the cascade, the default item in the cascade is selected. The default action on the cascade is identified by a check mark. MS_TITLEBUTTON
Used to identify menus that can be used as buttons in the title bar. Can only be used with MS_ACTIONBAR.
This style causes the menu to be drawn using the CUA colors specified for the title bar rather than the action bar.
- MS_VERTICALFLIP
Normally, pull-down menus (the default, without the MS_VERTICALFLIP style) are displayed below their associated action bar item. If there is not room on the screen to display the entire pull-down in this manner, and if there is room to display the pull-down above the action bar, it is displayed above the action bar. Pull-down menus with the MS_VERTICALFLIP style are flipped vertically. That is, they are displayed above the menu if possible, otherwise below it. The vertical flip style must be set explicitly by the application when the window is minimized, and must be reset when it is restored.
If an application action bar contains this style, the style is applied to all pull-down menus belonging to the action bar (the style does not directly affect the display of the action bar). This provides a convenient means for the application to flip the appearance of all pull-down menus.
Menu Item Styles
These menu item styles are available:
- MIS_SUBMENU
The item is a submenu. When the user selects this type of item, a submenu is displayed from which the user must make further selection. Items that are not submenu items are command items.
- MIS_SEPARATOR
The display object is a horizontal dividing line. This type of item can only be used in pull-down menus. This type of item cannot be enabled, checked, disabled, highlighted, or selected by the user. The functional object is NULL when this style is specified.
- MIS_BITMAP
The display object is a bit map.
- MIS_TEXT
The display object is a text string.
- MIS_BUTTONSEPARATOR
The item is a menu button. Any menu can have zero, one, or two items of this type. These are the last items in a menu and are automatically displayed after a separator bar. The user cannot move the cursor to these items, but can select them with the pointing device or with the appropriate key.
- MIS_BREAK
The item begins a new row or column.
- MIS_BREAKSEPARATOR
Same as MIS_BREAK, except that it draws a separator between rows or columns of a pull-down menu. This style can only be used within a submenu.
- MIS_SYSCOMMAND
If this item is selected, the menu notifies the owner by posting a WM_SYSCOMMAND message rather than a WM_COMMAND message.
- MIS_OWNERDRAW
Items with this style are drawn by the owner. WM_DRAWITEM and WM_MEASUREITEM notification messages are sent to the owner to draw the item or determine its size.
- MIS_HELP
If the item is selected, the menu notifies the owner by posting a WM_HELP message rather than a WM_COMMAND message.
- MIS_STATIC
This type of item exists for information purposes only. It cannot be selected with the pointing device or keyboard.
Menu Item Attributes
Applications can get and set the state of these attributes by sending MM_QUERYITEMATTR and MM_SETITEMATTR messages.
These menu item attributes are available:
- MIA_HILITED
The state of this attribute is TRUE, if and only if, the item is selected.
- MIA_CHECKED
If this attribute is TRUE, a check mark appears next to the item (submenu only).
- MIA_DISABLED
This attribute is TRUE if the item is disabled and cannot be selected. The item is drawn in a disabled state.
- MIA_FRAMED
If this attribute is TRUE, a frame is drawn around the item (top-level menu only).
- MIA_NODISMISS
If the item is selected, the submenu remains down. A menu with this attribute is not hidden until the application or user explicitly does so, for example by selecting either another menu on the action bar or by pressing the escape key.
Default Colors
The following system colors are used when the system draws menu controls:
SYSCLR_WINDOWFRAME SYSCLR_BUTTONDARK SYSCLR_BUTTONLIGHT SYSCLR_SHADOW SYSCLR_TITLEBOTTOM SYSCLR_DIALOGBACKGROUND
Some of these defaults can be replaced by using the following presentation parameters in the application resource script file or source code:
PP_FOREGROUNDCOLOR PP_HILITEFOREGROUNDCOLOR PP_BORDERCOLOR PP_DISABLEDFOREGROUNDCOLOR
Menu Control Notification Messages
These messages are initiated by the menu control window procedure to notify its owner of significant events.
WM_COMMAND (in Menu Controls) WM_DRAWITEM (in Menu Controls) WM_HELP (in Menu Controls) WM_INITMENU (in Menu Controls) WM_MEASUREITEM (in Menu Controls) WM_MENUEND (in Menu Controls) WM_MENUSELECT (in Menu Controls) WM_NEXTMENU (in Menu Controls)
Menu Control Window Messages
This section describes the menu control window procedure actions on receiving the following messages.
MM_DELETEITEM MM_ENDMENUMODE MM_INSERTITEM MM_ISITEMVALID MM_ITEMIDFROMPOSITION MM_ITEMPOSITIONFROMID MM_QUERYDEFAULTITEMID MM_QUERYITEM MM_QUERYITEMATTR MM_QUERYITEMCOUNT MM_QUERYITEMRECT MM_QUERYITEMTEXT MM_QUERYITEMTEXTLENGTH MM_QUERYSELITEMID MM_REMOVEITEM MM_SELECTITEM MM_SETDEFAULTITEMID MM_SETITEM MM_SETITEMATTR MM_SETITEMHANDLE MM_SETITEMTEXT MM_STARTMENUMODE WM_QUERYCONVERTPOS (in Menu Controls) WM_QUERYWINDOWPARAMS (in Menu Controls) WM_SETWINDOWPARAMS (in Menu Controls) WM_SYSCOMMAND
Multi-Line Entry Field Control Window Processing
Multi-Line Entry Field Control Styles
Multi-Line Entry Field Control Notification Messages
WM_CONTROL (in Multiline Entry Fields)
Multi-Line Entry Field Window Messages
MLM_CHARFROMLINE MLM_CLEAR MLM_COPY MLM_CUT MLM_DELETE MLM_DISABLEREFRESH MLM_ENABLEREFRESH MLM_EXPORT MLM_FORMAT MLM_IMPORT MLM_INSERT MLM_LINEFROMCHAR MLM_PASTE MLM_QUERYBACKCOLOR MLM_QUERYCHANGED MLM_QUERYFIRSTCHAR MLM_QUERYFONT MLM_QUERYFORMATLINELENGTH MLM_QUERYFORMATRECT MLM_QUERYFORMATTEXTLENGTH MLM_QUERYIMPORTEXPORT MLM_QUERYLINECOUNT MLM_QUERYLINELENGTH MLM_QUERYREADONLY MLM_QUERYSEL MLM_QUERYSELTEXT MLM_QUERYTABSTOP MLM_QUERYTEXTCOLOR MLM_QUERYTEXTLENGTH MLM_QUERYTEXTLIMIT MLM_QUERYUNDO MLM_QUERYWRAP MLM_RESETUNDO MLM_SEARCH MLM_SETBACKCOLOR MLM_SETCHANGED MLM_SETFIRSTCHAR MLM_SETFONT MLM_SETFORMATRECT MLM_SETIMPORTEXPORT MLM_SETREADONLY MLM_SETSEL MLM_SETTABSTOP MLM_SETTEXTCOLOR MLM_SETTEXTLIMIT MLM_SETWRAP MLM_UNDO WM_BUTTON1DBLCLK (in Multiline Entry Fields) WM_BUTTON1DOWN (in Multiline Entry Fields) WM_BUTTON1UP (in Multiline Entry Fields) WM_CHAR (in Multiline Entry Fields) WM_ENABLE (in Multiline Entry Fields) WM_MOUSEMOVE (in Mulitline Entry Fields) WM_QUERYWINDOWPARAMS (in Multiline Entry Fields) WM_SETWINDOWPARAMS (in Multiline Entry Fields)
Notebook Control Window Processing
Old Notebook Control Styles New Notebook Control Styles Notebook Control Data Notebook Control Notification Messages WM_CONTROL (in Notebook Controls) WM_CONTROLPOINTER (in Notebook Controls) WM_DRAWITEM (in Notebook Controls) Notebook Control Window Messages BKM_CALCPAGERECT BKM_DELETEPAGE BKM_INSERTPAGE BKM_INVALIDATETABS BKM_QUERYPAGECOUNT BKM_QUERYPAGEDATA BKM_QUERYPAGEID BKM_QUERYPAGEINFO BKM_QUERYPAGESTYLE BKM_QUERYPAGEWINDOWHWND BKM_QUERYSTATUSLINETEXT BKM_QUERYTABBITMAP BKM_QUERYTABTEXT BKM_SETDIMENSIONS BKM_SETNOTEBOOKBUTTONS BKM_SETNOTEBOOKCOLORS BKM_SETPAGEDATA BKM_SETPAGEINFO BKM_SETPAGEWINDOWHWND BKM_SETSTATUSLINETEXT BKM_SETTABBITMAP BKM_SETTABCOLOR BKM_SETTABTEXT BKM_TURNTOPAGE WM_CHAR (in Notebook Controls) WM_PRESPARAMCHANGED (in Notebook Controls) WM_SIZE (in Notebook Controls)
Scroll Bar Control Window Processing
Scroll Bar Control Styles
Default Colors
Scroll Bar System Values
Scroll Bar Control Notification Messages
WM_HSCROLL (in Horizontal Scroll Bars) WM_VSCROLL (in Vertical Scroll Bars)
Scroll Bar Control Window Messages
SBM_QUERYPOS SBM_QUERYRANGE SBM_SETPOS SBM_SETSCROLLBAR SBM_SETTHUMBSIZE WM_QUERYCONVERTPOS (in Scroll Bars) WM_QUERYWINDOWPARAMS (in Scroll Bars) WM_SETWINDOWPARAMS (in Scroll Bars)
Slider Control Window Processing
Slider Control Styles
Slider Control Data
Slider Control Notification Messages
WM_CONTROL (in Slider Controls) WM_CONTROLPOINTER (in Slider Controls) WM_DRAWITEM (in Slider Controls)
Slider Control Window Messages
SLM_ADDDETENT SLM_QUERYDETENTPOS SLM_QUERYSCALETEXT SLM_QUERYSLIDERINFO SLM_QUERYTICKPOS SLM_QUERYTICKSIZE SLM_REMOVEDETENT SLM_SETSCALETEXT SLM_SETSLIDERINFO SLM_SETTICKSIZE WM_CHAR (in Slider Controls) WM_PRESPARAMCHANGED (in Slider Controls) WM_QUERYWINDOWPARAMS (in Slider Controls) WM_SETWINDOWPARAMS (in Slider Controls)
Spin Button Control Window Processing
Spin Button Control Styles
Spin Button Control Data
Spin Button Control Notification Message
WM_CONTROL (in Spin Button Controls)
Spin Button Control Window Messages
SPBM_OVERRIDESETLIMITS SPBM_QUERYLIMITS SPBM_QUERYVALUE SPBM_SETARRAY SPBM_SETCURRENTVALUE SPBM_SETLIMITS SPBM_SETMASTER SPBM_SETTEXTLIMIT SPBM_SPINDOWN SPBM_SPINUP
Static Control Window Processing
Static Control Styles
Default Colors
Static Control Notification Messages
Static Control Window Messages
SM_QUERYHANDLE SM_SETHANDLE WM_MATCHMNEMONIC (in Static Controls) WM_QUERYCONVERTPOS (in Static Controls) WM_QUERYWINDOWPARAMS (in Static Controls) WM_SETWINDOWPARAMS (in Static Controls)
Title Bar Control Window Processing
Title Bar Control Notification Messages
WM_SYSCOMMAND (in Title Bar Controls) WM_TRACKFRAME (in Title Bar Controls
Title Bar Control Window Messages
TBM_QUERYHILITE TBM_SETHILITE WM_QUERYCONVERTPOS (in Title Bar Controls) WM_QUERYWINDOWPARAMS (in Title Bars) WM_SETWINDOWPARAMS (in Title Bar Controls)
Value Set Control Window Processing
Value Set Control Styles
Value Set Control Data
Value Set Control Notification Messages
WM_CONTROL (in Value Set Controls) WM_CONTROLPOINTER (in Value Set Controls) WM_DRAWITEM (in Value Set Controls)
Value Set Control Window Messages
VM_QUERYITEM VM_QUERYITEMATTR VM_QUERYMETRICS VM_QUERYSELECTEDITEM VM_SELECTITEM VM_SETITEM VM_SETITEMATTR VM_SETMETRICS WM_CHAR (in Value Set Controls) WM_PRESPARAMCHANGED (in Value Set Controls) WM_QUERYWINDOWPARAMS (in Value Set Controls) WM_SETWINDOWPARAMS (in Value Set Controls) WM_SIZE (in Value Set Controls)
Default Window Procedure Message Processing
Window Class Styles
Window Styles
General Window Messages
PL_ALTERED WM_ACTIVATE WM_APPTERMINATENOTIFY WM_ADJUSTWINDOWPOS WM_BEGINDRAG WM_BEGINSELECT WM_BUTTON1CLICK WM_BUTTON1DBLCLK WM_BUTTON1DOWN WM_BUTTON1MOTIONEND WM_BUTTON1MOTIONSTART WM_BUTTON1UP WM_BUTTON2CLICK WM_BUTTON2DBLCLK WM_BUTTON2DOWN WM_BUTTON2MOTIONEND WM_BUTTON2MOTIONSTART WM_BUTTON2UP WM_BUTTON3CLICK WM_BUTTON3DBLCLK WM_BUTTON3DOWN WM_BUTTON3MOTIONEND WM_BUTTON3MOTIONSTART WM_BUTTON3UP WM_CALCFRAMERECT WM_CALCVALIDRECTS WM_CHAR WM_CHORD WM_CLOSE WM_COMMAND WM_CONTEXTMENU WM_CONTROL WM_CONTROLPOINTER WM_CREATE WM_CTLCOLORCHANGE WM_DESTROY WM_DRAWITEM WM_ENABLE WM_ENDDRAG WM_ENDSELECT WM_ERROR WM_FOCUSCHANGE WM_FORMATFRAME WM_HELP WM_HITTEST WM_HSCROLL WM_INITDLG WM_INITMENU WM_JOURNALNOTIFY WM_MATCHMNEMONIC WM_MEASUREITEM WM_MENUEND WM_MENUSELECT WM_MINMAXFRAME WM_MOUSEMAP WM_MOUSEMOVE WM_MOVE WM_MSGBOXDISMISS WM_MSGBOXINIT WM_NEXTMENU WM_NULL WM_OPEN WM_PACTIVATE WM_PAINT WM_PCONTROL WM_PPAINT WM_PRESPARAMCHANGED WM_PSETFOCUS WM_PSIZE WM_PSYSCOLORCHANGE WM_QUERYACCELTABLE WM_QUERYCONVERTPOS WM_QUERYCTLTYPE WM_QUERYHELPINFO WM_QUERYTRACKINFO WM_QUERYWINDOWPARAMS WM_QUIT WM_REALIZEPALETTE WM_SAVEAPPLICATION WM_SEM1 WM_SEM2 WM_SEM3 WM_SEM4 WM_SETACCELTABLE WM_SETFOCUS WM_SETHELPINFO WM_SETSELECTION WM_SETWINDOWPARAMS WM_SHOW WM_SINGLESELECT WM_SIZE WM_SUBSTITUTESTRING WM_SYSCOLORCHANGE WM_SYSCOMMAND WM_SYSVALUECHANGED WM_TEXTEDIT WM_TIMER WM_TRACKFRAME WM_TRANSLATEACCEL WM_TRANSLATEMNEMONIC WM_UPDATEFRAME WM_VRNDISABLED WM_VRNENABLED WM_VSCROLL WM_WINDOWPOSCHANGED
.....