home *** CD-ROM | disk | FTP | other *** search
Text Truncated. Only the first 1MB is shown below. Download the file for the complete contents.
-
- ΓòÉΓòÉΓòÉ 1. Windows ΓòÉΓòÉΓòÉ
-
- To most users, a window is a rectangular area of the display screen where an
- application receives input from the user and displays output. This chapter
- describes the parts of the operating system that enable a Presentation Manager*
- (PM) application to create and use windows; manage relationships between
- windows; and size, move, and display windows. An overview of the following
- topics is presented:
-
- o Window types, classes, and styles
- o Window-creation techniques
- o Window messages and message queues
- o Methods of window input and output
- o Window resources and procedures
- o Window identification and modification.
-
- Subsequent chapters present more in-depth descriptions of windows, their
- advantages and uses, along with example code fragments.
-
-
- ΓòÉΓòÉΓòÉ 1.1. About Windows ΓòÉΓòÉΓòÉ
-
- A PM application can interact with the user and perform tasks only by way of
- windows. Each window shares the screen with other windows, including those
- from other applications. The user employs the mouse and keyboard to interact
- with windows and their owner applications.
-
-
- ΓòÉΓòÉΓòÉ 1.1.1. Desktop Window and Desktop-Object Window ΓòÉΓòÉΓòÉ
-
- OS/2* automatically creates the desktop window (known as the workplace in user
- terminology) when it starts a PM session.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Desktop Window Γöé
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Main Window 3 Γöé Γöé
- Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé Main Window 2 Γöé Γöé
- Γöé Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöñ Main Window 1 Γöé Γöé
- Γöé Γöé Γöé ΓöéChiΓöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé
- Γöé Γöé Γöé ΓöéWinΓöé Γöé Γöé Γöé Γöé
- Γöé Γöé Γöé Γöé2A Γöé Γöé Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ ΓööΓöÇΓöÇΓöÇΓöñ ΓöéChild Window 1aΓöé Γöé Γöé Γöé
- Γöé Γöé Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé Γöé Γöé
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé Child Window 1b Γöé Γöé Γöé
- Γöé Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé Γöé
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Desktop Window Containing Windows of Several Applications
-
- The desktop window paints the background color of the screen and serves as the
- "progenitor" of all the windows displayed by all PM applications (but not of
- object windows, which do not require screen display). To make the desktop the
- parent in the WinCreateStdWindow function, you specify HWND_DESKTOP.
-
- The windows immediately below the desktop are called main or top-level windows;
- these are called primary windows in user terminology. Every PM application
- creates at least one window to serve as the main window for that application.
- Most applications also create many other windows, directly or indirectly, to
- perform tasks related to the main window.
-
- Each window helps display output and receive input from the user. The previous
- figure shows the desktop window containing windows of several applications.
- Notice that the main windows can overlap one another. (At times, it is possible
- for a main window to be completely hidden.) Operations in one main window
- normally do not affect the other main windows.
-
- The desktop-object window is like a desktop window that is never displayed; it
- serves as the base window to coordinate the activity of an application's object
- windows. The desktop-object window cannot display windows nor process keyboard
- and mouse input. The primary purpose of the desktop-object window is to enable
- you to create windows that need not respond to messages at the same rate as the
- user interface.
-
-
- ΓòÉΓòÉΓòÉ 1.1.2. Window Relationships ΓòÉΓòÉΓòÉ
-
- Window relationships define how windows interact with each other-on the screen
- and through messages. There are parent-child window relationships and
- window-owner relationships.
-
- The parent-child relationship determines where and how windows appear when
- drawn on the screen. It also determines what happens to a window when a
- related window is destroyed or hidden. The parent-child rules apply to all
- windows at all times and cannot be modified.
-
- Ownership determines how windows communicate using messages. Cooperating
- windows define and carry out their rules of ownership. Although some windows
- (such as windows of the preregistered public window class, WC_FRAME) have very
- complex rules of ownership, the application usually defines the ownership
- rules.
-
- The following figure represents the logical relationship of the windows in two
- applications.
-
- Desktop Window
- ΓöîΓöÇΓöÉ
- Application 1 Γöé Γöé Application 2
- ΓöîΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÉ Γöé Γöé ΓöîΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÉ
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÿ ΓööΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé
- Γöé Γöé Γöé Γöé
- Γöé Main Window 1 Γöé Γöé Main Window 2 Γöé
- Γöé Γöé Γöé Γöé
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
- Γöé Γöé ΓööΓöÇΓöÿ ΓööΓöÇΓöÿ ΓööΓöÇΓöÿ
- Γöé Child Child Γöé Γöé Child Child Γöé
- Window 1.1 Window 1.2 Window 2.1 Window 2.2
- Γöé Γöé Γöé Γöé Γöé Γöé
- ΓööΓöÇΓöÿ
- Γöé Child Γöé Γöé Γöé
- Window 1.1.1
- ΓööΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÿ ΓööΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÿ
-
- Typical Window Relationships
-
-
- ΓòÉΓòÉΓòÉ 1.1.2.1. Parent-Child Relationship ΓòÉΓòÉΓòÉ
-
- Most windows have a parent window. (The exceptions are the desktop and
- desktop-object windows, which the system creates at system startup.) An
- application specifies the parent when it creates a window; then, the system
- uses the parent to determine where and how to draw any new windows, as well as
- when to destroy the windows (free all associated resources and remove the
- windows from the screen).
-
- A child window is drawn relative to its parent. The coordinates given to
- specify the position of a window's lower-left corner are relative to the
- lower-left corner of its parent. For example, a main window (child of the
- desktop) is drawn relative to the lower-left corner of the screen (the desktop
- window's lower-left corner).
-
- All main windows are siblings because they share a common parent, the desktop
- window. Because sibling windows can overlap, an application or a user arranges
- the windows, one behind another (like a stack of papers on a desk), in the
- desired viewing order (called z-order). Z-order uses the desktop as a reference
- point for a "three-dimensional" ranking of the overlapping windows: the topmost
- window has the highest ranking, while the window at the bottom of the stack has
- the lowest ranking. The parent of the sibling windows is always at the bottom
- of the z-order.
-
- The following figure illustrates the hierarchy of such an arrangement.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Desktop Γöé
- ΓööΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÿ
- Γöé Γöé Γöé Parent Child
- Γöé Γöé Γöé ΓöîΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇΓöÉ
- Γöé Γöé Γöé Siblings
- Γöé Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
- Γöé Γöé ΓööΓöÇΓöÇΓöé Main 1 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Child 1A Γöé
- Γöé Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÉ Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
- Γöé Γöé Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöé Child 1A Γöé Γöé
- Γöé Γöé Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
- Γöé Γöé ΓööΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇΓöÿ
- Γöé Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöé Main 2 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Child 2A Γöé
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Main 3 Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Window Hierarchy
-
- Although PM supports z-order, it does not enforce the expected appearance
- unless you specify the CS_CLIPCHILDREN or CS_CLIPSIBLINGS styles. No part of a
- child window ever appears outside the borders of its parent. If an application
- creates a window that is larger than its parent, or positions a window so that
- some or all of it extends beyond the borders of the parent, the extended
- portion of the child window is not drawn.
-
- An application can use the WS_CLIPCHILDREN or WS_CLIPSIBLINGS styles to remove
- from a window's clipping area (the area in which the window can paint) the area
- occupied by its child or sibling windows. For example, an application can use
- these styles to prevent a window from painting over a child or sibling window
- containing a complex graphic that would be time-consuming to redraw.
-
- When a window is minimized, hidden, or destroyed, all of its children are
- hidden, minimized, or destroyed as well. The order of destruction is always
- such that every window is destroyed before its parent. The window-destruction
- sequence starts at the bottom of descendancy so that all related windows can be
- cleaned up; the last one to go is the window you asked to be destroyed. The
- final PM task in a window-destruction sequence is to send a WM_DESTROY message
- to that window, so it has one last chance to release any resources it has
- allocated and may still be holding.
-
- Every window has only one parent, but can have any number of children. window
- in this tree is said to be a descendant of any window appearing above it in the
- branch, and an ancestor of any window appearing below it. There are two
- special cases, of course: the window immediately above is called the window's
- parent, and any window immediately below it is called its child. An
- application can change a window's parent window at any time by using the
- WinSetParent function. Changing the parent window also changes where and how
- the child window is drawn. The system displays the child within the borders of
- the new parent and draws the window according to the styles specified for the
- new parent.
-
-
- ΓòÉΓòÉΓòÉ 1.1.2.2. Ownership ΓòÉΓòÉΓòÉ
-
- Any window can have an owner window. Typically, an application uses ownership
- to establish a connection between windows so that they can perform useful tasks
- together. For example, the title bar in an application's main window is owned
- by the frame window; but, together, the user can move the entire main window by
- clicking the mouse in the title bar and dragging. An application can set the
- owner window when it creates the window or at a later time.
-
- Ownership establishes a relationship between windows that is independent of the
- parent-child relationship. While there are few predefined rules for owner- and
- owned-window interaction, a window always notifies its owner of anything
- considered a significant event.
-
- The preregistered public window classes provided by OS/2* recognize ownership.
- Control windows of classes such as WC_TITLEBAR and WC_SCROLLBAR, notify their
- owners of events; frame windows, of class WC_FRAME, receive and process
- notification messages from the control windows they own. For example, a
- title-bar control sends a notification message to its owner when it receives a
- mouse click. If the owner is a frame window, it receives the notification
- message and prepares to move itself and its children.
-
- Owner and owned windows must be created by the same thread; that is, they must
- belong to the same message queue. Because ownership is independent of the
- parent-child relationship, the owner and owned windows do not have to be
- descendants of the same parent window. However, this can affect how windows
- are destroyed. Destroying an owner window does not necessarily destroy an
- owned window. Except for frame windows, an application that needs to destroy
- an owned window that is not a descendant of the owner window must do so
- explicitly.
-
- Frame windows sometimes own windows that are not descendants but, instead, are
- siblings. A frame window has the following special ownership properties:
-
- o When the frame window is destroyed, it destroys all of the windows it owns,
- even if they are not descendants.
-
- o When a frame window moves, the windows it owns move also. Owned windows that
- are not descendants maintain their positions, relative to the upper-left (not
- the usual lower-left) corner of the owner window. An owned window with the
- style FS_NOMOVEWITHOWNER does not move.
-
- o When the frame window changes its position in the z-order, it changes the
- z-order of all the windows it owns.
-
- o When the frame window is minimized or hidden, it hides all the windows it
- owns. Owned windows hidden this way are restored when the frame window is
- restored.
-
- If an application needs this type of special processing for its own window
- classes, it must provide that support in the window procedures for those
- classes.
-
-
- ΓòÉΓòÉΓòÉ 1.1.2.3. Object Windows ΓòÉΓòÉΓòÉ
-
- Any descendant of the desktop-object window is called an object window.
- Typically, an application uses an object window to provide services for another
- window. For example, an application can use an object window to manage a
- shared database. In this way, a window can obtain information from the shared
- database by sending a message to and receiving a reply from the object window.
-
- Only two system-defined messages are available to an object window-
- WM_CREATE and WM_DESTROY-but the object window enables the user to implement a
- set of user-defined messages. The window procedure for an object window does
- not have to process paint messages or user input. The object window processes
- only messages that affect the data belonging to the object.
-
- HWND_OBJECT is the only identifier needed to create an object window. It is
- very unwise to create descendants of HWND_OBJECT in the same thread that
- creates descendants of HWND_DESKTOP: this causes the system to hang up or, at
- the very least, behave slowly. Object windows, sometimes referred to as orphan
- windows, require no owner.
-
- The rules for parent-child and ownership relationships also apply to object
- windows. In particular, changing the parent window of an object window to the
- desktop window, or to a descendant of the desktop window, causes the system to
- display the object window if the object window has the WS_VISIBLE style.
-
-
- ΓòÉΓòÉΓòÉ 1.1.3. Application Windows ΓòÉΓòÉΓòÉ
-
- An application can use several types of secondary windows: frame windows,
- client windows, control windows, dialog windows, message boxes, and menus.
- Typically, an application's main window consists of several of these windows
- acting as one. The following figure shows an example of a main window and its
- secondary windows.
-
- Main Window with Secondary Windows
-
- A frame window is a window that an application uses as the base when
- constructing a main window or other composite window, such as a dialog window
- or message box. (A composite window is a collection of windows that interact
- with one another and are kept together as a unit.) A frame window provides
- basic features, such as borders and a menu bar. Frame windows have a set of
- resources associated with them. These include icons, menus, and accelerators
- (shortcut keys to the user), which, typically, are defined in an application's
- resource file.
-
- A dialog window is a frame window that contains one or more control windows.
- Dialog windows are used almost exclusively for prompting the user for input.
- An application usually creates a dialog window when it needs additional
- information to complete a command. The application destroys the dialog window
- after the user has provided the requested information.
-
- A message box is a frame window that an application uses to display a note,
- caution, or warning to the user. For instance, an application can use a
- message box to inform the user of a problem that the application encountered
- while performing a task.
-
- A client window is the window in which the application displays the current
- document or data. For example, a desktop-publishing application displays the
- current page of a document in a client window. Most applications create at
- least one client window. The application must provide a function, called a
- window procedure, to process input to the client window and to display output.
-
- A control window is a window used in conjunction with another window to perform
- useful tasks, such as displaying a menu or scrolling information in a client
- window. The operating system provides several predefined control-window
- classes that an application can use to create control windows. Control windows
- include buttons, entry fields, list boxes, combination boxes, menus, scroll
- bars, static text, and title bars.
-
- A menu is a control window that presents a list of commands and other menus to
- the user. Using a mouse or the keyboard, the user can select a task; the
- application then performs the selected task.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4. Window Input and Output ΓòÉΓòÉΓòÉ
-
- The user directs input data to windows from a mouse and the keyboard. Keyboard
- input goes to the window with input focus, and, normally, mouse input goes to
- the window under the mouse pointer.
-
- Windows also are places to display output data. PM uses windows to display
- text and graphics on the screen and to process input from the mouse and
- keyboard. Windows provide the same input and output capabilities as a virtual
- graphics terminal without having direct control of the hardware.
-
- An application is responsible for painting the data for the window classes it
- registers and creates. This data can be graphics text or pictures or
- fixed-size alphanumeric text. Normally it is not necessary for the application
- to paint the system-provided window classes; the OS/2 window procedures for
- those window classes do the painting.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.1. Active Window and Focus Window ΓòÉΓòÉΓòÉ
-
- All frame-window ancestors of the input focus window are said to be active,
- meaning that the user interacts with them. The active window usually is the
- topmost main window, which is positioned above all other top-level windows on
- the screen. The active window is indicated by some form of highlighting. For
- example, a highlighted title bar shows that a standard frame window is active;
- an active dialog window has a highlighted border. These types of highlighting
- ensure that the user can see the window that is accepting input.
-
- A main window (or one of its child windows) is activated by using a mouse or
- the keyboard. When a window is activated, it receives a WM_ACTIVATE message
- with its first parameter set to TRUE. When it is deactivated, it receives a
- WM_ACTIVATE message with its first parameter set to FALSE. The following figure
- illustrates user interaction with a window.
-
- User Input to a Window
-
- The focus window can be the active window or one of its descendant windows.
- The user can change the input focus the same way active windows are changed-by
- mouse or keyboard. However, the application has more control over the input
- focus. For example, in a window containing several text entry fields, the tab
- keys can move the input focus from one input field to another. A WM_SETFOCUS
- message is sent to the window procedure when a window is gaining or losing the
- input focus. The WinQueryFocus function tells the user which window has the
- input focus.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.2. Messages ΓòÉΓòÉΓòÉ
-
- Messages are a fundamental part of the operating system. PM applications use
- messages to communicate with the operating system and one another. The system
- uses messages to communicate with applications to ensure concurrent running and
- sharing of devices. Typically, a message notifies the receiving application
- that an event has occurred. The operating system identifies the appropriate
- application window to receive a message by the window handle included in the
- message. Sources of events that cause messages to be issued to applications
- are the user, the operating system, the application, or another application.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.2.1. The User ΓòÉΓòÉΓòÉ
-
- Mouse or keyboard input to an application window causes the operating system to
- direct messages to that window.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.2.2. The Operating System ΓòÉΓòÉΓòÉ
-
- Managing the application windows on the screen, the operating system issues
- messages to the windows, usually as an indirect result of user interaction.
- These messages enable the system to work in a uniform and well-ordered manner.
- For example, where several application windows overlap, and the user terminates
- an application so that its window disappears, the operating system issues
- messages to the underlying application windows so that they can repaint
- themselves.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.2.3. The Application ΓòÉΓòÉΓòÉ
-
- An event can occur in the application to which another part of that application
- should respond; for example, when the contents of its window no longer
- accurately reflect the status of the application. The application can define
- its own messages outside the range of system-defined messages to communicate
- such events.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.2.4. Another Application ΓòÉΓòÉΓòÉ
-
- Communication with other applications through the operating system ensures
- cooperative use of the system; it even can be used to exchange data. For
- example, an arithmetic application can supply the results of a lengthy
- calculation to a business graphics application.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.3. Enabled and Disabled Windows ΓòÉΓòÉΓòÉ
-
- An application uses the WinEnableWindow function to enable or disable window
- input. By default, a window is enabled when it is created. However, an
- application can disable a newly created window.
-
- An application usually disables a window to prevent the user from using the
- window. For example, an application might disable a push button in a dialog
- window. Enabling a window restores normal input; an application can enable a
- disabled window at any time.
-
- When an application uses the WinEnableWindow function to disable an existing
- window, that window also loses keyboard focus. WinEnableWindow sets the
- keyboard focus to NULL, which means that no window has the focus. If a child
- window or other descendant window has the keyboard focus, it loses the focus
- when the parent window is disabled.
-
- An application can determine whether a window is enabled by calling
- WinIsWindowEnabled.
-
-
- ΓòÉΓòÉΓòÉ 1.1.4.4. System-Modal Window ΓòÉΓòÉΓòÉ
-
- An application can designate a system-modal window: a window that receives all
- keyboard and mouse input, effectively disabling all other windows. The user
- must respond to the system-modal window before continuing work in other
- windows. An application sets and clears the system-modal window by using the
- WinSetSysModalWindow function.
-
- Because system-modal windows have absolute control of input, you must be
- careful when using them in your applications. Ideally, an application uses a
- system-modal window only when there is danger of losing data if the user does
- not respond to a problem immediately.
-
- Although an application can destroy a system-modal window, the new active
- window then becomes a system-modal window. An application can make another
- window active while the first system-modal window exists. But again, the new
- active window will become the system-modal window. In general, once a
- system-modal window is set, it continues to exist in the PM session until the
- application explicitly clears it.
-
-
- ΓòÉΓòÉΓòÉ 1.1.5. Window Creation ΓòÉΓòÉΓòÉ
-
- Before any thread in an application can create windows, it must:
-
- 1. Call WinInitialize to create an anchor block
- 2. Call WinCreateMsgQueue to create a message queue for the thread.
-
- Then, it can create one or more windows by calling one of the window-creation
- functions, such as WinCreateWindow.
-
- The window-creation functions require that the following information be
- supplied in some form:
-
- o Class
- o Styles
- o Name
- o Parent window
- o Position relative to the parent window
- o Position relative to any sibling windows (z-order)
- o Dimensions
- o Owner window
- o Identifier
- o Class-specific data
- o Resources.
-
- Every window belongs to a window class that defines that window's appearance
- and behavior. The chief component of the window class is the window procedure.
- The window procedure is the function that receives and processes all messages
- sent to the window.
-
- Every window has a style. The window style specifies aspects of a window's
- appearance and behavior that are not specified by the window's class. For
- example, the WC_FRAME class always creates a frame window, but the FS_BORDER,
- FS_DLGBORDER, and FS_SIZEBORDER styles determine the style of a frame window's
- border. A few window styles apply to all windows, but most apply only to
- windows of specific window classes. The window procedure for a given class
- interprets the style and allows an application to adapt a window of a given
- class for a special circumstance. For example, an application can give a
- window the style WS_SYNCPAINT to cause it to be painted immediately whenever
- any portion of the window becomes invalid. Normally, a window is painted only
- if there are no messages waiting in the message queue.
-
- A window can have a text string associated with it. Typically, the window text
- is displayed in the window or in a title bar. The class of window determines
- whether the window displays the text and, if so, where the text appears within
- the window.
-
- Every window except the desktop window and desktop-object window has a parent
- window. The parent provides the coordinate system used to position the window
- and also affects aspects of a window's appearance. For example, when the
- parent window is minimized, hidden, or destroyed, the parent's child windows
- are minimized, hidden, or destroyed also.
-
- Every window has a screen position, size, and z-order position. The screen
- position is the location of the window's lower-left corner, relative to the
- lower-left corner of its parent window. A window's size is its width and
- height, measured in pels. A window's z-order position is the position of the
- window in the order of overlapping windows. This viewing order is oriented
- along an imaginary axis, the z axis, extending outward from the screen. The
- window at the top of the z-order overlaps all sibling windows (that is, windows
- having the same parent window). A window at the bottom of the z-order is
- overlapped by all sibling windows. An application sets a window's z-order
- position by placing it behind a given sibling window or at the top or bottom of
- the z-order of the windows.
-
- A window can own, or be owned by, another window. The owner-owned relationship
- affects how messages are sent between windows, allowing an application to
- create combinations of windows that work together. A window issues messages
- about its state to its owner window; the owner window issues messages back
- about what action to perform next.
-
- The window handle is a unique number across the system that is totally
- unambiguous-it identifies one particular window in the system and is assigned
- by the system. A window identifier is analogous to a "given" name in family
- relationships-the only requirement is that the name be unique among siblings.
-
- A window can have class-specific data that further defines how the window
- appears and behaves when it is created. The system passes the class-specific
- data to the window procedure, which then applies the data to the new window.
-
-
- ΓòÉΓòÉΓòÉ 1.1.5.1. Window-Creation Functions ΓòÉΓòÉΓòÉ
-
- The basic window-creation function is WinCreateWindow. This function uses
- information about a window's class, style, size, and position to create a new
- window. All other window-creation functions, such as WinCreateStdWindow and
- WinCreateDlg, supply some of this information by default and create windows of
- a specific class or style.
-
- Although the WinCreateWindow function provides the most direct means of
- creating a window, most applications do not use it. Instead, they often use
- the WinCreateStdWindow function to create a main window and the WinDlgBox or
- WinCreateDlg functions to create dialog windows.
-
- The WinCreateMenu, WinLoadMenu, WinLoadDlg, WinMessageBox, and
- WinCreateFrameControls functions also create windows. Each of these functions
- substitutes for one or more required calls to WinCreateWindow to create a given
- window. For example, an application can create a frame window, one or more
- control windows, and a client window in a single call to WinCreateStdWindow.
-
-
- ΓòÉΓòÉΓòÉ 1.1.5.2. Window-Creation Messages ΓòÉΓòÉΓòÉ
-
- While creating a window, the system sends messages to that window's window
- procedure. The window procedure receives a WM_CREATE message, saying that the
- window is being created. The window also receives a WM_ADJUSTWINDOWPOS
- message, specifying the initial size and position of the window being created.
- This message lets the window procedure adjust the size and position of the
- window before the window is displayed.
-
- The system also sends other messages while creating a window; the number and
- order of these messages depend on the class and style of the window and the
- function used to create it.
-
-
- ΓòÉΓòÉΓòÉ 1.1.6. Window Classes ΓòÉΓòÉΓòÉ
-
- Each window of a specific window class uses the window procedure associated
- with that class. An application can create one or more windows that belong to
- the same window class. Because each window of the same class is processed by
- the same window procedure, they all behave the same way. Since many windows
- can result from one window procedure, coding overhead is greatly reduced.
- There are two types of window classes: public and private.
-
-
- ΓòÉΓòÉΓòÉ 1.1.6.1. Public Window Classes ΓòÉΓòÉΓòÉ
-
- A public window class is one that has a reentrant window procedure that is
- registered and resides in a dynamic link library (DLL); it can be used by any
- process in the system to create windows. The operating system provides several
- preregistered public window classes. You can specify the system-provided
- window classes by using the symbolic identifiers that have the prefix WC_, as
- shown in the following table:
-
- Window Classes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéClass Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_BUTTON ΓöéConsists of buttons and boxes the user can Γöé
- Γöé Γöéselect by clicking the pointing device or Γöé
- Γöé Γöéusing the keyboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_CONTAINER ΓöéCreates a control for the user to group Γöé
- Γöé Γöéobjects in a logical manner. A container canΓöé
- Γöé Γöédisplay those objects in various formats or Γöé
- Γöé Γöéviews. The container control supports drag Γöé
- Γöé Γöéand drop so the user can place information inΓöé
- Γöé Γöéa container by simply dragging and dropping. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_ENTRYFIELD ΓöéConsists of a single line of text that the Γöé
- Γöé Γöéuser can edit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_FRAME ΓöéA window class that can contain child windowsΓöé
- Γöé Γöéof many of the other window classes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_LISTBOX ΓöéPresents a list of text items from which the Γöé
- Γöé Γöéuser can make selections. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_MENU ΓöéPresents a list of items that can be Γöé
- Γöé Γöédisplayed horizontally as menu bars, or Γöé
- Γöé Γöévertically as pull-down menus. Menus usuallyΓöé
- Γöé Γöéare used to provide a command interface to Γöé
- Γöé Γöéapplications. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_NOTEBOOK ΓöéCreates a control for the user that is Γöé
- Γöé Γöédisplayed as a number of pages. The top pageΓöé
- Γöé Γöéis visible, and the others are hidden, with Γöé
- Γöé Γöétheir presence being indicated by a visible Γöé
- Γöé Γöéedge on each of the back pages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SCROLLBAR ΓöéLets the user scroll the contents of an Γöé
- Γöé Γöéassociated window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SLIDER ΓöéCreates a control that is usable for Γöé
- Γöé Γöéproducing approximate (analog) values or Γöé
- Γöé Γöéproperties. Scroll bars were used for this Γöé
- Γöé Γöéfunction in the past, but the slider providesΓöé
- Γöé Γöéa more flexible method of achieving the same Γöé
- Γöé Γöéresult, with less programming effort. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SPINBUTTON ΓöéCreates a control that presents itself to theΓöé
- Γöé Γöéuser as a scrollable ring of choices, giving Γöé
- Γöé Γöéthe user quick access to the data. The user Γöé
- Γöé Γöéis presented only one item at a time, so the Γöé
- Γöé Γöéspin button should be used with data that is Γöé
- Γöé Γöéintuitively related. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_STATIC ΓöéSimple display items that do not respond to Γöé
- Γöé Γöékeyboard or pointing device events. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_TITLEBAR ΓöéDisplays the window title or caption and letsΓöé
- Γöé Γöéthe user move the window's owner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_VALUESET ΓöéCreates a control similar in function to the Γöé
- Γöé Γöéradio buttons but provides additional Γöé
- Γöé Γöéflexibility to display graphical, textual, Γöé
- Γöé Γöéand numeric formats. The values set with Γöé
- Γöé Γöéthis control are mutually exclusive. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- With the exception of WC_FRAME, the system-provided window classes are known as
- control window classes, because they give the user an easy means of controlling
- specific types of interaction. For example, the WC_BUTTON class allows single
- or multiple selections. These windows conform to the IBM* Systems Application
- Architecture* (SAA*) Common User Access* (CUA*) definition. They are designed
- specifically to provide function that meets the needs for a graphics-based
- standard user interface. The code fragments provided in this guide make
- extensive use of the system window classes.
-
-
- ΓòÉΓòÉΓòÉ 1.1.6.2. Private Window Classes ΓòÉΓòÉΓòÉ
-
- A private window class is one that an application registers for its own use; it
- is available only to the process that registers it. The application-provided
- window procedure for a private window class resides either in the application's
- executable files or in a DLL file. A private window class is deleted when its
- registering process is terminated.
-
-
- ΓòÉΓòÉΓòÉ 1.1.7. Window Styles ΓòÉΓòÉΓòÉ
-
- A window can have a combination of styles; an application can combine styles by
- using the bitwise inclusive OR operator. An application usually sets the
- window styles when it creates the window. The OS/2 operating system provides
- several standard window styles that apply to all windows. It also provides
- many styles for the predefined frame and control windows. The frame and
- control styles are unique to each predefined window class and can be used only
- for windows of the corresponding class.
-
- Initially, the styles of the window class used to create the window determine
- the styles of the new window. For example, if the window class has the style
- CS_SYNCPAINT, all windows created using that class, by default, will have the
- window style WS_SYNCPAINT.
-
- The OS/2 operating system has the following standard window styles:
-
- Standard Window Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_CLIPCHILDRENΓöéPrevents a window from painting over its Γöé
- Γöé Γöéchild windows. This style increases the time Γöé
- Γöé Γöénecessary to calculate the visible region. Γöé
- Γöé ΓöéThis style is usually not necessary, because Γöé
- Γöé Γöéif the parent and child windows overlap and Γöé
- Γöé Γöéboth are invalidated, the system draws the Γöé
- Γöé Γöéparent window before drawing the child Γöé
- Γöé Γöéwindow. If the child window is invalidated Γöé
- Γöé Γöéindependently of the parent window, the Γöé
- Γöé Γöésystem redraws only the child window. If the Γöé
- Γöé Γöéupdate region of the parent window does not Γöé
- Γöé Γöéintersect the child window, drawing the Γöé
- Γöé Γöéparent window causes the child window to be Γöé
- Γöé Γöéredrawn. This style is useful to prevent a Γöé
- Γöé Γöéchild window that contains a complex graphic Γöé
- Γöé Γöéfrom being redrawn unnecessarily. Γöé
- Γöé ΓöéWS_CLIPCHILDREN is an absolute requirement ifΓöé
- Γöé Γöéa window with children ever performs output Γöé
- Γöé Γöéin response to any message other than Γöé
- Γöé ΓöéWM_PAINT. Only WM_PAINT processing is Γöé
- Γöé Γöésynchronized such that the children will get Γöé
- Γöé Γöétheir messages after the parent. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_CLIPSIBLINGSΓöéPrevents a window from painting over its Γöé
- Γöé Γöésibling windows. This style protects sibling Γöé
- Γöé Γöéwindows but increases the time necessary to Γöé
- Γöé Γöécalculate the visible region. This style is Γöé
- Γöé Γöéappropriate for windows that overlap and thatΓöé
- Γöé Γöéhave the same parent window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_DISABLED ΓöéUsed by an application to disable a window. Γöé
- Γöé ΓöéIt is up to the window to recognize this Γöé
- Γöé Γöéstyle and reject input. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_GROUP ΓöéSpecifies the first control of a group of Γöé
- Γöé Γöécontrols in which the user can move from one Γöé
- Γöé Γöécontrol to the next by using the ARROW keys. Γöé
- Γöé ΓöéAll controls defined after the control with Γöé
- Γöé Γöéthe WS_GROUP style belong to the same group. Γöé
- Γöé ΓöéThe next control with the WS_GROUP style endsΓöé
- Γöé Γöéthe first group and starts a new group. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_MAXIMIZED ΓöéEnlarges a window to the maximum size. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_MINIMIZED ΓöéReduces a window to the size of an icon. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_PARENTCLIP ΓöéExtends a window's visible region to include Γöé
- Γöé Γöéthat of its parent window. This style Γöé
- Γöé Γöésimplifies the calculation of the child Γöé
- Γöé Γöéwindow's visible region but is potentially Γöé
- Γöé Γöédangerous, because the parent window's Γöé
- Γöé Γöévisible region is usually larger than the Γöé
- Γöé Γöéchild window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_SAVEBITS ΓöéSaves the screen area under a window as a bitΓöé
- Γöé Γöémap. When the user hides or moves the window,Γöé
- Γöé Γöéthe system restores the image by copying the Γöé
- Γöé Γöébits; there is no need to add the area to theΓöé
- Γöé Γöéuncovered window's update region. The style Γöé
- Γöé Γöécan improve system performance but also can Γöé
- Γöé Γöéconsume a great deal of memory. It is Γöé
- Γöé Γöérecommended only for transient windows, such Γöé
- Γöé Γöéas menus and dialog windows, not for main Γöé
- Γöé Γöéapplication windows. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_SYNCPAINT ΓöéCauses a window to receive WM_PAINT messages Γöé
- Γöé Γöéimmediately after a part of the window Γöé
- Γöé Γöébecomes invalid. Without this style, the Γöé
- Γöé Γöéwindow receives WM_PAINT messages only if no Γöé
- Γöé Γöéother message is waiting to be processed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_TABSTOP ΓöéSpecifies one of any number of controls Γöé
- Γöé Γöéthrough which the user can move by tabbing. Γöé
- Γöé ΓöéPressing the TAB key moves the keyboard focusΓöé
- Γöé Γöéto the next control that has the WS_TABSTOP Γöé
- Γöé Γöéstyle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWS_VISIBLE ΓöéMakes a window visible. The operating system Γöé
- Γöé Γöédraws the window on the screen unless Γöé
- Γöé Γöéoverlapping windows completely obscure it. Γöé
- Γöé ΓöéWindows without this style are hidden. If Γöé
- Γöé Γöéoverlapping windows completely obscure the Γöé
- Γöé Γöéwindow, the window is still considered Γöé
- Γöé Γöévisible. (Visibility means that the operatingΓöé
- Γöé Γöésystem draws the window if it can.) Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 1.1.8. Window Handles ΓòÉΓòÉΓòÉ
-
- After creating a window, the creation function returns a window handle that
- uniquely identifies the window. An application can use this handle to direct
- the action of functions to the window. Window handles have the data type HWND;
- applications must use this data type when declaring variables that hold window
- handles.
-
- There are special constants that an application can use instead of a window
- handle in certain functions. For example, an application can use HWND_DESKTOP
- in the WinCreateWindow function to specify the desktop window as the new
- window's parent. Similarly, HWND_OBJECT represents the desktop-object window.
- HWND_TOP and HWND_BOTTOM represent the top and bottom positions relative to the
- z-order position of a window.
-
- Although the NULL constant is not a window handle, an application can use it in
- some functions to specify that no window is affected. For example, an
- application can use NULL in the WinCreateWindow function to create a window
- that has no owner window. Some functions might return NULL, indicating that
- the given action applies to no window.
-
-
- ΓòÉΓòÉΓòÉ 1.1.9. Window Size and Position ΓòÉΓòÉΓòÉ
-
- A window's size and position can be expressed as a bounding rectangle, given in
- coordinates relative to its parent. An application specifies the window's
- initial size and position when creating the window.
-
- To use the system-default values for the initial size and position of a frame
- window, an application can specify the FCF_SHELLPOSITION frame-creation flag.
- The application can change a window's size and position at any time. The
- following figure indicates the size and position coordinates of a parent window
- and a child window.
-
- Window Sizing and Positioning
-
- Note:
-
- The default coordinate system for a window specifies that the point (0,0) is at
- the lower-left corner of the window, with coordinates increasing as they go
- upward and to the right.
-
- A window can be positioned anywhere in relation to its parent.
-
-
- ΓòÉΓòÉΓòÉ 1.1.9.1. Size ΓòÉΓòÉΓòÉ
-
- A window's size (width and height) is given in pels, in the range 0 through
- 65535. A window can have 0 width and height; however, a window with 0 width or
- height is not drawn on the screen, even though it has the WS_VISIBLE style.
-
- An application can create very large windows; however, it should check the size
- of the screen before enlarging a window size. One way to choose an appropriate
- size is to use the WinGetMaxPosition function to retrieve the size of the
- maximized window. A window that is larger than its maximized size will be
- larger than the screen also.
-
- An application can retrieve the current size of the window by using the
- WinQueryWindowRect function.
-
-
- ΓòÉΓòÉΓòÉ 1.1.9.2. Position ΓòÉΓòÉΓòÉ
-
- A window's position is defined as the x,y coordinates of its lower-left corner.
- These coordinates, sometimes called window coordinates, always are relative to
- the lower-left corner of the parent window. For example, a window having the
- coordinates (10,10) is placed 10 pels to the right of, and 10 pels up from, the
- lower-left corner of its parent window. Notice, however, that a window can be
- positioned anywhere in relation to its parent, but always relative to the
- parent's lower-left corner.
-
- Adjusting a window's position can improve drawing performance. For example, an
- application could position a window so that its horizontal position is a
- multiple of 8, relative to the screen origin (the lower-left corner of the
- screen). Coordinates that are multiples of 8 correspond to byte boundaries in
- the screen-memory bit map. It is usually faster to start drawing at a byte
- boundary.
-
- By default, the system positions a frame window on a byte boundary; but an
- application can override this action by using the FCF_NOBYTEALIGN style when
- creating the window.
-
-
- ΓòÉΓòÉΓòÉ 1.1.9.3. Size and Position Messages ΓòÉΓòÉΓòÉ
-
- A window receives messages when it changes size or position. Before a change
- is made, the system might send a WM_ADJUSTWINDOWPOS message to allow the window
- procedure to make final adjustments to the window's size and position. This
- message includes a pointer to an SWP structure that contains the requested
- width, height, and position. If the window procedure adjusts these values in
- the structure, the system uses the adjusted values to redraw the window. The
- WM_ADJUSTWINDOWPOS message is not sent if the change is a result of a call to
- the WinSetWindowPos function with the SWP_NOADJUST constant specified.
-
- After a change has been made to a window, the system sends a WM_SIZE message to
- specify the new size of the window. If the window has the class style
- CS_MOVENOTIFY, the system also sends a WM_MOVE message, which includes the new
- position for the window. The system sends a WM_SHOW message if the visibility
- of the window has changed.
-
-
- ΓòÉΓòÉΓòÉ 1.1.9.4. System Commands ΓòÉΓòÉΓòÉ
-
- An application that has a window with a system menu can change the size and
- position of that window by sending system commands. The system commands are
- generated when the user chooses commands from the system menu. An application
- can emulate the user action by sending a WM_SYSCOMMAND message to the window.
-
- Following are some of the system commands:
-
- System Commands
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCommand ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSC_SIZE ΓöéStarts a Size command. The user can change Γöé
- Γöé Γöéthe size of the window with a mouse and the Γöé
- Γöé Γöékeyboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSC_MOVE ΓöéStarts a Move command. The user can move theΓöé
- Γöé Γöéwindow with a mouse and the keyboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSC_MINIMIZE ΓöéMinimizes the window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSC_MAXIMIZE ΓöéMaximizes the window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSC_RESTORE ΓöéRestores a minimized or maximized window to Γöé
- Γöé Γöéits previous size and position. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSC_CLOSE ΓöéCloses the window. This command sends a Γöé
- Γöé ΓöéWM_CLOSE message to the window. The window Γöé
- Γöé Γöéperforms all tasks needed to clean up and Γöé
- Γöé Γöédestroy itself. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 1.1.10. Window Data ΓòÉΓòÉΓòÉ
-
- Every window has an associated data structure. The window data structure
- contains all the information specified for the window at the time it was
- created and any additional information supplied for the window since that time.
- Although the exact size and meaning of the information in the window data
- structure are private to the system, an application can access any of the
- following data items via system-provided functions:
-
- o Pointer to window-instance data structure
- o Pointer to window procedure
- o Parent-window handle
- o Owner-window handle
- o Handle of first child window
- o Handle of next sibling window
- o Window size and position (expressed as a rectangle)
- o Window style
- o Window identifier
- o Update-region handle
- o Message-queue handle.
-
- An application can examine and modify this data by using functions such as
- WinQueryWindowUShort and WinSetWindowUShort. These functions let an application
- access data that is stored as 16-bit integers. Other functions let an
- application access data containing 32-bit integers and pointers. Several
- functions indirectly affect the data items in the window data structure. For
- example, the WinSubclassWindow function replaces the window-procedure pointer,
- and the WinSetWindowPos function changes the size and position of the window.
-
- An application can extend the number of available data items in the window data
- structure by specifying a count of extra bytes when it registers the
- corresponding window class. Then, the window procedure can use these bytes to
- store information about the window. The WinQueryWindowUShort and
- WinSetWindowUShort functions give direct access to the extra bytes.
-
- It generally is not a good idea to use direct storage in the window data. It
- is better to allocate a data structure dynamically and set a pointer to that
- data structure in the window words. This provides two advantages:
-
- 1. Most importantly, it is a symbolic way of referencing the data structure.
- It is very easy to make mistakes and provide the wrong offsets to
- WinQueryWindowUShort and so forth.
-
- 2. You now can add and remove fields without cross dependencies, because you
- now use symbolic references; whereas, when you use the technique of putting
- window words directly in the window data structure, you have to account for
- changed offsets.
-
-
- ΓòÉΓòÉΓòÉ 1.1.11. Window Resources ΓòÉΓòÉΓòÉ
-
- Window resources are read-only data segments stored in an application's EXE
- file or in a dynamic link library's DLL file. Predefined PM window resources
- include keyboard accelerator tables, icons, menus, bit maps, dialog boxes, and
- so forth; these are not a regular part of the application window's code and
- data. Because, in most cases, window resources are not loaded into memory when
- the operating system runs a program, the resources can be shared by multiple
- instances of the same application.
-
- Most window resources are stored in a format that is unique to each resource
- type. The application does not need to know these formats because the system
- translates them, as necessary, for use in PM functions. The following table
- lists the ten most commonly used PM window resource types.
-
- Presentation Manager-Defined Resource Types
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéResource Identifier ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_ACCELTABLE ΓöéKeyboard accelerator table Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_BITMAP ΓöéBit map Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_DIALOG ΓöéDialog box template Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_FONT ΓöéFont Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_FONTDIR ΓöéFont directory Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_MENU ΓöéMenu template Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_MESSAGE ΓöéMessage string Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_POINTER ΓöéIcon or mouse Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_RCDATA ΓöéProgrammer-defined data Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRT_STRING ΓöéText string Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
- To access these resources, you must prepare a resource file (ASCII file with
- the extension .RC). Then the ASCII resource file must be compiled into binary
- images using the resource compiler. The compiled resource file extension is
- RES; it can be linked into your program's EXE file or to a dynamic link
- library's DLL file.
-
-
- ΓòÉΓòÉΓòÉ 1.1.12. Maximized and Minimized Windows ΓòÉΓòÉΓòÉ
-
- A maximized window is a window that has been enlarged to fill the screen.
- Although a window's size can be set so that it fills the screen exactly, a
- maximized window is slightly different: the system automatically moves the
- window's title bar to the top of the screen and sets the WS_MAXIMIZED style for
- the window.
-
- A minimized window is a window whose size has been reduced to exactly the size
- of an icon or, in the workplace shell, it disappears altogether (by default).
- Like a maximized window, a minimized window is more than just a window of a
- given size; typically, the system moves the (icon) minimized window to the
- lower part of the screen and sets the WS_MINIMIZED style for that window. The
- lower part of the screen is sometimes called the icon area. Unless the
- application specifies another position, the system moves a minimized window
- into the first available icon position in the icon area.
-
- If a window is created with the WS_MAXIMIZED or WS_MINIMIZED styles, the system
- draws the window as a maximized or minimized window.
-
- An application can restore maximized or minimized windows to their previous
- size and position by specifying the SWP_RESTORE flag in a call to the
- WinSetWindowPos function.
-
-
- ΓòÉΓòÉΓòÉ 1.1.13. Window Visibility ΓòÉΓòÉΓòÉ
-
- A window that is a descendant of the desktop window can be either visible or
- invisible. The system displays a visible window on the screen. It hides an
- invisible window by not drawing it. If a window is visible, the user can
- supply input to the window and view the window's output. If a window is
- invisible, the window, in effect, is disabled. An invisible window can process
- messages from the system or from other windows, but it cannot process user
- input or display output. An application sets a window's visibility state when
- it creates the window. Later, a user or the application can change the
- visibility state.
-
- The visible region of a window is the position clipped by any overlapping
- windows. These overlapping windows can be child windows or other main windows
- in the system. The visible region is defined by a set of one or more
- rectangles, as shown in the following figure.
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
- Γöé Γûæ A ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé B Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé C Γöé Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé D Γöé
- Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé ΓûæΓûæΓûæΓûæΓûæ Γöé - Visible region for Window A
- Γöé ΓûæΓûæΓûæΓûæΓûæ Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Visible Region for Window A
-
- A window is visible if the WS_VISIBLE style is set for the window. By default,
- the WinCreateWindow function creates invisible windows unless the application
- specifies WS_VISIBLE. The application often hides a window to keep its
- operational details from the user. For example, an application can keep a new
- window invisible while it customizes the window's appearance. An application
- can determine whether a window has the WS_VISIBLE style by using the
- WinIsWindowVisible function.
-
- Even if a window has the WS_VISIBLE style, the user might not be able to see
- the window on the screen because other windows completely overlap it, or it
- might have been moved beyond the edge of its parent. A visible window is
- subject to the clipping rules established by its parent-child relationship. If
- the window's parent window is not visible, the window will not be visible.
- Because a child window is drawn relative to its parent's lower-left corner, if
- the parent window is moved beyond the edge of the screen, the child window also
- will be moved. In other words, if a user moves the parent window containing
- the child window far enough off the edge of the screen, the user will not be
- able to see the child window, even though the child window and its parent
- window have the WS_VISIBLE style. To determine whether the user actually can
- see a window, an application can use the WinIsWindowShowing function.
-
-
- ΓòÉΓòÉΓòÉ 1.1.14. Window Destruction ΓòÉΓòÉΓòÉ
-
- In general, an application must destroy all the windows it creates. It does
- this by using the WinDestroyWindow function. When a window is destroyed, the
- system hides the window, if it is visible, and then removes any internal data
- associated with the window. This invalidates the window handle so that it can
- no longer be used by the application.
-
- An application destroys many of the windows it creates soon after creating
- them. For example, an application usually destroys a dialog window as soon as
- the application has sufficient input from the user to continue its task. An
- application eventually destroys the main window of the application (before
- terminating).
-
- Destroying a window does not affect the window class from which the window was
- created. New windows still can be created using that class, and any existing
- windows of that class continue to operate.
-
- When the application calls WinDestroyWindow, the system searches the
- descendancy tree for all windows below the specified window and destroys them
- from the bottom up, so each child receives WM_DESTROY before its parent. Each
- destroyed window is responsible for cleaning up its own resources in response
- to the WM_DESTROY message.
-
- If a presentation space was created by the WinGetPS function for any of the
- windows to be destroyed, it must be released by calling the WinReleasePS
- function. The application must do this before calling the WinDestroyWindow
- function. If a presentation space is associated with the device context for
- the window, the application must disassociate or destroy the presentation space
- by using the GpiAssociate or GpiDestroyPS function before calling
- WinDestroyWindow. Failing to release a resource can cause an error.
-
- For more information about presentation spaces and device contexts, see
- Painting and Drawing.
-
- If the window being destroyed is the active window, both the active and focus
- states are transferred to another window. The window that becomes the active
- window is the next window, as determined by the Alt+Esc key combination. The
- new active window then determines which window receives the keyboard focus.
-
-
- ΓòÉΓòÉΓòÉ 1.2. Using Windows ΓòÉΓòÉΓòÉ
-
- The following sections explain how to create and use windows in an application,
- how to manage ownership and parent-child window relationships, and how to move
- and size windows.
-
-
- ΓòÉΓòÉΓòÉ 1.2.1. Creating a Top-Level Frame Window ΓòÉΓòÉΓòÉ
-
- The main window in most applications is a top-level frame window. An
- application creates a top-level frame window by specifying the handle of the
- desktop window, or HWND_DESKTOP, as the hwndParent parameter in a call to the
- WinCreateStdWindow function.
-
- The following figure shows the main() function for a simple PM application.
- This function initializes the application, creates a message queue, and
- registers the window class for the client window before creating a top-level
- frame window.
-
- #define IDR_RESOURCES 1
-
- MRESULT EXPENTRY ClientWndProc(HWND, ULONG, MPARAM, MPARAM);
-
- int main(VOID)
- {
- HWND hwndFrame;
- HWND hwndClient;
- HMQ hmq;
- QMSG qmsg;
- HAB hab;
-
- /* Set the frame-window creation flags. */
- ULONG flFrameFlags =
- FCF_TITLEBAR | /* Title bar */
- FCF_SIZEBORDER | /* Size border */
- FCF_MINMAX | /* Minimize and maximize buttons. */
- FCF_SYSMENU | /* System menu */
- FCF_SHELLPOSITION | /* System-default size and position */
- FCF_TASKLIST ; /* Add name to Task List. */
-
- /* Initialize the application for PM */
- hab = WinInitialize(0);
-
- /* Create the application message queue. */
- hmq = WinCreateMsgQueue(hab, 0);
-
- /* Register the class for the client window. */
- WinRegisterClass(
- hab, /* Anchor block handle */
- "MyPrivateClass", /* Name of class being registered */
- (PFNWP)ClientWndProc, /* Window procedure for class */
- CS_SIZEREDRAW | /* Class style */
- CS_HITTEST, /* Class style */
- 0); /* Extra bytes to reserve */
-
- /* Create a top-level frame window with a client window */
- /* that belongs to the window class "MyPrivateClass". */
- hwndFrame = WinCreateStdWindow(
- HWND_DESKTOP, /* Parent is desktop window. */
- WS_VISIBLE, /* Make frame window visible. */
- &flFrameFlags, /* Frame controls */
- "MyPrivateClass", /* Window class for client */
- NULL, /* No window title */
- WS_VISIBLE, /* Make client window visible . */
- (HMODULE) 0, /* Resources in application module */
- IDR_RESOURCES, /* Resource identifier */
- NULL); /* Pointer to client window handle */
-
- /* Start the main message loop. Get messages from the */
- /* queue and dispatch them to the appropriate windows. */
- while (WinGetMsg(hab, &qmsg, 0, 0, 0))
- WinDispatchMsg(hab, &qmsg);
-
- /* Main loop has terminated. Destroy all windows and the */
- /* message queue; then terminate the application. */
- WinDestroyWindow(hwndFrame);
- WinDestroyMsgQueue(hmq);
- WinTerminate(hab);
-
- return 0;
- }
-
- Structure of a Simple Presentation Manager Application
-
-
- ΓòÉΓòÉΓòÉ 1.2.2. Creating an Object Window ΓòÉΓòÉΓòÉ
-
- An application can create an object window by using the WinCreateWindow
- function and setting the desktop-object window as the parent window. The code
- fragment in the following figure shows how to create an object window.
-
- #define ID_OBJWINDOW 2
-
- HWND hwndObject;
-
- hwndObject = WinCreateWindow(
- HWND_OBJECT, /* Parent is object window. */
- "MyObjClass", /* Window class for client */
- NULL, /* Window text */
- 0, /* No styles for object window */
- 0, 0, /* Lower-left corner */
- 0, 0, /* Width and height */
- NULL, /* No owner */
- HWND_BOTTOM, /* Inserts window at bottom of z-order */
- ID_OBJWINDOW, /* Window identifier */
- NULL, /* No class-specific data */
- NULL); /* No presentation data */
-
-
- Creating an Object Window
-
-
- ΓòÉΓòÉΓòÉ 1.2.3. Querying Window Data ΓòÉΓòÉΓòÉ
-
- An application can examine the values in the data structure associated with a
- window by using the WinQueryWindowUShort and WinQueryWindowULong functions.
- Each of these functions specifies a structure data item to examine. The index
- value can be an integer representing a zero-based byte index or a constant
- (QWS_) that identifies a specific item of data. The code fragment in the
- following figure obtains the programmer-defined identifier of the object window
- defined in the previous example:
-
-
- HWND hwndObject;
- USHORT usObjID;
-
- usObjID = WinQueryWindowUShort(hwndObject, QWS_ID);
-
-
- Getting the Window Identifier
-
-
- ΓòÉΓòÉΓòÉ 1.2.4. Changing the Parent Window ΓòÉΓòÉΓòÉ
-
- An application can change a window's parent window by using the WinSetParent
- function. For example, in an application that uses child windows to display
- documents, you might want only the active document window to show a system
- menu. You can do this by changing that menu's parent window back and forth
- between the document window and the object window when WM_ACTIVATE messages are
- received. This technique is shown in the code fragment in the following
- figure.
-
-
- switch (msg) {
-
- case WM_ACTIVATE: {
-
- HWND hwndFrame, hwndSysMenu, hwnd;
-
- /* Get the handles of the frame window and system menu. */
- hwndFrame = WinQueryWindow(hwnd, QW_PARENT);
- hwndSysMenu = WinWindowFromID(hwndFrame, FID_SYSMENU);
-
- /* If the window is being activated, make the frame window the */
- /* parent of the system menu. Otherwise, hide the system menu */
- /* by making the object window the parent. */
-
- if ( SHORT1FROMMP(mp1))
- WinSetParent(hwndSysMenu, hwndFrame, TRUE);
-
- else
- WinSetParent(hwndSysMenu, HWND_OBJECT, TRUE);
-
- }
-
- return 0;
- }
-
-
- Changing the Parent Window
-
-
- ΓòÉΓòÉΓòÉ 1.2.5. Finding a Parent, Child, or Owner Window ΓòÉΓòÉΓòÉ
-
- An application can determine the parent, child, and owner windows for any
- window by using the WinQueryWindow function. This function returns the window
- handle of the requested window.
-
- The code fragment in the following figure determines the parent window of the
- given window:
-
- HWND hwndParent;
- HWND hwndMyWindow;
-
- hwndParent = WinQueryWindow(hwndMyWindow, QW_PARENT);
-
-
- Finding the Parent Window
-
- The code fragment in the following figure determines the topmost child window
- (the child window in the top z-order position):
-
- HWND hwndTopChild;
- HWND hwndParent;
-
- hwndTopChild = WinQueryWindow(hwndParent, QW_TOP);
-
-
- Finding the Topmost Child Window
-
- If a given window does not have an owner or child window, WinQueryWindow
- returns NULL.
-
-
- ΓòÉΓòÉΓòÉ 1.2.6. Setting an Owner Window ΓòÉΓòÉΓòÉ
-
- An application can set the owner for a window by using the WinSetOwner
- function. Typically, after setting the owner, a window notifies the owner
- window of the new relationship by sending it a message.
-
- The code fragment in the following figure shows how to set the owner window and
- send it a message:
-
- #define NEW_OWNER 1
-
- HWND hwndMyWindow;
- HWND hwndNewOwner;
-
- if (WinSetOwner(hwndMyWindow, hwndNewOwner))
-
- /* Send a notification message. */
- WinSendMsg(hwndNewOwner, /* Sends to owner */
- WM_CONTROL, /* Control message for notification */
- (MPARAM) NEW_OWNER, /* Notification code */
- NULL); /* No extra data */
-
-
- Setting the Owner Window
-
- A window can have only one owner, so WinSetOwner removes any previous owner.
-
-
- ΓòÉΓòÉΓòÉ 1.2.7. Retrieving the Handle of a Child or Owned Window ΓòÉΓòÉΓòÉ
-
- A parent or owner window can retrieve the handle of a child or owned window by
- using the WinWindowFromID function and supplying the identifier of the child or
- owned window. WinWindowFromID searches all child and owned windows to locate
- the window with the given identifier. The window identifier is set when the
- application creates the child or owned window.
-
- Typically, an owned window uses WinQueryWindow to get the handle of the owner
- window; then uses WinSendMsg to issue a notification message to its owner
- window.
-
- The code fragment in the following figure retrieves the window handle of an
- owner window and sends the window a WM_ENABLE message:
-
- HWND hwndOwned;
- HWND hwndOwner;
-
- case WM_CONTROL:
- switch (SHORT2FROMMP (mp2)) {
- case BN_CLICKED:
- hwndOwned = WinWindowFromID(hwndOwner,
- (ULONG)SHORT1FROMMP(mp1));
- WinSendMsg(hwndOwned, WM_ENABLE,
- (MPARAM)TRUE, (MPARAM) NULL);
- return 0;
- .
- . /* Check for other notification codes. */
- .
-
- }
-
-
- Getting a Handle to an Owner or Child Window
-
- An application also can retrieve the handle of a child window by using the
- WinWindowFromPoint function and supplying a point in the corresponding parent
- window.
-
-
- ΓòÉΓòÉΓòÉ 1.2.8. Enumerating Top-Level Windows ΓòÉΓòÉΓòÉ
-
- An application can enumerate all top-level windows in the system by using the
- WinBeginEnumWindows and WinGetNextWindow functions. An application also can
- create a list of all child windows for a given parent window using
- WinBeginEnumWindows. This list contains the window handles of immediate child
- windows. By using WinGetNextWindow, the application then can retrieve the
- window handles, one at a time, from the list. When the application has
- finished using the list, it must release the list with the WinEndEnumWindows
- function.
-
- The code fragment in the following figure shows how to enumerate all top-level
- windows (all immediate child windows of the desktop window):
-
-
- HWND hwndTop;
- HENUM henum;
-
- /* Enumerate all top-level windows. */
- henum = WinBeginEnumWindows(HWND_DESKTOP);
-
- /* Loop through all enumerated windows. */
- while (hwndTop = WinGetNextWindow(henum)) {
- .
- . /* Perform desired task on each window. */
- .
- }
-
- WinEndEnumWindows(henum);
-
-
- Enumerating Top-Level Windows
-
-
- ΓòÉΓòÉΓòÉ 1.2.9. Moving and Sizing a Window ΓòÉΓòÉΓòÉ
-
- An application can move a window by using the WinSetWindowPos function and
- specifying the SWP_MOVE constant. The function changes the position of the
- window to the specified position. The position is always given in coordinates
- relative to the parent window.
-
- The code fragment in the following figure moves the window to the position
- (10,10):
-
- HWND hwnd;
-
- WinSetWindowPos(
- hwnd, /* Window handle */
- NULL, /* Not used for moving and sizing */
- 10, 10, /* New position */
- 0, 0, /* Not used for moving */
- SWP_MOVE); /* Move window */
-
-
- Moving a Window
-
- An application can set the size of a window by using the WinSetWindowPos
- function and specifying the SWP_SIZE constant. WinSetWindowPos changes the
- width and height of the window to the specified width and height.
-
- An application can combine moving and sizing in a single function call, as
- shown in the following figure.
-
-
- HWND hwnd;
-
- WinSetWindowPos(
- hwnd, /* Window handle */
- NULL, /* Not used for moving and sizing */
- 10, 10, /* New position */
- 200, 200, /* Width and height */
- SWP_MOVE | SWP_SIZE); /* Move and size window. */
-
-
- Moving and Sizing a Window
-
- An application can retrieve the current size and position of a window by using
- the WinQueryWindowPos function. This function copies the current information
- to an SWP structure.
-
- The code fragment in the following figure uses the current size and position to
- change the height of the window, leaving the width and position unchanged:
-
-
- HWND hwnd;
- SWP swp;
-
- WinQueryWindowPos(hwnd, &swp);
- WinSetWindowPos(
- hwnd, /* Window handle */
- NULL, /* Not used for moving and sizing */
- 0, 0, /* Not used for sizing */
- swp.cx, /* Current width */
- swp.cy + 200, /* New height */
- SWP_SIZE); /* Change the size. */
-
-
- Changing the Size of a Window
-
- An application also can move and change the size of several windows at once by
- using the WinSetMultWindowPos function. This function takes an array of SWP
- structures. Each structure specifies the window to be moved or changed.
-
- An application can move and size a window even if it is not visible, although
- the user is not able to see the effects of the moving and sizing until the
- window is visible.
-
-
- ΓòÉΓòÉΓòÉ 1.2.10. Redrawing Windows ΓòÉΓòÉΓòÉ
-
- When the system moves a window or changes its size, it can invalidate all or
- part of that window. The system attempts to preserve the contents of the
- window and copy them to the new position; but if the window's size is
- increased, the window must fill the area exposed by the size change. If a
- window is moved from behind an overlapping window, any area formerly obscured
- by the other window must be drawn. In these cases, the system invalidates the
- exposed areas and sends a WM_PAINT message to the window.
-
- An application can require that the system invalidate an entire window every
- time the window moves or changes size. To do this, the application sets the
- CS_SIZEREDRAW class style in the corresponding window class. Typically, this
- class style is selected for use in an application that uses a window's current
- size and position to determine how to draw the window. For example, a clock
- application always would draw the face of the clock so that it filled the
- window exactly.
-
- An application also can explicitly specify which parts of the window to
- preserve during a move or size change. Before any change is made, the system
- sends a WM_CALCVALIDRECTS message to windows that do not have the style
- CS_SIZEREDRAW. This enables the window procedure to specify what part of the
- window to save and where to align it after the move or size change.
-
-
- ΓòÉΓòÉΓòÉ 1.2.11. Changing the Z-Order of Windows ΓòÉΓòÉΓòÉ
-
- An application can move a window to the top or bottom of the z-order by passing
- the SWP_ZORDER constant to the WinSetWindowPos function. An application
- specifies where to move the window by specifying the HWND_TOP or HWND_BOTTOM
- constants.
-
- The code fragment in the following figure uses WinSetWindowPos to change the
- z-order of a window:
-
- HWND hwndParent;
- HWND hwndNext;
- HENUM henum;
-
- WinSetWindowPos(
- hwndNext, /* Next window to move */
- HWND_TOP, /* Put window on top */
- 0, 0, 0, 0, /* Not used for z-order */
- SWP_ZORDER); /* Change z-order */
-
-
- Changing the Z-order of a Window
-
- An application also can specify the window that the given window is to move
- behind. In this case, the application specifies the window handle instead of
- the HWND_TOP or HWND_BOTTOM constant.
-
- HWND hwndParent;
- HWND hwndNext;
- HWND hwndExchange;
- HENUM henum;
-
- henum = WinBeginEnumWindows(hwndParent);
-
- hwndExchange = WinGetNextWindow(henum);
-
- /* hwndNext has top window; hwndExchange has window under the top. */
- WinSetWindowPos(
- hwndNext, /* Next window to move */
- hwndExchange, /* Put lower window on top */
- 0, 0, 0, 0, /* Not used for z-order */
- SWP_ZORDER); /* Change z-order */
-
- WinEndEnumWindows(henum);
-
-
- Exchanging the Z-order of Windows
-
-
- ΓòÉΓòÉΓòÉ 1.2.12. Showing or Hiding a Window ΓòÉΓòÉΓòÉ
-
- An application can show or hide a window by using the WinShowWindow function.
- This function changes the WS_VISIBLE style of a window to the specified
- setting. An application can also use the WinIsWindowVisible function to check
- the visibility of a window. This function returns TRUE if the window is
- visible.
-
-
- ΓòÉΓòÉΓòÉ 1.2.13. Maximizing, Minimizing, and Restoring a Frame Window ΓòÉΓòÉΓòÉ
-
- An application can maximize, minimize, or restore a frame window by using the
- WinSetWindowPos function and specifying the constant SWP_MAXIMIZE,
- SWP_MINIMIZE, or SWP_RESTORE. Only a frame window can maximize and minimize by
- default. For any other window, an application must provide support for these
- actions in the corresponding window procedure.
-
- The following figure shows how to maximize a frame window:
-
-
- SWP swpCurrent;
- HWND hwndFrame;
-
- WinQueryWindowPos(hwndFrame, &swpCurrent);
- WinSetWindowPos(
- hwndFrame, /* Window handle */
- NULL, /* Not used to maximize */
- swpCurrent.x,
- swpCurrent.y, /* Stored for restoring window */
- swpCurrent.cx,
- swpCurrent.cy, /* Stored for restoring window */
- SWP_MAXIMIZE | SWP_SIZE | SWP_MOVE); /* Maximize */
-
-
- Maximizing a Frame Window
-
-
- ΓòÉΓòÉΓòÉ 1.2.14. Destroying a Window ΓòÉΓòÉΓòÉ
-
- An application can destroy a window by using the WinDestroyWindow function. The
- following figure shows how to create and then destroy a control window:
-
- HWND hwndCtrl;
- HWND hwndParent;
-
- hwndCtrl = WinCreateWindow(hwndParent, WC_BUTTON, ...);
-
- WinDestroyWindow(hwndCtrl);
-
-
- Destroying a Window
-
-
- ΓòÉΓòÉΓòÉ 1.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions, messages, and data structures used with
- windows.
-
- Window Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéWindow Creation Γöé Γöé
- ΓöéFunctions Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateWindow ΓöéThe most direct way of creating a Γöé
- Γöé Γöéwindow. The window is of class Γöé
- Γöé ΓöéClassName and returns hwnd. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateStdWindow ΓöéCreates a main window. Requires an Γöé
- Γöé Γöéanchor block. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWindow Destruction Γöé Γöé
- ΓöéFunctions Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDestroyWindow ΓöéDestroys a window and its child Γöé
- Γöé Γöéwindows, and releases all their Γöé
- Γöé Γöéresources. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWindow Data Functions Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowUShort ΓöéObtains the unsigned short integer Γöé
- Γöé Γöévalue of a given window at a Γöé
- Γöé Γöéspecified offset from the reserved Γöé
- Γöé Γöéwindow word's memory. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowUShort ΓöéSets an unsigned, short integer Γöé
- Γöé Γöévalue into the memory of the Γöé
- Γöé Γöéreserved window words. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowULong ΓöéObtains the unsigned long integer Γöé
- Γöé Γöévalue of a given window, at a Γöé
- Γöé Γöéspecified offset, from the memory ofΓöé
- Γöé Γöéa reserved window word. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowULong ΓöéSets an unsigned, long integer valueΓöé
- Γöé Γöéinto the memory of the reserved Γöé
- Γöé Γöéwindow words. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowPtr ΓöéRetrieves a pointer value from the Γöé
- Γöé Γöémemory of the reserved window word. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowPtr ΓöéSets a pointer value into the memoryΓöé
- Γöé Γöéof the reserved window words. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowBits ΓöéSets a number of bits into the Γöé
- Γöé Γöémemory of the reserved window words.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWindow Relationship Γöé Γöé
- ΓöéFunctions Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetParent ΓöéSets the parent for hwnd to Γöé
- Γöé ΓöéNewParent. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindow ΓöéReturns the handle of a window that Γöé
- Γöé Γöéhas a specified relationship to a Γöé
- Γöé Γöéspecified window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetOwner ΓöéChanges the owner of a specified Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinBeginEnumWindows ΓöéBegins the enumeration process for Γöé
- Γöé Γöéall the immediate child windows of aΓöé
- Γöé Γöéspecified window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinGetNextWindow ΓöéGets the window handle of the next Γöé
- Γöé Γöéwindow in a specified enumeration Γöé
- Γöé Γöélist. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinEndEnumWindows ΓöéEnds the specified enumeration Γöé
- Γöé Γöéprocess. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinIsChild ΓöéTests to determine whether one Γöé
- Γöé Γöéwindow is a descendant of another. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryDesktopWindow ΓöéReturns the desktop window handle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryObjectWindow ΓöéReturns the desktop-object window Γöé
- Γöé Γöéhandle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWindowFromID ΓöéReturns the handle of the child Γöé
- Γöé Γöéwindow with the specified ID. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWindowFromPoint ΓöéFinds the window, below a specified Γöé
- Γöé Γöépoint, that is a descendant of a Γöé
- Γöé Γöéspecified window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinMultWindowFromIDs ΓöéFinds the handles of child windows Γöé
- Γöé Γöéthat belong to a specified window Γöé
- Γöé Γöéand that have window IDs within a Γöé
- Γöé Γöéspecified range. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWindow Size and PositionΓöé Γöé
- ΓöéFunctions Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowPos ΓöéFacilitates the general positioning Γöé
- Γöé Γöéof a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowPos ΓöéObtains the size and position of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetMultWindowPos ΓöéAn efficient means of repositioning Γöé
- Γöé Γöémultiple windows with one call, Γöé
- Γöé Γöéprovided all windows being Γöé
- Γöé Γöépositioned have the same parent. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowRect ΓöéReturns a window rectangle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinGetMinPosition ΓöéReturns the position to which a Γöé
- Γöé Γöéwindow is minimized. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWindow Visibility Γöé Γöé
- ΓöéFunctions Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinIsWindowShowing ΓöéDetermines whether any part of the Γöé
- Γöé Γöéwindow, hwnd, is physically visible.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinShowWindow ΓöéSets the visibility state of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinIsWindowVisible ΓöéReturns the visibility state of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWindow Input Functions Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryActiveWindow ΓöéReturns the active window for Γöé
- Γöé ΓöéHWND_DESKTOP or other parent window.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetActiveWindow ΓöéSets the main window as the active Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryFocus ΓöéReturns the focus window; NULL if Γöé
- Γöé Γöéthere is no focus window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetFocus ΓöéSets the focus window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQuerySysModalWindow ΓöéReturns the current system-modal Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinRequestMutexSem ΓöéRequests the ownership of a mutex Γöé
- Γöé Γöésemaphore or waits for a PM message.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetSysModalWindow ΓöéEither sets a system-modal window orΓöé
- Γöé Γöéends the system-modal state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinStartApp ΓöéStarts an application. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinTerminate ΓöéTerminates an application thread's Γöé
- Γöé Γöéuse of PM and releases all of its Γöé
- Γöé Γöéassociated resources. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinTerminateApp ΓöéTerminates an application started Γöé
- Γöé Γöéwith WinStartApp. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWaitEventSem ΓöéWaits for an event semaphore to be Γöé
- Γöé Γöéposted or for a PM message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWaitMuxWaitSem ΓöéWaits for a muxwait semaphore to Γöé
- Γöé Γöéclear or for a PM message. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Window Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ACTIVATE ΓöéSent to a window as it gains Γöé
- Γöé Γöéor loses activation. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ADJUSTWINDOWPOS ΓöéSent to adjust a window's Γöé
- Γöé Γöéposition. Not sent if Γöé
- Γöé ΓöéSWP_NOADJUST is specified. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CALCFRAMERECT ΓöéOccurs when an application Γöé
- Γöé Γöéuses the WinCalcFrameRect Γöé
- Γöé Γöécall. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CALCVALIDRECTS ΓöéSent from WinSetWindowPos and Γöé
- Γöé ΓöéWinSetMultWindowPos to Γöé
- Γöé Γöédetermine which areas of a Γöé
- Γöé Γöéwindow will be preserved if a Γöé
- Γöé Γöéwindow is sized and which Γöé
- Γöé Γöéshould be redisplayed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CLOSE ΓöéSent to a frame window to Γöé
- Γöé Γöéindicate that the window is Γöé
- Γöé Γöébeing closed by the user. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéOccurs when the application Γöé
- Γöé Γöérequests creation of a window.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéOccurs when the application Γöé
- Γöé Γöérequests destruction of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéSets the enable state of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOVE ΓöéOccurs when a window with the Γöé
- Γöé Γöéstyle CS_MOVENOTIFY changes Γöé
- Γöé Γöéits absolute position. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéOccurs when a window needs Γöé
- Γöé Γöérepainting. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application Γöé
- Γöé Γöéqueries the window parameters.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application Γöé
- Γöé Γöésets or changes the window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SHOW ΓöéOccurs when a window's Γöé
- Γöé ΓöéWS_VISIBLE state is being Γöé
- Γöé Γöéchanged. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SIZE ΓöéOccurs when a window changes Γöé
- Γöé Γöéits size. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_WINDOWPOSCHANGED ΓöéSent to the window procedure Γöé
- Γöé Γöéof the window whose position Γöé
- Γöé Γöéis changed. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Window Data Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéData Structure ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCREATESTRUC ΓöéCreate window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWNDPARAMS ΓöéWindow parameters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 2. Messages and Message Queues ΓòÉΓòÉΓòÉ
-
- The OS/2 operating system uses messages and message queues to communicate with
- applications and the windows belonging to those applications. This chapter
- explains how to create and use messages and message queues in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 2.1. About Messages and Message Queues ΓòÉΓòÉΓòÉ
-
- Unlike traditional applications that take complete control of the computer's
- keyboard, mouse, and screen, PM applications must share these resources with
- other applications that are running at the same time. All applications run
- independently and rely on the operating system to help them manage shared
- resources. The operating system does this by controlling the operation of each
- application, communicating with each application when there is keyboard or
- mouse input or when an application must move and size its windows.
-
-
- ΓòÉΓòÉΓòÉ 2.1.1. Messages ΓòÉΓòÉΓòÉ
-
- A message is information, a request for information, or a request for an action
- to be carried out by a window in an application.
-
- The operating system, or an application, sends or posts a message to a window
- so that the window can use the information or respond to the request.
-
- There are three types of messages:
-
- o User-initiated
- o Application-initiated
- o System-initiated.
-
- A user-initiated message is the direct result of a user action, such as
- selecting a menu item or pressing a key. An application-initiated message is
- generated by one window in the application to communicate with another window.
- System-initiated messages are generated by the interface as the indirect result
- of a user action (for example, resizing a window) or as the direct result of a
- system event (such as creating a window).
-
- A message that requires an immediate response from a window is sent directly to
- the window by passing the message data as arguments to the window procedure.
- The window procedure carries out the request or lets the operating system carry
- out default processing for the message.
-
- A message that does not require an immediate response from a window is posted
- (the message data is copied) to the application's message queue. The message
- queue is a storage area that the application creates to receive and hold its
- posted messages. Then, the application can retrieve a message at the
- appropriate time, sending it to the addressed window for processing.
-
- Every message contains a message identifier, which is a 16-bit integer that
- indicates the purpose of the message. When a window processes a message, it
- uses the message identifier to determine what to do.
-
- Every message contains a window handle, which identifies the window the message
- is for. The window handle is important because most message queues and window
- procedures serve more than one window. The window handle ensures that the
- application forwards the message to the proper window.
-
- A message contains two message parameters-32-bit values that specify data or
- the location of data that a window uses when processing the message. The
- meaning and value of a message parameter depend on the message. A message
- parameter can contain an integer, packed bit flags, a pointer to a structure
- that contains additional data, and so forth. Some messages do not use message
- parameters and, typically, set the parameters to NULL. An application always
- checks the message identifier to determine how to interpret the message
- parameters.
-
- A queue message is a QMSG data structure that contains six data items,
- representing the window handle, message identifier, two message parameters,
- message time, and mouse-pointer position. The time and position are included
- because most queue messages are input messages, representing keyboard or mouse
- input from the user. The time and position also help the application identify
- the context of the message. The operating system posts a queue message by
- filling the QMSG structure and copying it to a message queue.
-
- A window message consists of the window handle, the message identifier, and two
- message parameters. A window message does not include the message time and
- mouse-pointer position, because most window messages are requests to perform a
- task that is not related to the current time or mouse-pointer position. The
- operating system sends a window message by passing these values, as individual
- arguments, to a window procedure.
-
-
- ΓòÉΓòÉΓòÉ 2.1.2. Message Queues ΓòÉΓòÉΓòÉ
-
- Every PM application must have a message queue. A message queue is the only
- means an application has to receive input from the keyboard or mouse. Only
- applications that create message queues can create windows.
-
- An application creates a message queue by using the WinCreateMsgQueue function.
- This function returns a handle that the application can use to access the
- message queue. After an application creates a message queue, the system posts
- messages intended for windows in the application to that queue. The
- application can retrieve queue messages by specifying the message-queue handle
- in the WinGetMsg function. It also can examine messages, without retrieving
- them, by using the WinPeekMsg function. When an application no longer needs the
- message queue, it can destroy the queue by using the WinDestroyMsgQueue
- function.
-
- One message queue serves all the windows in a thread. This means a queue can
- hold messages for several windows. A message specifies the handle of the window
- to which it belongs so the application can forward a message easily to the
- appropriate window. The message loop recognizes a NULL window handle and the
- message is processed within the message loop rather than passed to
- WinDispatchMessage. See the following figure for an example of an input-message
- processing loop.
-
- An application that has more than one thread can create more than one message
- queue. The system allows one message queue for each thread. A message queue
- created by a thread belongs to that thread and has no connection to other
- queues in the application. When an application creates a window in a given
- thread, the system associates the window with the message queue in that thread.
- The system then posts all subsequent messages intended for that window to that
- queue.
-
- Note: The recommended way to structure PM applications is to have at least two
- threads and two message queues. The first thread and message queue
- control all the user-interface windows, and the second thread and
- message queue control all the object windows.
-
- Several windows can use one message queue; it is important that the message
- queue be large enough to hold all messages that possibly can be posted to it.
- An application can set the size of the message queue when it creates the queue
- by specifying the maximum number of messages the queue can hold. The default
- maximum number of messages is 10.
-
- To minimize queue size, several types of posted messages are not actually
- stored in a message queue. Instead, the operating system keeps a record in the
- queue of the message being posted and combines any information contained in the
- message with information from previous messages. Timer, semaphore, and paint
- messages are handled this way. For example, if more than one WM_PAINT message
- is posted, the operating system combines the update regions for each into a
- single update region. Although there is no actual WM_PAINT message in the
- queue, the operating system constructs one WM_PAINT message with the single
- update region when an application uses the WinGetMsg function.
-
- The operating system handles mouse and keyboard input messages differently from
- the way it handles other types of messages. The operating system receives all
- keyboard and mouse events, such as keystrokes and mouse movements, into the
- system message queue. The operating system converts these events into messages
- and posts them, one at a time, to the appropriate application message queue.
- The application retrieves the messages from its queue and dispatches them to
- the appropriate window, which processes the messages.
-
- The operating system message queue usually is large enough to hold all input
- messages, even if the user types or moves the mouse very quickly. If the
- operating system message queue does run out of space, the system ignores the
- most recent keyboard input (usually by beeping to indicate the input is
- ignored) and collects mouse motions into a WM_MOUSEMOVE message.
-
- Every message queue has a corresponding MQINFO data structure that specifies
- the identifiers of the process and thread that own the message queue and gives
- a count of the maximum number of messages the queue can receive. An
- application can retrieve the structure by using the WinQueryQueueInfo function.
-
- A message queue also has a current status that indicates the types of messages
- currently in the queue. An application can retrieve the queue status by using
- the WinQueryQueueStatus function. An application also can use the WinPeekMsg
- function to examine the contents of a message queue. WinPeekMsg checks for a
- specific message or range of messages in the queue and gives the application
- the option of removing messages from the queue. An application can call the
- WinQueryQueueStatus function to determine the contents of the queue before
- calling the WinPeekMsg or WinGetMsg function to remove a message from the
- queue.
-
-
- ΓòÉΓòÉΓòÉ 2.1.3. Message Handling ΓòÉΓòÉΓòÉ
-
- To handle and process messages, an application can use a message loop and the
- window procedure. These terms are explained in the following two sections.
-
-
- ΓòÉΓòÉΓòÉ 2.1.3.1. Message Loops ΓòÉΓòÉΓòÉ
-
- Every application with a message queue is responsible for retrieving the
- messages from that queue. An application can do this by using a message loop,
- usually in the application's main function, that retrieves messages from the
- message queue and dispatches them to the appropriate windows. The message loop
- consists of two calls: one to the WinGetMsg function; the other to the
- WinDispatchMsg function. The message loop has the following form:
-
- HAB hab;
- QMSG qmsg;
-
- while (WinGetMsg(hab, &qmsg, NULL, 0, 0))
- WinDispatchMsg(hab, &qmsg);
-
- An application starts the message loop after creating the message queue and at
- least one application window. Once started, the message loop continues to
- retrieve messages from the message queue and to dispatch (send) them to the
- appropriate windows. WinDispatchMsg sends each message to the window specified
- by the window handle in the message.
-
- The following figure illustrates the typical routing of an input message
- through the operating system's and application's message loops.
-
- Mouse ΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇ Keystrokes
-
- ΓöîΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÉ
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ System
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Event (time ordered)
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Queue
- ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ
- Γöé
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÉ
- Γöé Input Γöé Scancode
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Router Γöé Translation
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- Γöé Message Γöé Accelerator
- Γöé Preprocessor Γöé Key Translation
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
- ΓöîΓöÇ ΓöÇΓöÇ ΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÉ
- ΓöîΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÉ
- Γöé Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Appl Priority Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ MssgQ Ordered
- Γöé Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
- ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ
- Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
-
- Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇWinGetMsgQ Γöé
- WinDispatchMsg
- Γöé Γöé Γöé Γöé
- App's Γöé
- Γöé Message Γöé Window Procedure Γöé
- Loop Γöé Γöé
- Γöé Γöé Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇreturn;
- ΓööΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÇ ΓöÇΓöÿ
-
- Input Message Processing Loop Only one message loop is needed for a message
- queue, even if the queue contains messages for more than one window. Each queue
- message is a QMSG structure that contains the handle of the window to which the
- message belongs. WinDispatchMsg always dispatches the message to the proper
- window. WinGetMsg retrieves messages from the queue in first-in, first-out
- (FIFO) order, so the messages are dispatched to windows in the same order they
- are received.
-
- If there are no messages in the queue, the operating system temporarily stops
- processing the WinGetMsg function until a message arrives. This means that CPU
- time that, otherwise, would be spent waiting for a message can be given to the
- applications (or threads) that do have messages in their queues.
-
- The message loop continues to retrieve and dispatch messages until WinGetMsg
- retrieves a WM_QUIT message. This message causes the function to return FALSE,
- terminating the loop. In most cases, terminating the message loop is the first
- step in terminating the application. An application can terminate its own loop
- by posting the WM_QUIT message in its own queue.
-
- An application can modify its message loop in a variety of ways. For example,
- it can retrieve messages from the queue without dispatching them to a window.
- This is useful for applications that post messages without specifying a window.
- (These messages apply to the application rather than a specific window; they
- have NULL window handles.) Also, an application can direct the WinGetMsg
- function to search for specific messages, leaving other messages in the queue.
- This is useful for applications that temporarily need to bypass the usual FIFO
- order of the message queue.
-
-
- ΓòÉΓòÉΓòÉ 2.1.3.2. Window Procedures ΓòÉΓòÉΓòÉ
-
- A window procedure is a function that receives and processes all input and
- requests for action sent to the windows. Every window class has a window
- procedure; every window created using that class uses that window procedure to
- respond to messages.
-
- The system sends a message to the window procedure by passing the message data
- as arguments. The window procedure takes the appropriate action for the given
- message. Most window procedures check the message identifier, then use the
- information specified by the message parameters to carry out the request. When
- it has completed processing the message, the window procedure returns a message
- result. Each message has a particular set of possible return values. The
- window procedure must return the appropriate value for the processing it
- performed.
-
- A window procedure cannot ignore a message. If it does not process a message,
- it must pass the message back to the operating system for default processing.
- The window procedure does this by calling the WinDefWindowProc function to
- carry out a default action and return the message result. Then, the window
- procedure must return this value as its own message result.
-
- A window procedure commonly processes messages for several windows. It uses
- the window handle specified in the message to identify the appropriate window.
- Most window procedures process just a few types of messages and pass the others
- on to the operating system by calling WinDefWindowProc.
-
-
- ΓòÉΓòÉΓòÉ 2.1.4. Posting and Sending Messages ΓòÉΓòÉΓòÉ
-
- Any application can post and send messages. Like the operating system, an
- application posts a message by copying it to a message queue. It sends a
- message by passing the message data as arguments to a window procedure. To
- post and send messages, an application uses the WinPostMsg and WinSendMsg
- functions.
-
- An application posts a message to notify a specific window to perform a task.
- The WinPostMsg function creates a QMSG structure for the message and copies the
- message to the message queue corresponding to the given window. The
- application's message loop eventually retrieves the message and dispatches it
- to the appropriate window procedure. For example, one message commonly posted
- is WM_QUIT. This message terminates the application by terminating the message
- loop.
-
- An application sends a message to cause a specific window procedure to carry
- out a task immediately. The WinSendMsg function passes the message to the
- window procedure corresponding to the given window. The function waits until
- the window procedure completes processing and then returns the message result.
- Parent and child windows often communicate by sending messages to each other.
- For example, a parent window that has an entry-field control as its child
- window can set the text of the control by sending a message to the child
- window. The control can notify the parent window of changes to the text
- (carried out by the user) by sending messages back to the parent window.
-
- Occasionally, an application might need to send or post a message to all
- windows in the system. For example, if the application changes a system value,
- it must notify all windows about the change by sending a WM_SYSVALUECHANGED
- message. An application can send or post messages to any number of windows by
- using the WinBroadcastMsg function. The options in WinBroadcastMsg determine
- whether the message is sent or posted and specify the windows that will receive
- the message.
-
- Any thread in the application can post a message to a message queue, even if
- the thread has no message queue of its own. However, only a thread that has a
- message queue can send a message. Sending a message between threads is
- relatively uncommon. For one reason, sending a message is costly in terms of
- system performance. If an application posts a message between threads, it is
- likely to be a semaphore message, which permits window procedures to manage a
- shared resource jointly.
-
- An application can post a message without specifying a window. If the
- application supplies a NULL window handle when it calls the WinPostMsg
- function, the function posts the message to the queue associated with the
- current thread. The application must process the message in the message loop.
- This is one way to create a message that applies to the entire application
- instead of to a specific window.
-
- A window procedure can determine whether it is processing a message sent by
- another thread by using the WinInSendMsg function. This is useful when message
- processing depends on the origin of the message.
-
- A common programming error is to assume that the WinPostMsg function always
- succeeds. It fails when the message queue is full. An application should
- check the return value of the WinPostMsg function to see whether the message
- was posted. In general, if an application intends to post many messages to the
- queue, it should set the message queue to an appropriate size when it creates
- the queue. The default message-queue size is 10 messages.
-
-
- ΓòÉΓòÉΓòÉ 2.1.5. Message Types ΓòÉΓòÉΓòÉ
-
- This section describes the three types of OS/2 messages:
-
- o System-defined
- o Application-defined
- o Semaphore.
-
-
- ΓòÉΓòÉΓòÉ 2.1.5.1. System-Defined Messages ΓòÉΓòÉΓòÉ
-
- There are many system-defined messages that are used to control the operations
- of applications and to provide input and other information for applications to
- process. The system sends or posts a system-defined message when it
- communicates with an application. An application also can send or post
- system-defined messages. Usually, applications use these messages to control
- the operation of control windows created by using preregistered window classes.
-
- Each system message has a unique message identifier and a corresponding
- symbolic constant. The symbolic constant, defined in the system header files,
- states the purpose of the message. For example, the WM_PAINT constant
- represents the paint message, which requests that a window paint its contents.
-
- The symbolic constants also specify the message category. System-defined
- messages can belong to several categories; the prefix identifies the type of
- window that can interpret and process the messages. The following table lists
- the prefixes and their related message categories:
-
- Message Categories
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéPrefix ΓöéMessage category Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_ ΓöéNotebook control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_ ΓöéButton control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBM_ ΓöéCombination-box control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_ ΓöéContainer control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_ ΓöéEntry-field control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_ ΓöéList-box control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_ ΓöéMultiple-line entry field control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_ ΓöéMenu control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBM_ ΓöéScroll-bar control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_ ΓöéSlider control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSM_ ΓöéStatic control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTBM_ ΓöéTitle-bar control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_ ΓöéValue set control Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ ΓöéGeneral window Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- General window messages cover a wide range of information and requests,
- including:
-
- o Mouse and keyboard-input
- o Menu- and dialog-input
- o Window creation and management
- o Dynamic data exchange (DDE).
-
-
- ΓòÉΓòÉΓòÉ 2.1.5.2. Application-Defined Messages ΓòÉΓòÉΓòÉ
-
- An application can create messages to use in its own windows. If an
- application does create messages, the window procedure that receives the
- messages must interpret them and provide the appropriate processing.
-
- The operating system reserves the message-identifier values in the range 0x0000
- through 0x0FFF (the value of WM_USER - 1) for system-defined messages.
- Applications cannot use these values for their private messages.
-
- Values in the range 0x1000 (the value of WM_USER) through 0xBFFF, however, are
- available for message identifiers, defined by an application, for use in that
- application.
-
- Warning: It is very important that applications do not broadcast messages in
- the 0x1000 through 0xBFFF range because of the risk of misinterpretation by
- other applications.
-
- Values in the range 0xC000 through 0xFFFF are reserved for message identifiers
- that an application defines and registers with the system atom table; these can
- be used in any application. Values above 0xFFFF (0x00010000 through
- 0xFFFFFFFF) are reserved for future use; applications must not use messages in
- this range.
-
-
- ΓòÉΓòÉΓòÉ 2.1.5.3. Semaphore Messages ΓòÉΓòÉΓòÉ
-
- A semaphore message provides a way of signaling, through the message queue, the
- end of an event. An application uses a semaphore message the same way it uses
- system semaphore functions-to coordinate events by passing signals. A
- semaphore message often is used in conjunction with system semaphores.
-
- There are four semaphore messages:
-
- WM_SEM1
- WM_SEM2
- WM_SEM3
- WM_SEM4.
-
- An application posts one of these messages to signal the end of a given event.
- The window that is waiting for the given event receives the semaphore message
- when the message loop retrieves and dispatches the message.
-
- Each semaphore message includes a bit flag that an application can use to
- uniquely identify the 32 possible semaphores for each semaphore message. The
- application passes the bit flag (with the appropriate bit set) as a message
- parameter with the message. The window procedure that receives the message
- then uses the bit flag to identify the semaphore.
-
- To save space, the system does not store semaphore messages in the message
- queue. Instead, it sets a record in the queue, indicating that the semaphore
- message has been received, and then combines the bit flag for the message with
- the bit flags from previous messages. When the window procedure eventually
- receives the message, the bit flag specifies each semaphore message posted
- since the last message was retrieved.
-
-
- ΓòÉΓòÉΓòÉ 2.1.6. Message Priorities ΓòÉΓòÉΓòÉ
-
- The WinGetMsg function retrieves messages from the message queue based on
- message priority. WinGetMsg retrieves messages with higher priority first. If
- it finds more than one message at a particular priority level, it retrieves the
- oldest message first. Messages have the following priorities:
-
- Message Priorities
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéPriority ΓöéMessage Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé1 ΓöéWM_SEM1 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé2 ΓöéMessages posted using WinPostMsg Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé3 ΓöéInput messages from the keyboard or mouse Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé4 ΓöéWM_SEM2 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé5 ΓöéWM_PAINT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé6 ΓöéWM_SEM3 Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé7 ΓöéWM_TIMER Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé8 ΓöéWM_SEM4 Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 2.1.7. Message Filtering ΓòÉΓòÉΓòÉ
-
- An application can choose specific messages to retrieve from the message queue
- (and ignore other messages) by specifying a message filter with the WinGetMsg
- or WinPeekMsg functions. The message filter is a range of message identifiers
- (specified by a first and last identifier), a window handle, or both. The
- WinGetMsg and WinPeekMsg functions use the message filter to select the
- messages to retrieve from the queue. Message filtering is useful if an
- application needs to search ahead in the message queue for messages that have a
- lower priority or that arrived in the queue later than other less important
- messages.
-
- Any application that filters messages must ensure that a message satisfying the
- message filter can be posted. For example, filtering for a WM_CHAR message in
- a window that does not receive keyboard input prevents the WinGetMsg function
- from returning. Some messages, such as WM_COMMAND, are generated from other
- messages; filtering for them also can prevent WinGetMsg from returning.
-
- To filter for mouse, button, and DDE messages, an application can use the
- following constants:
-
- WM_MOUSEFIRST and WM_MOUSELAST
- WM_BUTTONCLICKFIRST and WM_BUTTONCLICKLAST
- WM_DDE_FIRST and WM_DDE_LAST.
-
-
- ΓòÉΓòÉΓòÉ 2.2. Using Messages ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Create a message queue and message loop.
- o Examine the message queue.
- o Post and send messages between windows.
- o Broadcast a message to multiple windows.
- o Use message macros.
-
-
- ΓòÉΓòÉΓòÉ 2.2.1. Creating a Message Queue and Message Loop ΓòÉΓòÉΓòÉ
-
- An application needs a message queue and message loop to process messages for
- its windows. An application creates a message queue by using the
- WinCreateMsgQueue function. An application creates a message loop by using the
- WinGetMsg and WinDispatchMsg functions. The application must create and show
- at least one window after creating the queue but before starting the message
- loop. The following code fragment shows how to create a message queue and
- message loop:
-
-
- CreatingaMessageQueueandMessageLoop
-
- MRESULT EXPENTRY ClientWndProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2);
-
- HAB hab;
-
- int main(VOID)
- {
- HMQ hmq;
- QMSG qmsg;
- HWND hwndFrame, hwndClient;
- ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU |
- FCF_SIZEBORDER | FCF_MINMAX |
- FCF_SHELLPOSITION | FCF_TASKLIST;
-
- /* Initialize the application for Presentation Manager interface. */
- hab = WinInitialize(0);
-
- /* Create the application message queue. */
- hmq = WinCreateMsgQueue(hab, 0);
-
- /* Register the window class for your client window. */
- WinRegisterClass(hab, /* Anchor block handle */
- "MyClientClass", /* Class name */
- (PFNWP) ClientWndProc,/* Window procedure */
- CS_SIZEREDRAW, /* Class style */
- 0); /* Extra bytes to reserve */
-
- /* Create a main window. */
- hwndFrame = WinCreateStdWindow(
- HWND_DESKTOP, /* Parent window handle */
- WS_VISIBLE, /* Style of frame window */
- &flFrameFlags, /* Frame controls */
- "MyClientClass", /* Window class for client */
- (PSZ) NULL, /* No title-bar text */
- WS_VISIBLE, /* Style of client window */
- (HMODULE) NULL, /* Module handle for resources */
- 0, /* No resource identifier */
- &hwndClient); /* Pointer to client handle */
-
- /* Start the message loop. */
- while (WinGetMsg(hab, &qmsg, (HWND) NULL, 0, 0))
- WinDispatchMsg(hab, &qmsg);
-
- /*. Destroy the main window. */
- WinDestroyWindow(hwndFrame);
-
- /* Destroy the message queue. */
- WinDestroyMsgQueue(hmq);
-
- /* Terminate the application. */
- WinTerminate(hab);
- }
-
- Both the WinGetMsg and WinDispatchMsg functions take a pointer to a QMSG
- structure as a parameter. If a message is available, WinGetMsg copies it to
- the QMSG structure; WinDispatchMsg then uses the data in the structure as
- arguments for the window procedure.
-
- Occasionally, an application might need to process a message before dispatching
- it. For example, if a message is posted but the destination window is not
- specified (that is, the message contains a NULL window handle), the application
- must process the message to determine which window should receive the message.
- Then the WinDispatchMsg function can forward the message to the proper window.
- The following code fragment shows how the message loop can process messages
- that have NULL window handles:
-
-
- HAB hab;
- QMSG qmsg;
-
- while (WinGetMsg (hab, &qmsg, (HWND) NULL, 0, 0)) {
- if (qmsg.hwnd == NULL) {
- .
- . /* Process the message. */
- .
- }
- else
- WinDispatchMsg (hab, &qmsg);
- }
-
-
- ΓòÉΓòÉΓòÉ 2.2.2. Examining the Message Queue ΓòÉΓòÉΓòÉ
-
- An application can examine the contents of the message queue by using the
- WinPeekMsg or WinQueryQueueStatus function. It is useful to examine the queue
- if the application starts a lengthy operation that additional user input might
- affect, or if the application needs to look ahead in the queue to anticipate a
- response to user input.
-
- An application can use WinPeekMsg to check for specific messages in the message
- queue. This function is useful for extracting messages for a specific window
- from the queue. It returns immediately if there is no message in the queue.
- An application can use WinPeekMsg in a loop without requiring the loop to wait
- for a message to arrive. The following code fragment checks the queue for
- WM_CHAR messages:
-
- HAB hab;
- QMSG qmsg;
-
- if (WinPeekMsg(hab, &qmsg, (HWND) NULL, WM_CHAR, WM_CHAR, PM_NOREMOVE)){
- .
- . /* Process the message. */
- .
- }
-
- An application also can use the WinQueryQueueStatus function to check for
- messages in the queue. This function is very fast and returns information
- about the kinds of messages available in the queue and which messages have been
- posted recently. Most applications use this function in message loops that
- need to be as fast as possible.
-
-
- ΓòÉΓòÉΓòÉ 2.2.3. Posting a Message to a Window ΓòÉΓòÉΓòÉ
-
- An application can use the WinPostMsg function to post a message to a window.
- The message goes to the window's message queue. The following code fragment
- posts the WM_QUIT message:
-
- HWND hwnd;
-
- if (!WinPostMsg(hwnd, WM_QUIT, NULL, NULL)){
-
- /* Message was not posted. */
- }
-
- The WinPostMsg function returns FALSE if the queue is full, and the message
- cannot be posted.
-
-
- ΓòÉΓòÉΓòÉ 2.2.4. Sending a Message to a Window ΓòÉΓòÉΓòÉ
-
- An application can use the WinSendMsg function to send a message directly to a
- window. An application uses this function to send messages to child windows.
- For example, the following code fragment sends an LM_INSERTITEM message to
- direct a list-box control to add an item to the end of its list:
-
- HWND hwndListBox;
- static CHAR szWeekday[] = "Tuesday";
-
- WinSendMsg(hwndListBox,
- LM_INSERTITEM,
- (MPARAM)LIT_END,
- MPFROMP(szWeekday));
-
- WinSendMsg calls the window's window procedure and waits for it to handle the
- message and return a result. An application can send a message to any window
- in the system, as long as the application has the handle of the target window.
- The message queue does not store the message; however, the thread making the
- call must have a message queue.
-
-
- ΓòÉΓòÉΓòÉ 2.2.5. Broadcasting a Message ΓòÉΓòÉΓòÉ
-
- An application can send a message to multiple windows by using the
- WinBroadcastMsg function. Often this function is used to broadcast the
- WM_SYSVALUECHANGED message after an application changes a system value. The
- following code fragment shows how to broadcast this message to all frame
- windows in all applications:
-
- HWND hwnd;
-
- WinBroadcastMsg(
- hwnd, /* Window handle */
- WM_SYSVALUECHANGED, /* Message identifier */
- NULL, /* No message parameters */
- NULL,
- BMSG_FRAMEONLY | BMSG_POSTQUEUE); /* All frame windows */
-
- An application can broadcast messages to all windows, just frame windows, or
- just the windows in the application.
-
-
- ΓòÉΓòÉΓòÉ 2.2.6. Using Message Macros ΓòÉΓòÉΓòÉ
-
- The system header files define several macros that help create and interpret
- message parameters.
-
- One set of macros helps you construct message parameters. These macros are
- useful for sending and posting messages. For example, the following code
- fragment uses the MPFROMSHORT macro to convert a 16-bit integer into the 32-bit
- message parameter:
-
-
- HWND hwndButton;
-
- WinSendMsg(hwndButton, BM_SETCHECK, MPFROMSHORT(1), NULL);
-
- A second set of macros helps you extract values from a message parameter.
- These macros are useful for handling messages in a window procedure. The
- following code fragment determines whether the window receiving the
- WM_FOCUSCHANGE message is gaining or losing the keyboard focus. The fragment
- uses the SHORT1FROMMP macro to extract the focus-change flag, the SHORT2FROMMP
- macro to extract the focus flag, and the HWNDFROMMP macro to extract the window
- handle.
-
- USHORT fsFocusChange;
- MPARAM mp1, mp2;
- HWND hwndGainFocus;
-
-
- case WM_FOCUSCHANGE:
- fsFocusChange = SHORT2FROMMP(mp2); /* Gets focus-change flags */
- if (SHORT1FROMMP(mp2)) /* Gaining or losing focus? */
- hwndGainFocus = HWNDFROMMP(mp1);
-
- A third set of macros helps you construct a message result. These macros are
- useful for returning message results in a window procedure, as the following
- code fragment illustrates:
-
- return (MRFROM2SHORT(1, 2));
-
-
- ΓòÉΓòÉΓòÉ 2.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the functions and structures used with OS/2 messages and message
- queues.
-
- Commonly Used Message and Message Queue Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateMsgQueue ΓöéCreates a message queue. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDefDlgProc ΓöéInvokes the default dialog Γöé
- Γöé Γöéprocedure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDefWindowProc ΓöéInvokes the default window Γöé
- Γöé Γöéprocedure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDestroyMsgQueue ΓöéDestroys the message queue. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDispatchMsg ΓöéInvokes a window procedure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinGetMsg ΓöéGets a message from the thread's Γöé
- Γöé Γöémessage queue and returns msg when aΓöé
- Γöé Γöémessage conforming to the filtering Γöé
- Γöé Γöécriteria is available. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinPeekMsg ΓöéInspects the thread's message queue Γöé
- Γöé Γöéand returns to the application with Γöé
- Γöé Γöéor without a message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinPostMsg ΓöéPosts a message to the message queueΓöé
- Γöé Γöéassociated with the window defined Γöé
- Γöé Γöéby hwnd. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSendDlgItemMsg ΓöéSends a message to the dialog item Γöé
- Γöé Γöédefined by item in the dialog windowΓöé
- Γöé Γöéspecified by Dlg Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSendMsg ΓöéSends a message with identity Msgid Γöé
- Γöé Γöéto hwnd. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Seldom-Used Message and Message Queue Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinBroadcastMsg ΓöéBroadcasts a message to multiple Γöé
- Γöé Γöéwindows. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCallMsgFilter ΓöéCalls a message-filter hook. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinInSendMsg ΓöéDetermines whether the current Γöé
- Γöé Γöéthread is processing a message sent Γöé
- Γöé Γöéby another thread. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinPostQueueMsg ΓöéPosts a message to a message queue. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Almost-Never Used Message and Message Queue Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryMsgPos ΓöéReturns the pointer position, in Γöé
- Γöé Γöéscreen coordinates, when the last Γöé
- Γöé Γöémessage obtained from the current Γöé
- Γöé Γöémessage queue is posted. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryQueueInfo ΓöéReturns the information for the Γöé
- Γöé Γöéspecified queue. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryQueueStatus ΓöéReturns a code indicating the statusΓöé
- Γöé Γöéof the message queue associated withΓöé
- Γöé Γöéthe caller. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinRegisterUserMsg ΓöéRegisters a user message and definesΓöé
- Γöé Γöéits parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetClassMsgInterest ΓöéSets the message interest of a Γöé
- Γöé Γöémessage class. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetMsgInterest ΓöéSets a window's message interest. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetMsgMode ΓöéIndicates the mode for the Γöé
- Γöé Γöégeneration and processing of Γöé
- Γöé Γöémessages for the private window Γöé
- Γöé Γöéclass of an application. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinTranslateAccel ΓöéTranslates a WM_CHAR message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWaitMsg ΓöéWaits for a filtered message. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Message and Message Queue Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéHMQ ΓöéMessage-queue handle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMQINFO ΓöéMessage-queue information structure.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéQMSG ΓöéMessage structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 3. Window Classes ΓòÉΓòÉΓòÉ
-
- A window class determines which styles and which window procedure are given to
- a window when it is created. This chapter explains how a PM application
- creates and uses window classes.
-
-
- ΓòÉΓòÉΓòÉ 3.1. About Window Classes ΓòÉΓòÉΓòÉ
-
- Every window is a member of a window class. An application must specify a
- window class when it creates a window. Each window class has an associated
- window procedure that is used by all windows of the same class. The window
- procedure handles messages for all windows of that class and, therefore,
- controls the behavior and appearance of the window.
-
- A window class must be registered before an application can create a window of
- that class. Registering a window class associates a window procedure and class
- styles with a class name. When an application specifies the class name in a
- window-creation function such as WinCreateWindow, the system creates a window
- that uses the window procedure and styles associated with the class name.
-
- An application can register private classes or use preregistered public window
- classes.
-
-
- ΓòÉΓòÉΓòÉ 3.1.1. Private Window Classes ΓòÉΓòÉΓòÉ
-
- A private window class is any class registered within an application. An
- application registers a private class by calling the WinRegisterClass function.
- A private class cannot be shared with other applications. When an application
- terminates, the system removes any data associated with the application's
- private window classes.
-
- An application can register a private class anytime but, typically, does so as
- part of application initialization. To register a private class during
- application initialization, the application also must call WinInitialize and,
- usually, WinCreateMsgQueue before class registration.
-
- An application cannot de-register a private window class; it remains registered
- and available until the application terminates.
-
- When an application registers a private window class, it must supply the
- following information:
-
- o Class name
- o Class styles
- o Window procedure
- o Window data size.
-
-
- ΓòÉΓòÉΓòÉ 3.1.1.1. Class Name ΓòÉΓòÉΓòÉ
-
- The class name identifies the window class. The application uses this name in
- the window-creation functions to specify the class of the window being created.
- The class name can be a character string or an atom, and it must be unique
- within the application. The system checks as to whether a public class or a
- class already registered by the application has the same name. If the class
- name is not unique to that application, the system returns an error.
-
-
- ΓòÉΓòÉΓòÉ 3.1.1.2. Class Styles ΓòÉΓòÉΓòÉ
-
- Each window class has one or more values, called class styles, that tell the
- system which initial window styles to give a window created with that class.
- An application sets the class styles for a private window class when it
- registers the class. Once a class is registered, the application cannot change
- the styles.
-
- An application can specify one or more of the following class styles in the
- WinRegisterClass function, combining them as necessary by using the bitwise OR
- operator:
-
- Class Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_CLIPCHILDRENΓöéPrevents a window from painting over its Γöé
- Γöé Γöéchild windows, but increases the time Γöé
- Γöé Γöénecessary to calculate the visible region. Γöé
- Γöé ΓöéThis style usually is not necessary, because Γöé
- Γöé Γöéif the parent and child windows overlap and Γöé
- Γöé Γöéare both invalidated, the operating system Γöé
- Γöé Γöédraws the parent window before drawing the Γöé
- Γöé Γöéchild window. If the child window is Γöé
- Γöé Γöéinvalidated independently of the parent Γöé
- Γöé Γöéwindow, the system redraws only the child Γöé
- Γöé Γöéwindow. If the update region of the parent Γöé
- Γöé Γöéwindow does not intersect the child window, Γöé
- Γöé Γöédrawing the parent window causes the child Γöé
- Γöé Γöéwindow to be redrawn. This style is useful toΓöé
- Γöé Γöéprevent a child window containing a complex Γöé
- Γöé Γöégraphic from being redrawn unnecessarily. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_CLIPSIBLINGSΓöéPrevents a window from painting over its Γöé
- Γöé Γöésibling windows. This style protects sibling Γöé
- Γöé Γöéwindows but increases the time necessary to Γöé
- Γöé Γöécalculate the visible region. This style is Γöé
- Γöé Γöéappropriate for windows that overlap and haveΓöé
- Γöé Γöéthe same parent window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_FRAME ΓöéIdentifies the window as a frame window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_HITTEST ΓöéDirects the operating system to send Γöé
- Γöé ΓöéWM_HITTEST messages to the window whenever Γöé
- Γöé Γöéthe mouse pointer moves in the window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_MOVENOTIFY ΓöéDirects the system to send WM_MOVE messages Γöé
- Γöé Γöéto the window whenever the user moves the Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_PARENTCLIP ΓöéExtends a window's visible region to include Γöé
- Γöé Γöéthat of its parent window. This style Γöé
- Γöé Γöésimplifies the calculation of the child Γöé
- Γöé Γöéwindow's visible region but, potentially, is Γöé
- Γöé Γöédangerous, because the parent window's Γöé
- Γöé Γöévisible region is usually larger than the Γöé
- Γöé Γöéchild window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_SAVEBITS ΓöéSaves the screen area under a window as a bitΓöé
- Γöé Γöémap. When the user hides or moves the window,Γöé
- Γöé Γöéthe system restores the image by copying the Γöé
- Γöé Γöébits; there is no need to add the area to theΓöé
- Γöé Γöéuncovered window's update region. This style Γöé
- Γöé Γöécan improve system performance, but also can Γöé
- Γöé Γöéconsume a great deal of memory. It is Γöé
- Γöé Γöérecommended only for transient windows such Γöé
- Γöé Γöéas menus and dialog windows-not for main Γöé
- Γöé Γöéapplication windows. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_SIZEREDRAW ΓöéCauses the window to receive a WM_PAINT Γöé
- Γöé Γöémessage and be completely invalidated Γöé
- Γöé Γöéwhenever the window is resized, even if it isΓöé
- Γöé Γöémade smaller. (Typically, only the uncovered Γöé
- Γöé Γöéarea of a window is invalidated when a windowΓöé
- Γöé Γöéis resized.) This class style is useful when Γöé
- Γöé Γöéan application scales graphics to fill the Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCS_SYNCPAINT ΓöéCauses the window to receive WM_PAINT Γöé
- Γöé Γöémessages immediately after a part of the Γöé
- Γöé Γöéwindow becomes invalid. Without this style, Γöé
- Γöé Γöéthe window receives WM_PAINT messages only ifΓöé
- Γöé Γöéno other message is waiting to be processed. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 3.1.1.3. Window Procedure ΓòÉΓòÉΓòÉ
-
- The window procedure for a window class processes all messages sent or posted
- to all windows of that class. It is the chief component of the window class
- because it controls the appearance and behavior of each window created with the
- class. Window procedures are shared by all windows of a class, so an
- application must ensure that no conflicts arise when two windows of the same
- class attempt to access the same global data. In other words, the window
- procedure must protect global data and other shared resources.
-
-
- ΓòÉΓòÉΓòÉ 3.1.1.4. Window Data Size ΓòÉΓòÉΓòÉ
-
- The system creates a window data structure for each window, which includes
- extra space that an application can use to store additional data about a
- window. An application specifies the number of extra bytes to allocate in the
- WinRegisterClass function. All windows of the same class have the same amount
- of window data space.
-
- An application can store window data in a window's data structure by using the
- WinSetWindowUShort and WinSetWindowULong functions. It can retrieve data by
- using the WinQueryWindowUShort and WinQueryWindowULong functions.
-
-
- ΓòÉΓòÉΓòÉ 3.1.1.5. Custom Window Styles ΓòÉΓòÉΓòÉ
-
- An application that registers a window class also can support its own set of
- styles for windows of that class. Standard window styles-for example,
- WS_VISIBLE and WS_SYNCPAINT-still apply to these windows. A window style is a
- 32-bit integer, and only the high 16 bits are used for the standard window
- styles; an application can use the low 16 bits for custom styles specific to a
- window class.
-
- The operating system has unique window styles for all preregistered window
- classes. Styles such as FS_BORDER and BS_PUSHBUTTON are processed by the
- window procedure for the corresponding class. This means that an application
- can build the support for its own window styles into the window procedure for
- its private class. A window style designed for one window class will not work
- with another window class.
-
-
- ΓòÉΓòÉΓòÉ 3.1.2. Public Window Classes ΓòÉΓòÉΓòÉ
-
- Public window classes are registered during system initialization. Their
- window procedures are in dynamic link libraries. Therefore, to use a public
- window class, an application need not register it. Nor does the application
- need to import the window procedure for a public window class because the
- system resolves references to the window procedure.
-
- An application cannot use a public window class name when it registers a
- private window class.
-
-
- ΓòÉΓòÉΓòÉ 3.1.2.1. System-Defined Public Window Classes ΓòÉΓòÉΓòÉ
-
- The system provides a number of public window classes that support menus, frame
- windows, control windows, and dialog windows. An application can create a
- window of a system-defined public window class by specifying one of the
- following class name constants in a call to WinCreateWindow:
-
- Public Window Classes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéClass Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_BUTTON ΓöéConsists of buttons and boxes the user can Γöé
- Γöé Γöéselect by clicking the pointing device or Γöé
- Γöé Γöéusing the keyboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_COMBOBOX ΓöéCreates a combination-box control, which Γöé
- Γöé Γöécombines a list-box control and an Γöé
- Γöé Γöéentry-field control. It enables the user to Γöé
- Γöé Γöéenter data either by typing in the entry Γöé
- Γöé Γöéfield or by choosing from the list in the Γöé
- Γöé Γöélist box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_CONTAINER ΓöéCreates a control in which the user can groupΓöé
- Γöé Γöéobjects in a logical manner. A container canΓöé
- Γöé Γöédisplay those objects in various formats or Γöé
- Γöé Γöéviews. The container control supports drag Γöé
- Γöé Γöéand drop so the user can place information inΓöé
- Γöé Γöéa container by simply dragging and dropping. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_ENTRYFIELD ΓöéConsists of a single line of text that the Γöé
- Γöé Γöéuser can edit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_FRAME ΓöéA composite window class that can contain Γöé
- Γöé Γöéchild windows of many of the other window Γöé
- Γöé Γöéclasses. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_LISTBOX ΓöéPresents a list of text items from which the Γöé
- Γöé Γöéuser can make selections. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_MENU ΓöéPresents a list of items that can be Γöé
- Γöé Γöédisplayed horizontally as menu bars, or Γöé
- Γöé Γöévertically as pull-down menus. Usually menusΓöé
- Γöé Γöéare used to provide a command interface to Γöé
- Γöé Γöéapplications. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_NOTEBOOK ΓöéCreates a control for the user that is Γöé
- Γöé Γöédisplayed as a number of pages. The top pageΓöé
- Γöé Γöéis visible, and the others are hidden, with Γöé
- Γöé Γöétheir presence being indicated by a visible Γöé
- Γöé Γöéedge on each of the back pages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SCROLLBAR ΓöéConsists of window scroll bars that let the Γöé
- Γöé Γöéuser scroll the contents of the associated Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SLIDER ΓöéCreates a control that is usable for Γöé
- Γöé Γöéproducing approximate (analog) values or Γöé
- Γöé Γöéproperties. Scroll bars were used for this Γöé
- Γöé Γöéfunction in the past, but the slider providesΓöé
- Γöé Γöéa more flexible method of achieving the same Γöé
- Γöé Γöéresult, with less programming effort. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SPINBUTTON ΓöéCreates a control that presents itself to theΓöé
- Γöé Γöéuser as a scrollable ring of choices, giving Γöé
- Γöé Γöéthe user quick access to the data. The user Γöé
- Γöé Γöéis presented only one item at a time, so the Γöé
- Γöé Γöéspin button should be used with data that is Γöé
- Γöé Γöéintuitively related. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_STATIC ΓöéSimple display items that do not respond to Γöé
- Γöé Γöékeyboard or pointing device events. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_TITLEBAR ΓöéDisplays the window title or caption and letsΓöé
- Γöé Γöéthe user move the window's owner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_VALUESET ΓöéCreates a control similar in function to Γöé
- Γöé Γöéradio buttons but provides additional Γöé
- Γöé Γöéflexibility to display graphical, textual, Γöé
- Γöé Γöéand numeric formats. The values set with Γöé
- Γöé Γöéthis control are mutually exclusive. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Each system-defined public window class has a corresponding set of window
- styles that an application can use to customize a window of that class. For
- example, a window created with the WC_BUTTON class has styles that include
- BS_PUSHBUTTON and BS_CHECKBOX. Window styles enable you to customize aspects
- of a window's behavior and appearance. The application specifies the window
- styles in the WinCreateWindow function.
-
-
- ΓòÉΓòÉΓòÉ 3.1.2.2. Custom Public Window Classes ΓòÉΓòÉΓòÉ
-
- An application can create a custom public window class, but it must do so
- during system initialization. Only the shell can register a public window
- class, and it can do so only when the system starts. Registering a public
- window class requires a special load entry in the os2.ini file. That entry
- instructs the shell to load a dynamic link library whose initialization routine
- registers the window class. Custom public window classes must be registered
- using WinRegisterClass and must have the class style CS_PUBLIC. If a custom
- public window class registered this way has the same name as an existing public
- window class, the custom class replaces the original class.
-
- If a dynamic link library replaces an existing public window class, the library
- can save the address of the original window procedure and use the address to
- subclass the original window class. The dynamic link library retrieves the
- original window procedure address using the WinQueryClassInfo function. The
- custom window procedure then passes unprocessed messages to the original window
- procedure instead of calling WinDefWindowProc.
-
- When subclassing a public window class, the custom public window procedure must
- not make the window data size smaller than the original window data size,
- because all public window classes that the operating system defines use 4 extra
- bytes for storing a pointer to custom window data. This size is guaranteed
- only for public window classes defined by the operating system dynamic link
- libraries.
-
-
- ΓòÉΓòÉΓòÉ 3.1.3. Class Data ΓòÉΓòÉΓòÉ
-
- An application can examine public window class data by using the
- WinQueryClassInfo and WinQueryClassName functions. An application retrieves
- the name of the class for a given window by using the WinQueryClassName
- function. If the window is one of the preregistered public window classes, the
- name returned is in the form #nnnnn, where nnnnn is up to 5 digits,
- representing the value of the window class constant. Using this window class
- name, the application can call WinQueryClassInfo to retrieve the window class
- data. WinQueryClassInfo copies the class style, window procedure address, and
- window data size to a CLASSINFO data structure.
-
-
- ΓòÉΓòÉΓòÉ 3.2. Using Window Classes ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Register a private window class.
- o Register an imported window procedure.
-
-
- ΓòÉΓòÉΓòÉ 3.2.1. Registering a Private Window Class ΓòÉΓòÉΓòÉ
-
- An application can register a private window class at any time by using the
- WinRegisterClass function. You must define the window procedure in the
- application, choose a unique name, and set the window styles for the class.
-
- The following code fragment shows how to register the window class name
- "MyPrivateClass":
-
-
- MRESULT EXPENTRY ClientWndProc(HWND hwnd,ULONG msg,MPARAM mp1, MPARAM mp2);
-
- HAB hab;
-
- WinRegisterClass(hab, /* Anchor block handle */
- "MyPrivateClass", /* Name of class being registered */
- ClientWndProc, /* Window procedure for class */
- CS_SIZEREDRAW | /* Class style */
- CS_HITTEST, /* Class style */
- 0); /* Extra bytes to reserve */
-
-
- ΓòÉΓòÉΓòÉ 3.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the operating system functions and the structure used with window
- classes.
-
- Window Class Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryClassInfo ΓöéReturns window class information. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryClassName ΓöéCopies, into a buffer, the window Γöé
- Γöé Γöéclass name as a null-terminated Γöé
- Γöé Γöéstring. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinRegisterClass ΓöéRegisters a window class. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSubclassWindow ΓöéSubclasses the indicated window by Γöé
- Γöé Γöéreplacing its window procedure with Γöé
- Γöé Γöéanother window procedure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Window Class Structure
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCLASSINFO ΓöéClass-information structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 4. Window Procedures ΓòÉΓòÉΓòÉ
-
- Windows have an associated window procedure-a function that processes all
- messages sent or posted to a window. Every aspect of a window's appearance and
- behavior depends on the window procedure's response to the messages. This
- chapter explains how window procedures function, in general, and describes the
- default window procedure.
-
-
- ΓòÉΓòÉΓòÉ 4.1. About Window Procedures ΓòÉΓòÉΓòÉ
-
- Every window belongs to a window class that determines which window procedure a
- particular window uses to process its messages. All windows of the same class
- use the same window procedure. For example, the operating system defines a
- window procedure for the frame window class (WC_FRAME), and all frame windows
- use that window procedure.
-
- An application typically defines at least one new window class and an
- associated window procedure. Then, the application can create many windows of
- that class, all of which use the same window procedure. This means that the
- same piece of code can be called from several sources simultaneously;
- therefore, you must be careful when modifying shared resources from a window
- procedure.
-
- Dialog procedures have the same structure and function as window procedures.
- The primary difference between a dialog procedure and a window procedure is the
- absence of a client window in the dialog procedure; that is, the controls in a
- dialog procedure are the immediate child windows of the frame, whereas the
- controls in a normal window are the grandchildren of the frame. This makes
- significant differences in the code between the two; for example,
- WinSendDlgItemMsg does not work from a client window if you pass the client
- window handle as the first parameter.
-
-
- ΓòÉΓòÉΓòÉ 4.1.1. Structure of a Window Procedure ΓòÉΓòÉΓòÉ
-
- A window procedure is a function that takes 4 arguments and returns a 32-bit
- pointer. The arguments of a window procedure consist of a window handle, a
- ULONG message identifier, and two arguments, called message parameters, that
- are declared with the MPARAM data type. The system defines an MPARAM as a
- 32-bit pointer to a VOID data type (a generic pointer). The message parameters
- actually might contain any of the standard data types. The message parameters
- are interpreted differently, depending on the value of the message identifier.
- OS/2 2.0 includes several macros that enable the application to cast the
- information from the MPARAM values into the actual data type. SHORT1FROMMP,
- for example, extracts a 16-bit value from a 32-bit MPARAM.
-
- The window-procedure arguments are described in the following table:
-
- Window Procedure Arguments
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéArgument ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöéhwnd ΓöéHandle of the window receiving the message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöémsg ΓöéMessage identifier. The message will Γöé
- Γöé Γöécorrespond to one of the predefined constantsΓöé
- Γöé Γöé(for example, WM_CREATE) defined in the Γöé
- Γöé Γöésystem include files or be an Γöé
- Γöé Γöéapplication-defined message identifier. The Γöé
- Γöé Γöévalue of an application-defined message Γöé
- Γöé Γöéidentifier must be greater than the value of Γöé
- Γöé ΓöéWM_USER, and less than or equal to 0xffff. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöémp1,mp2 ΓöéMessage parameters. Their interpretation Γöé
- Γöé Γöédepends on the particular message. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The return value of a window procedure is defined as an MRESULT data type. The
- interpretation of the return value depends on the particular message. Consult
- the description of each message to determine the appropriate return value.
-
-
- ΓòÉΓòÉΓòÉ 4.1.2. Default Window Procedure ΓòÉΓòÉΓòÉ
-
- All windows in the system share certain fundamental behavior, defined in the
- default window-procedure function, WinDefWindowProc. The default window
- procedure provides the minimal functionality for a window. An
- application-defined window procedure should pass any messages it does not
- process to WinDefWindowProc for default processing.
-
-
- ΓòÉΓòÉΓòÉ 4.1.3. Window-Procedure Subclassing ΓòÉΓòÉΓòÉ
-
- Subclassing enables an application to intercept and process messages sent or
- posted to a window before that window has a chance to process them.
- Subclassing most often is used to add functionality to a particular window or
- to alter a window's default behavior.
-
- An application subclasses a window by using the WinSubclassWindow function to
- replace the window's original window procedure with an application-defined
- window procedure. Thereafter, the new window procedure processes any messages
- that are sent or posted to the window. If the new window procedure does not
- process a particular message, it must pass the message to the original window
- procedure, not to WinDefWindowProc, for default processing.
-
-
- ΓòÉΓòÉΓòÉ 4.2. Using Window Procedures ΓòÉΓòÉΓòÉ
-
- This section explains how to:
-
- o Design a window procedure
- o Associate a window procedure with a window class
- o Subclass a window.
-
-
- ΓòÉΓòÉΓòÉ 4.2.1. Designing a Window Procedure ΓòÉΓòÉΓòÉ
-
- The following code fragment shows the structure of a typical window procedure
- and how to use the message argument in a switch statement, with individual
- messages handled by separate case statements. Notice that each case returns a
- specific value for each message. For messages that it does not handle itself,
- the window procedure calls WinDefWindowProc.
-
- MRESULT ClientWndProc(
- HWND hwnd,
- ULONG msg,
- MPARAM mp1,
- MPARAM mp2)
- {
- /* Define local variables here, if required. */
- switch (msg) {
- case WM_CREATE:
-
- /* Initialize private window data. */
- return (MRESULT) FALSE;
-
- case WM_PAINT:
-
- /* Paint the window. */
- return 0;
-
- case WM_DESTROY:
-
- /* Clean up private window data. */
- return 0;
-
- default:
- break;
- }
- return WinDefWindowProc (hwnd, msg, mp1, mp2);
- }
-
- A dialog window procedure does not receive the WM_CREATE message; however, it
- does receive a WM_INITDLG message when all of its control windows have been
- created.
-
- At the very least, a window procedure should handle the WM_PAINT message to
- draw itself. Typically, it should handle mouse and keyboard messages as well.
- Consult the descriptions of individual messages to determine whether your
- window procedure should handle them.
-
- An application can call WinDefWindowProc as part of the processing of a
- message. In such a case, the application can modify the message parameters
- before passing the message to WinDefWindowProc or can continue with the default
- processing after performing its own operations.
-
-
- ΓòÉΓòÉΓòÉ 4.2.2. Associating a Window Procedure with a Window Class ΓòÉΓòÉΓòÉ
-
- To associate a window procedure with a window class, an application must pass a
- pointer to that window procedure to the WinRegisterClass function. Once an
- application has registered the window procedure, the procedure automatically is
- associated with each new window created with that class.
-
- The following code fragment shows how to associate the window procedure in the
- previous example with a window class:
-
- HAB hab;
- CHAR szClientClass[] = "My Window Class";
-
- WinRegisterClass(hab, /* Anchor-block handle */
- szClientClass, /* Class name */
- ClientWndProc, /* Pointer to procedure */
- CS_SIZEREDRAW, /* Class style */
- 0); /* Window data */
-
-
- ΓòÉΓòÉΓòÉ 4.2.3. Subclassing a Window ΓòÉΓòÉΓòÉ
-
- To subclass a window, an application calls the WinSubclassWindow function,
- specifying the handle of the window to subclass and a pointer to the new window
- procedure. The WinSubclassWindow function returns a pointer to the original
- window procedure; the application can use this pointer to pass unprocessed
- messages to the original procedure.
-
- The following code fragment subclasses a push button control window. The new
- window procedure generates a beep whenever the user clicks the push button.
-
- PFNWP pfnPushBtn;
- CHAR szCancel[] = "Cancel";
- HWND hwndClient;
- HWND hwndPushBtn;
- .
- .
- .
-
- /* Create a push button control. */
- hwndPushBtn = WinCreateWindow(
- hwndClient, /* Parent-window handle */
- WC_BUTTON, /* Window class */
- szCancel, /* Window text */
- WS_VISIBLE | /* Window style */
- WS_SYNCPAINT | /* Window style */
- BS_PUSHBUTTON, /* Button style */
- 50, 50, /* Physical position */
- 70, 30, /* Width and height */
- hwndClient, /* Owner-window handle */
- HWND_TOP, /* Z-order position */
- 1, /* Window identifier */
- NULL, /* No control data */
- NULL); /* No presentation parameters */
-
- /* Subclass the push button control. */
- pfnPushBtn = WinSubclassWindow(hwndPushBtn,
- SubclassPushBtnProc);
- .
- .
- .
- }
- /* This procedure subclasses the push button. */
- MRESULT EXPENTRY SubclassPushBtnProc(HWND hwnd,ULONG msg,MPARAM mp1, MPARAM mp2)
- {
- switch (msg) {
-
- /* Beep when the user clicks the push button. */
- case WM_BUTTON1DOWN:
- DosBeep(1000, 250);
- break;
-
- default:
- break;
- }
-
- /* Pass all messages to the original window procedure. */
- return (MRESULT) pfnPushBtn(hwnd, msg, mp1, mp2);
- }
-
-
- ΓòÉΓòÉΓòÉ 4.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the window-procedure functions and messages processed by the
- default window procedure.
-
- Window Procedure Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDefDlgProc ΓöéThe default dialog procedure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDefWindowProc ΓöéThe default window procedure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinRegisterClass ΓöéRegisters a window class. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSubclassWindow ΓöéSubclasses the indicated window by Γöé
- Γöé Γöéreplacing its window procedure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Default Window Procedure Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéOccurs when the user presses button Γöé
- Γöé Γöé1 of the pointing device twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépointer button 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DBLCLK ΓöéOccurs when the user presses button Γöé
- Γöé Γöé2 of the pointing device twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 2. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépointer button 2. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DBLCLK ΓöéOccurs when the user presses button Γöé
- Γöé Γöé3 of the pointing device twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 3. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépointer button 3. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CALCVALIDRECTS ΓöéSent to determine which areas of a Γöé
- Γöé Γöéwindow can be preserved if a window Γöé
- Γöé Γöéis sized and which can be Γöé
- Γöé Γöéredisplayed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéOccurs when the user presses a key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CLOSE ΓöéSent to a frame window to indicate Γöé
- Γöé Γöéthat the window is being closed by Γöé
- Γöé Γöéthe user. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to a control's owner window Γöé
- Γöé Γöéwhen the pointer moves over the Γöé
- Γöé Γöécontrol window, allowing the user toΓöé
- Γöé Γöéset the pointer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DDE_INITIATE ΓöéSent by an application to one or Γöé
- Γöé Γöémore other applications to request Γöé
- Γöé Γöéinitiation of a conversation. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DDE_INITIATEACK ΓöéSent by a server application in Γöé
- Γöé Γöéresponse to a WM_DDE_INITIATE Γöé
- Γöé Γöémessage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_FOCUSCHANGE ΓöéOccurs when the focus window is Γöé
- Γöé Γöéchanged. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HELP ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner, or when a key stroke has beenΓöé
- Γöé Γöétranslated into a WM_HELP by an Γöé
- Γöé Γöéaccelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HITTEST ΓöéSent to determine which window is Γöé
- Γöé Γöéassociated with an input from the Γöé
- Γöé Γöépointing device. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MENUSELECT ΓöéOccurs when a menu item is selected.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéOccurs when the pointing device Γöé
- Γöé Γöépointer moves. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéOccurs when a window needs Γöé
- Γöé Γöérepainting. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé ΓöéDBCS conversion. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYFOCUSCHAIN ΓöéRequests the handle of a window in Γöé
- Γöé Γöéthe focus chain. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYFRAMECTLCOUNT ΓöéSent to the frame window in responseΓöé
- Γöé Γöéto receipt of a WM_SIZE or Γöé
- Γöé ΓöéWM_UPDATEFRAME message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe window parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TIMER ΓöéPosted when a timer times out. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TRANSLATEACCEL ΓöéSent to the focus window when a Γöé
- Γöé ΓöéWM_CHAR message occurs. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 5. Mouse and Keyboard Input ΓòÉΓòÉΓòÉ
-
- An OS/2 Presentation Manager application can accept input from both a mouse (or
- other pointing device) and the keyboard. This chapter explains how these input
- events should be received and processed.
-
-
- ΓòÉΓòÉΓòÉ 5.1. About Mouse and Keyboard Input ΓòÉΓòÉΓòÉ
-
- Only one window at a time can receive keyboard input, and only one window at a
- time can receive mouse input; but they do not have to be the same window. All
- keyboard input goes to the window with the input focus, and, normally, all
- mouse input goes to the window under the mouse pointer.
-
-
- ΓòÉΓòÉΓòÉ 5.1.1. System Message Queue ΓòÉΓòÉΓòÉ
-
- The operating system routes all keystrokes and mouse input to the system
- message queue, converting these input events into messages, and posts them, one
- at a time, to the proper application-defined message queues. An application
- retrieves messages from its queue and dispatches them to the appropriate window
- procedures, which process the messages.
-
- Mouse and keyboard input events in the system message queue are strictly
- ordered so that a new event cannot be processed until all previous events are
- fully processed: the system cannot determine the destination window of an input
- event until then. For example, if a user types a command in one window, clicks
- the mouse to activate another window, then types a command in the second
- window, the destination of the second command depends on how the application
- handles the mouse click. The second command would go to the second window only
- if that window became active as a result of the mouse click.
-
- It is important for an application to process all messages quickly to avoid
- slowing user interaction with the system. A message must be responded to
- immediately in the current thread, but the processing it initiates should be
- done asynchronously in another thread that has no windows in the desktop tree.
-
- OS/2 can display multiple windows belonging to several applications at the same
- time. To manage input among these windows, the system uses the concepts of
- window activation and keyboard focus.
-
-
- ΓòÉΓòÉΓòÉ 5.1.2. Window Activation ΓòÉΓòÉΓòÉ
-
- Although the operating system can display windows from many different
- applications simultaneously during a PM session, the user can interact with
- only one application at a time-the active application. The other applications
- continue to run, but they cannot receive user input until they become active.
-
- To enable the user to easily identify the active application, the system
- activates all frames in the tree between HWND_DESKTOP and the window with input
- focus. That is, the system positions the active frame window above all other
- top-level windows on the screen. If the active window is a standard frame
- window, the window's title bar and sizing border are highlighted.
-
- The user can control which application is active by clicking on a window or by
- pressing the Alt+Tab or Alt+Esc key combinations. An application can set the
- active frame window by calling WinSetActiveWindow; it also can obtain the
- handle of the active frame window by using WinQueryActiveWindow.
-
- When one window is deactivated and another activated, the system sends a
- WM_ACTIVATE message, first to the window being deactivated, then to the window
- being activated. The fActive parameter of the WM_ACTIVATE message is set to
- FALSE for the window being deactivated and set to TRUE for the window being
- activated. An application can use this message to track the activation state
- of a client window.
-
-
- ΓòÉΓòÉΓòÉ 5.1.3. Keyboard Focus ΓòÉΓòÉΓòÉ
-
- The keyboard focus is a temporary attribute of a window; the window that has
- the keyboard focus receives all keyboard input until the focus changes to a
- different window. The system converts keyboard input events into WM_CHAR
- messages and posts them to the message queue of the window that has the
- keyboard focus.
-
- An application can set the keyboard focus to a particular window by calling
- WinSetFocus. If the application does not use WinSetFocus to explicitly set the
- keyboard-focus window, the system sets the focus to the active frame window.
-
- The following events occur when an application uses WinSetFocus to shift the
- keyboard focus from one window (the original window) to another (the new
- window):
-
- 1. The system sends the original window a WM_SETFOCUS message (with the fFocus
- parameter set to FALSE), indicating that that window has lost the keyboard
- focus.
-
- 2. The system then sends the original window a WM_SETSELECTION message,
- indicating that the window should remove the highlight from the current
- selection.
-
- 3. If the original (frame) window is being deactivated, the system sends it a
- WM_ACTIVATE message (with the fActive parameter set to FALSE), indicating
- that the window is no longer active.
-
- 4. The system then sends the new application a WM_ACTIVATE message (with
- fActive set to TRUE), indicating that the new application is now active.
-
- 5. If the new (main) window is being activated, the system sends it a
- WM_ACTIVATE message (with fActive set to TRUE), indicating that the main
- window is now active.
-
- 6. The system sends the new window a WM_SETSELECTION message, indicating that
- the window should highlight the current selection.
-
- 7. Finally, the system sends the new window a WM_SETFOCUS message (with fFocus
- set to TRUE), indicating that the new window has the keyboard focus.
-
- If, while processing a WM_SETFOCUS message, an application calls
- WinQueryActiveWindow, that function returns the handle of the previously-active
- window until the application establishes a new active window. Similarly, if
- the application, while processing WM_SETFOCUS, calls WinQueryFocus, that
- function returns the handle of the previous keyboard-focus window until the
- application establishes a new keyboard-focus window. In other words, even
- though the system has sent WM_ACTIVATE and WM_SETFOCUS messages (with the
- fActive and fFocus parameters set to FALSE) to the previous windows, those
- windows are considered the active and focus windows until the system
- establishes new active and focus windows.
-
- If the application calls WinSetFocus while processing a WM_ACTIVATE message,
- the system does not send a WM_SETFOCUS message (with fFocus set to FALSE),
- because no window has the focus.
-
- A client window receives a WM_ACTIVATE message when its parent frame window is
- being activated or deactivated. The activation or deactivation message usually
- is followed by a WM_SETFOCUS message that specifies whether the client window
- is gaining or losing the keyboard focus. Therefore, if the client window needs
- to change the keyboard focus, it should do so during the WM_SETFOCUS message,
- not during the WM_ACTIVATE message.
-
-
- ΓòÉΓòÉΓòÉ 5.1.4. Keyboard Messages ΓòÉΓòÉΓòÉ
-
- The system sends keyboard input events as WM_CHAR messages to the message queue
- of the keyboard-focus window. If no window has the keyboard focus, the system
- posts WM_CHAR messages to the message queue of the active frame window.
- Following are two typical situations in which an application receives WM_CHAR
- messages:
-
- An application has a client window or custom control window, either of which
- can have the keyboard focus. If the window procedure for the client or control
- window does not process WM_CHAR messages, it should pass them to
- WinDefWindowProc, which will pass them to the owner. Dialog control windows,
- in particular, should pass unprocessed WM_CHAR messages to the WinDefDlgProc
- function, because this is how the user interface implements control processing
- for the Tab and Arrow keys.
-
- An application window owns a control window whose window procedure can handle
- some, but not all, WM_CHAR messages. This is common in dialog windows. If the
- window procedure of a control in a dialog window cannot process a WM_CHAR
- message, the procedure can pass the message to the WinDefDlgProc function.
- This function sends the message to the control window's owner, which usually is
- a dialog frame window. The application's dialog procedure then receives the
- WM_CHAR message. This also is the case when an application client window owns
- a control window.
-
- A WM_CHAR message can represent a key-down or key-up transition. It might
- contain a character code, virtual-key code, or scan code. This message also
- contains information about the state of the Shift, Ctrl, and Alt keys.
-
- Each time a user presses a key, at least two WM_CHAR messages are generated:
- one when the key is pressed, and one when the key is released. If the user
- holds down the key long enough to trigger the keyboard repeat, multiple WM_CHAR
- key-down messages are generated. If the keyboard repeats faster than the
- application can retrieve the input events from its message queue, the system
- combines repeating character events into one WM_CHAR message and increments a
- count byte that indicates the number of keystrokes represented by the message.
- Generally, this byte is set to 1, but an application should check each WM_CHAR
- message to avoid missing any keystrokes.
-
- An application can ignore the repeat count. For example, an application might
- ignore the repeat count on Arrow keys to prevent the cursor from skipping
- characters when the system is slow.
-
-
- ΓòÉΓòÉΓòÉ 5.1.4.1. Message Flags ΓòÉΓòÉΓòÉ
-
- Applications decode WM_CHAR messages by examining individual bits in the flag
- word contained in the first message parameter (mp1) that the system passes with
- every WM_CHAR message. The type of flag word indicates the nature of the
- message. The system can set the bits in the flag word in various combinations.
- For example, a WM_CHAR message can have the KC_CHAR, KC_SCANCODE, and KC_SHIFT
- attribute bits all set at the same time. An application can use the following
- list of flag values to test the flag word and determine the nature of a WM_CHAR
- message:
-
- Keyboard Character Flags
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFlag Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_ALT ΓöéIndicates that the Alt key was down when the Γöé
- Γöé Γöémessage was generated. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_CHAR ΓöéIndicates that the message contains a valid Γöé
- Γöé Γöécharacter code for a key, typically an ASCII Γöé
- Γöé Γöécharacter code. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_COMPOSITE ΓöéIn combination with the KC_CHAR flag, this Γöé
- Γöé Γöéflag indicates that the character code is a Γöé
- Γöé Γöécombination of the key that was pressed and Γöé
- Γöé Γöéthe previous dead key. This flag is used to Γöé
- Γöé Γöécreate characters with diacritical marks. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_CTRL ΓöéIndicates that the Ctrl key was down when theΓöé
- Γöé Γöémessage was generated. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_DEADKEY ΓöéIn combination with the KC_CHAR flag, this Γöé
- Γöé Γöéflag indicates that the character code Γöé
- Γöé Γöérepresents a dead-key glyph (such as an Γöé
- Γöé Γöéaccent). An application displays the Γöé
- Γöé Γöédead-key glyph and does not advance the Γöé
- Γöé Γöécursor. Typically, the next WM_CHAR message Γöé
- Γöé Γöéis a KC_COMPOSITE message, containing the Γöé
- Γöé Γöéglyph associated with the dead key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_INVALIDCHAR ΓöéIndicates that the character is not valid forΓöé
- Γöé Γöéthe current translation tables. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_INVALIDCOMP ΓöéIndicates that the character code is not Γöé
- Γöé Γöévalid in combination with the previous dead Γöé
- Γöé Γöékey. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_KEYUP ΓöéIndicates that the message was generated whenΓöé
- Γöé Γöéthe user released the key. If this flag is Γöé
- Γöé Γöéclear, the message was generated when the Γöé
- Γöé Γöéuser pressed the key. An application can useΓöé
- Γöé Γöéthis flag to determine key-down and key-up Γöé
- Γöé Γöéevents. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_LONEKEY ΓöéIn combination with the KC_KEYUP flag, this Γöé
- Γöé Γöéflag indicates that the user pressed no otherΓöé
- Γöé Γöékey while this key was down. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_PREVDOWN ΓöéIn combination with the KC_VIRTUALKEY flag, Γöé
- Γöé Γöéthis flag indicates that the virtual key was Γöé
- Γöé Γöépressed previously. If this flag is clear, Γöé
- Γöé Γöéthe virtual key was not previously pressed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_SCANCODE ΓöéIndicates that the message contains a valid Γöé
- Γöé Γöéscan code generated by the keyboard when the Γöé
- Γöé Γöéuser pressed the key. The system uses the Γöé
- Γöé Γöéscan code to identify the character code in Γöé
- Γöé Γöéthe current code page; therefore, most Γöé
- Γöé Γöéapplications do not need the scan code unlessΓöé
- Γöé Γöéthey cannot identify the key that the user Γöé
- Γöé Γöépressed. WM_CHAR messages generated by user Γöé
- Γöé Γöékeyboard input generally have a valid scan Γöé
- Γöé Γöécode, but WM_CHAR messages posted to the Γöé
- Γöé Γöéqueue by other applications might not containΓöé
- Γöé Γöéa scan code. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_SHIFT ΓöéIndicates that the Shift key was down when Γöé
- Γöé Γöéthe message was generated. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_TOGGLE ΓöéToggles on and off every time the user Γöé
- Γöé Γöépresses a specified key. This is important Γöé
- Γöé Γöéfor keys like NumLock, which have an on or Γöé
- Γöé Γöéoff state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéKC_VIRTUALKEY ΓöéIndicates that the message contains a valid Γöé
- Γöé Γöévirtual-key code for a key. Virtual keys Γöé
- Γöé Γöétypically correspond to function keys. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The mp1 and mp2 parameters of the WM_CHAR message contain information
- describing the nature of a keyboard input event, as follows:
-
- o SHORT1FROMMP (mp1) contains the flag word.
- o CHAR3FROMMP (mp1) contains the key-repeat count.
- o CHAR4FROMMP (mp1) contains the scan code.
- o SHORT1FROMMP (mp2) contains the character code.
- o SHORT2FROMMP (mp2) contains the virtual key code.
-
- An application window procedure should return TRUE if it processes a particular
- WM_CHAR message or FALSE if it does not. Typically, applications respond to
- key-down events and ignore key-up events.
-
- The following sections describe the different types of WM_CHAR messages.
- Generally, an application decodes these messages by creating layers of
- conditional statements that discriminate among the different combinations of
- flag and code attributes that can occur in a keyboard message.
-
-
- ΓòÉΓòÉΓòÉ 5.1.4.2. Key-Down or Key-Up Events ΓòÉΓòÉΓòÉ
-
- Typically, the first attribute that an application checks in a WM_CHAR message
- is the key-down or key-up event. If the KC_KEYUP bit of the flags word is set,
- the message is from a key-up event. If the flag is clear, the message is from a
- key-down event.
-
-
- ΓòÉΓòÉΓòÉ 5.1.4.3. Repeat-Count Events ΓòÉΓòÉΓòÉ
-
- An application can check the key-repeat count of a WM_CHAR message to determine
- whether the message represents more than 1 keystroke. The count is greater
- than 1 if the keyboard is sending characters to the system queue faster than
- the application can retrieve them. If the system queue fills up, the system
- combines consecutive keyboard input events for each key into a single WM_CHAR
- message, with the key-repeat count set to the number of combined events.
-
-
- ΓòÉΓòÉΓòÉ 5.1.4.4. Character Codes ΓòÉΓòÉΓòÉ
-
- The most typical use of WM_CHAR messages is to extract a character code from
- the message and display the character on the screen. When the KC_CHAR flag is
- set in the WM_CHAR message, the low word of mp2 contains a character code based
- on the current code page. Generally, this value is a character code
- (typically, an ASCII code) for the key that was pressed.
-
-
- ΓòÉΓòÉΓòÉ 5.1.4.5. Virtual-Key Codes ΓòÉΓòÉΓòÉ
-
- WM_CHAR messages often contain virtual-key codes that correspond to various
- function keys and direction keys on a typical keyboard. These keys do not
- correspond to any particular glyph code but are used to initiate operations.
- When the KC_VIRTUALKEY flag is set in the flag word of a WM_CHAR message, the
- high word of mp2 contains a virtual-key code for the key.
-
- Note: Some keys, such as the Enter key, have both a valid character code and a
- virtual-key code. WM_CHAR messages for these keys will contain
- character codes for both newline characters (ASCII 11) and virtual-key
- codes (VK_ENTER).
-
-
- ΓòÉΓòÉΓòÉ 5.1.4.6. Scan Codes ΓòÉΓòÉΓòÉ
-
- A third possible value in a WM_CHAR message is the scan code of the key that
- was pressed. The scan code represents the value that the keyboard hardware
- generates when the user presses a key. An application can use the scan code to
- identify the physical key pressed, as opposed to the character code represented
- by the same key.
-
-
- ΓòÉΓòÉΓòÉ 5.1.4.7. Accelerator-Table Entries ΓòÉΓòÉΓòÉ
-
- The system checks all incoming keyboard messages to see whether they match any
- existing accelerator-table entries (in either the system message queue or the
- application message queue). The system first checks the accelerator table
- associated with the active frame window; if it does not find a match, the
- system uses the accelerator table associated with the message queues. If the
- keyboard input event corresponds to an accelerator-table entry, the system
- changes the WM_CHAR message to a WM_COMMAND, WM_SYSCOMMAND, or WM_HELP message,
- depending on the attributes of the accelerator table. If the keyboard input
- event does not correspond to an accelerator-table entry, the system passes the
- WM_CHAR message to the keyboard-focus window.
-
- Applications should use accelerator tables to implement keyboard shortcuts
- rather than translate command keystrokes. For example, if an application uses
- the F2 key to save a document, the application should create a keyboard
- accelerator entry for the F2 virtual key so that, when pressed, the F2 key
- generates a WM_COMMAND message rather than a WM_CHAR message.
-
-
- ΓòÉΓòÉΓòÉ 5.1.5. Mouse Messages ΓòÉΓòÉΓòÉ
-
- Mouse messages occur when a user presses or releases one of the mouse buttons
- (a click) and when the mouse moves. All mouse messages contain the x and y
- coordinates of the mouse-pointer hot spot (relative to the coordinates of the
- window receiving the message) at the time the event occurs. The mouse-pointer
- hot spot is the location in the mouse-pointer bit map that the system tracks
- and recognizes as the position of the mouse pointer.
-
- If a window has the CS_HITTEST style, the system sends the window a WM_HITTEST
- message when the window is about to receive a mouse message. Most applications
- pass WM_HITTEST messages on to WinDefWindowProc by default, so disabled windows
- do not receive mouse messages. Windows that specifically respond to WM_HITTEST
- messages can change this default behavior. If the window is enabled and should
- receive the mouse message, the WinDefWindowProc function (using the default
- processing for WM_HITTEST) returns the value HT_NORMAL. If the window is
- disabled, WinDefWindowProc returns HT_ERROR, in which case the window does not
- receive the mouse message.
-
- The default window procedure processes the WM_HITTEST message and the usHit
- parameter in the WM_MOUSEMOVE message. Therefore, unless an application needs
- to return special values for the WM_HITTEST message or the usHit parameter, it
- can ignore them. One possible reason for processing the WM_HITTEST message is
- for the application to react differently to a mouse click in a disabled window.
-
- The contents of the mouse-message parameters (mp1 and mp2) are as follows:
-
- o SHORT1FROMMP (mp1) contains the x position.
- o SHORT2FROMMP (mp1) contains the y position.
- o SHORT1FROMMP (mp2) contains the hit-test parameter.
-
-
- ΓòÉΓòÉΓòÉ 5.1.6. Capturing Mouse Input ΓòÉΓòÉΓòÉ
-
- The operating system generally posts mouse messages to the window that is under
- the mouse pointer at the time the system reads the mouse input events from the
- system message queue. An application can change this by using the
- WinSetCapture function to route all mouse messages to a specific window or to
- the message queue associated with the current thread. If mouse messages are
- routed to a specific window, that window receives all mouse input until either
- the window releases the mouse or the application specifies another capture
- window. If mouse messages are routed to the current message queue, the system
- posts each mouse message to the queue with the hwnd member of the QMSG
- structure for each message set to NULL. Because no window handle is specified,
- the WinDispatchMsg function in the application's main message loop cannot pass
- these messages to a window procedure for processing. Therefore, the
- application must process these messages in the main loop.
-
- Capturing mouse input is useful if a window needs to receive all mouse input,
- even when the pointer moves outside the window. For example, applications
- commonly track the mouse-pointer position after a mouse "button down" event,
- following the pointer until a "button up" event is received from the system.
- If an application does not call WinSetCapture for a window and the user
- releases the mouse button, the application does not receive the button-up
- message. If the application sets a window to capture the mouse and tracks the
- mouse pointer, the application receives the button-up message even if the user
- moves the mouse pointer outside the window.
-
- Some applications are designed to require a button-up message to match a
- button-down message. When processing a button-down message, these applications
- call WinSetCapture to set the capture to their own window; then, when
- processing a matching button-up message, they call WinSetCapture, with a NULL
- window handle, to release the mouse.
-
-
- ΓòÉΓòÉΓòÉ 5.1.6.1. Button Clicks ΓòÉΓòÉΓòÉ
-
- An application window's response to a mouse click depends on whether the window
- is active. The first click in an inactive window should activate the window.
- Subsequent clicks in the active window produce an application-specific action.
-
- A common problem for an application that processes WM_BUTTON1DOWN or similar
- messages is failing to activate the window or set the keyboard focus. If the
- window processes WM_CHAR messages, the window procedure should call WinSetFocus
- to make sure the window receives the keyboard focus and is activated. If the
- window does not process WM_CHAR messages, the application should call
- WinSetActiveWindow to activate the window.
-
-
- ΓòÉΓòÉΓòÉ 5.1.6.2. Mouse Movement ΓòÉΓòÉΓòÉ
-
- The system sends WM_MOUSEMOVE messages to the window that is under the mouse
- pointer, or to the window that currently has captured the mouse, whenever the
- mouse pointer moves. This is useful for tracking the mouse pointer and
- changing its shape, based on its location in a window. For example, the mouse
- pointer changes shape when it passes over the size border of a standard frame
- window.
-
- All standard control windows use WM_MOUSEMOVE messages to set the mouse-pointer
- shape. If an application handles WM_MOUSEMOVE messages in some situations but
- not others, unused messages should be passed to the WinDefWindowProc function
- to change the mouse-pointer shape.
-
-
- ΓòÉΓòÉΓòÉ 5.2. Using the Mouse and Keyboard ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Determine the active status of a frame window.
- o Check for a key-up or key-down event.
- o Respond to a character message.
- o Handle virtual-key codes.
- o Handle a scan code.
-
-
- ΓòÉΓòÉΓòÉ 5.2.1. Determining the Active Status of a Frame Window ΓòÉΓòÉΓòÉ
-
- The activated state of a window is a frame-window characteristic. The system
- does not provide an easy way to determine whether a client window is part of
- the active frame window. That is, the window handle returned by the
- WinQueryActiveWindow function identifies the active frame window rather than
- the client window owned by the frame window.
-
- Following are two methods for determining the activated state of a frame window
- that owns a particular client window:
-
- o Call WinQueryActiveWindow and compare the window handle it returns with the
- handle of the frame window that contains the client window, as shown in the
- following code fragment:
-
- HWND hwndClient;
- BOOL fActivated;
-
- fActivated = (WinQueryWindow(hwndClient, QW_PARENT) ==
- WinQueryActiveWindow(HWND_DESKTOP));
-
- o Each time the frame window is activated, the client window receives a
- WM_ACTIVATE message with the low word of the mp2 equal to TRUE. When the
- frame window is deactivated, the client window receives a WM_ACTIVATE message
- with a FALSE activation indicator.
-
-
- ΓòÉΓòÉΓòÉ 5.2.2. Checking for a Key-Up or Key-Down Event ΓòÉΓòÉΓòÉ
-
- The following code fragment shows how to decode a WM_CHAR message to determine
- whether it indicates a key-up event or a key-down event:
-
- USHORT fsKeyFlags;
-
- case WM_CHAR: {
- USHORT fsKeyFlags = SHORT1FROMMP(mp1);
-
- if (fsKeyFlags & KC_KEYUP) {
- .
- . /* Perform key-up processing. */
- .
-
- } else {
- .
- . /* Perform key-down processing. */
- .
- }
-
- return;
-
- }
-
-
- ΓòÉΓòÉΓòÉ 5.2.3. Responding to a Character Message ΓòÉΓòÉΓòÉ
-
- The following code fragment shows how to respond to a character message:
-
- USHORT fsKeyFlags;
- UCHAR uchChr1;
-
- case WM_CHAR:
- fsKeyFlags = (USHORT) SHORT1FROMMP(mp1);
-
- if (fsKeyFlags & KC_CHAR) {
-
- /* Get the character code from mp2. */
- uchChr1 = (UCHAR) CHAR1FROMMP(mp2);
- .
- . /* Process the character. */
- .
-
- return TRUE;
- }
-
- If the KC_CHAR flag is not set, the mp2 parameter from CHAR1FROMMP still might
- contain useful information. If either the Alt key or the Ctrl key, or both,
- are down, the KC_CHAR bit is not set when the user presses another key. For
- example, if the user presses the a key when the Alt key is down, the low word
- of mp2 contains the ASCII value for "a" (0x0061), the KC_ALT flag is set, and
- the KC_CHAR flag is clear. If the translation does not generate any valid
- characters, the char field is set to 0.
-
-
- ΓòÉΓòÉΓòÉ 5.2.4. Handling Virtual-Key Codes ΓòÉΓòÉΓòÉ
-
- The following code fragment shows how to decode a WM_CHAR message containing a
- valid virtual-key code:
-
- USHORT fsKeyFlags;
-
- case WM_CHAR:
- fsKeyFlags = (USHORT) SHORT1FROMMP(mp1);
-
- if (fsKeyFlags & KC_VIRTUALKEY) {
-
- /* Get the virtual key from mp2. */
- switch (SHORT2FROMMP(mp2)) {
- case VK_TAB:
- .
- . /* Process the TAB key. */
- .
- return TRUE;
- case VK_LEFT:
- .
- . /* Process the LEFT key. */
- .
- return TRUE;
- case VK_UP:
- .
- . /* Process the UP key. */
- .
- return TRUE;
- case VK_RIGHT:
- .
- . /* Process the RIGHT key. */
- .
- return TRUE;
- case VK_DOWN:
- .
- . /* Process the DOWN key. */
- .
- return TRUE;
- .
- . /* Etc... */
- .
- default:
- return FALSE;
- }
- }
-
-
- ΓòÉΓòÉΓòÉ 5.2.5. Handling a Scan Code ΓòÉΓòÉΓòÉ
-
- All WM_CHAR messages generated by keyboard input events have valid scan codes.
- WM_CHAR messages posted by other applications might or might not have valid
- scan codes. The following code fragment shows how to extract a scan code from
- a WM_CHAR message:
-
- USHORT fsKeyFlags;
- UCHAR uchScanCode;
-
- case WM_CHAR:
- fsKeyFlags = (USHORT) SHORT1FROMMP(mp1);
-
- if (fsKeyFlags & KC_SCANCODE) {
-
- /* Get the scan code from mp1. */
- uchScanCode = CHAR4FROMMP(mp1);
- .
- . /* Process the scan code. */
- .
-
- return (MRESULT) TRUE;
- }
-
-
- ΓòÉΓòÉΓòÉ 5.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions and messages used with activation and
- keyboard/mouse input.
-
- Mouse/Keyboard Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinEnablePhysInput ΓöéEnables or disables queuing ofΓöé
- Γöé Γöéphysical input. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinFocusChange ΓöéChanges the focus window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinGetKeyState ΓöéReturns the state of the key Γöé
- Γöé Γöéat the time the last message Γöé
- Γöé Γöéfrom the message queue was Γöé
- Γöé Γöéposted. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinGetPhysKeyState ΓöéReturns the physical key Γöé
- Γöé Γöéstate. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinIsPhysInputEnabled ΓöéReturns the status of the Γöé
- Γöé Γöéhardware (on/off) Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryActiveWindow ΓöéReturns the active window for Γöé
- Γöé ΓöéHWND_DESKTOP or other parent Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryCapture ΓöéReturns the handle of the Γöé
- Γöé Γöéwindow the pointer has Γöé
- Γöé Γöécaptured. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryFocus ΓöéReturns the focus window; NULLΓöé
- Γöé Γöéif there is not focus window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetActiveWindow ΓöéMakes the frame window the Γöé
- Γöé Γöéactive window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetCapture ΓöéCaptures all pointing device Γöé
- Γöé Γöémessages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetFocus ΓöéSets the focus window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetKeyboardStateTable ΓöéGets or sets the keyboard Γöé
- Γöé Γöéstate. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Focus-Change and Activation Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ACTIVATE ΓöéSent when a different window becomesΓöé
- Γöé Γöéthe active window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_FOCUSCHANGE ΓöéOccurs when the window having the Γöé
- Γöé Γöéfocus is changed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYFOCUSCHAIN ΓöéRequests the handle of a window in Γöé
- Γöé Γöéthe focus chain. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETFOCUS ΓöéOccurs when a window is to lose or Γöé
- Γöé Γöégain the input focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETSELECTION ΓöéOccurs when a window is selected or Γöé
- Γöé Γöédeselected. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Mouse Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéOccurs when the user presses button Γöé
- Γöé Γöé1 of the pointing device twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépointer button 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DBLCLK ΓöéOccurs when the user presses button Γöé
- Γöé Γöé2 of the pointing device twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 2. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépointer button 2. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DBLCLK ΓöéOccurs when the user presses button Γöé
- Γöé Γöé3 on the pointing device twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 3. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépointer button 3. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HITTEST ΓöéSent to determine which window is Γöé
- Γöé Γöéassociated with an input from the Γöé
- Γöé Γöépointing device. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéOccurs when the pointing device Γöé
- Γöé Γöépointer moves. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Keyboard Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéOccurs when the user presses a key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_COMMAND ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner, or when a keystroke has been Γöé
- Γöé Γöétranslated by an accelerator table Γöé
- Γöé Γöéinto WM_COMMAND. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 6. Frame Windows ΓòÉΓòÉΓòÉ
-
- A frame window is the basic window used by most Presentation Manager
- applications to enable the user to perform manipulation functions. This
- chapter explains how to create and use frame windows in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 6.1. About Frame Windows ΓòÉΓòÉΓòÉ
-
- An application nearly always starts with a frame window to create a composite
- window (for example, a main window) that consists of the frame window, several
- frame-control windows, and a client window. The frame controls conform to the
- Common User Access (CUA) user interface guidlines. The frame window
- coordinates the actions of the frame controls and client window, enabling the
- composite window to act as a single unit.
-
- Frame windows have the preregistered public window class WC_FRAME. The
- frame-window class, like the preregistered control classes, defines the
- appearance and behavior of the frame window.
-
-
- ΓòÉΓòÉΓòÉ 6.1.1. Main Window ΓòÉΓòÉΓòÉ
-
- The main window of an application, typically, is composed of a frame window and
- a client window. The frame window usually includes control windows such as a
- title bar, system menu, menu bar (action bar or menu in user terminology), and
- scroll bars. The following figure is an example of a typical frame window.
-
- Typical Frame Window and Its Components
-
- A frame window provides the standard services the user expects from a
- window-for example, moving, sizing, minimizing, and maximizing. The frame
- window receives input from the control windows (called frame controls) and
- sends messages to both the frame controls and the client window.
-
-
- ΓòÉΓòÉΓòÉ 6.1.1.1. Frame Controls ΓòÉΓòÉΓòÉ
-
- When creating a frame window, an application also can create one or more frame
- controls as child windows of the frame window. Most frame windows contain at
- least a system menu and title bar. Other optional controls might include a
- menu bar and scroll bar as shown above.
-
- An application can create a frame window with specified frame controls by
- calling WinCreateStdWindow with the appropriate frame-control flags.
-
- The frame window owns the child frame-control windows, which can send
- notification messages that tell the frame window what the user is doing with
- the frame controls. For example, using a mouse, a user can move a window by
- clicking the title bar and dragging the window to a new position. The
- title-bar control responds to the click by sending a message to the frame
- window, notifying it of the user's request to move the window. Then the frame
- window tracks the mouse motion and moves the frame window and all of its child
- windows to the new position.
-
- PM, rather than the application, handles the processing of the frame controls,
- thus providing the user a consistent interface for manipulating and interacting
- with windowed applications on the screen. Frame controls are described in
- individual chapters. For more information about control windows, see Control
- Windows.
-
-
- ΓòÉΓòÉΓòÉ 6.1.1.2. Client Window ΓòÉΓòÉΓòÉ
-
- Every main window has a client window, which is the window in which the
- application displays output and receives mouse and keyboard input from the
- user. What an application displays in the client window, how it displays it,
- and how it interprets input to the window are controlled by the client's
- application-defined window procedure.
-
- An application creates the client window when it creates the frame window. The
- client window, which is specific to the application, is nearly always created
- using a private window class (a class registered by the application). Like a
- frame control, the client window is a child window and is owned by the frame
- window. This means, for example, that the client window is moved when the
- frame window moves, is clipped to the frame-window size, and is destroyed when
- the frame window is destroyed.
-
- The relationship between the frame window and the client window allows the
- frame window to pass messages between other frame controls and the client
- window. For example, a client window can send a message to the frame window
- requesting that the frame window change the window title. The frame window, in
- turn, sends a message to the title-bar control, telling it to change the title
- of the window.
-
-
- ΓòÉΓòÉΓòÉ 6.1.1.3. Additional Frame-Window Items ΓòÉΓòÉΓòÉ
-
- In addition to its frame controls, a frame window also can contain a sizing
- border and the minimize and maximize buttons (also known as maximize and
- minimize icons). These items are not frame controls, because the frame window
- draws and maintains them. (Frame controls are windows that draw and maintain
- themselves.)
-
- The sizing border encloses the frame window and lets the user change the size
- of the window using a mouse. The minimize button, at the right end of the
- title bar, lets the user reduce the frame window to an icon. The maximize
- button, to the right of the minimize button, lets the user enlarge the window
- so that it fills the screen.
-
- An application can add these items to a frame window by using the
- FCF_SIZEBORDER, FCF_MAXBUTTON, and FCF_MINBUTTON (or FCF_MINMAX) styles. (The
- FCF_MINMAX style adds both a maximize button and a minimize button.)
-
-
- ΓòÉΓòÉΓòÉ 6.1.1.4. Frame-Control Identifiers ΓòÉΓòÉΓòÉ
-
- A frame window uses a set of standard constants to identify the frame controls
- and the client window. The frame-control identifiers all begin with the prefix
- FID_ and can be used in functions such as WinWindowFromID to uniquely identify
- a given control or the client window. The frame controls also use these
- identifiers in notification messages sent to the frame window. The following
- table describes the frame-control identifiers:
-
- Frame-Control Identifiers
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéIdentifier ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFID_CLIENT ΓöéIdentifies a client window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFID_HORZSCROLL ΓöéIdentifies a horizontal scroll bar. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFID_MENU ΓöéIdentifies a menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFID_MINMAX ΓöéIdentifies the minimize and maximizeΓöé
- Γöé Γöé(window-sizing) buttons. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFID_SYSMENU ΓöéIdentifies a system menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFID_TITLEBAR ΓöéIdentifies a title bar. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFID_VERTSCROLL ΓöéIdentifies a vertical scroll bar. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 6.1.2. Frame-Window Creation ΓòÉΓòÉΓòÉ
-
- An application typically creates a frame window by using the WinCreateStdWindow
- function, which creates a frame window, a client window, and the specified
- frame controls. The application also can call WinCreateWindow with the
- WC_FRAME window class, which creates the frame window and controls but not the
- client window. To create the client, the application can call WinCreateWindow,
- specifying the original frame window as the parent and owner.
-
- An application also can use a frame window to create a dialog window. For a
- dialog window, the frame window contains control windows but no client window.
- The application creates the dialog window by using the WinLoadDlg or
- WinCreateDlg functions. These functions require an appropriate dialog template
- from the application's resource-definition file. The dialog template specifies
- the styles and dimensions for the frame window and for the control windows that
- compose the dialog window.
-
-
- ΓòÉΓòÉΓòÉ 6.1.2.1. Frame Window Controls and Styles ΓòÉΓòÉΓòÉ
-
- An application uses frame-control flags in the WinCreateStdWindow function to
- specify which frame controls to give to the frame window. Frame-control flags
- are constants that have the FCF_ prefix.
-
- The frame-window class (WC_FRAME), like other public window classes, provides
- many class-specific window styles that applications can use to adapt the
- appearance and behavior of a frame window. To specify the frame-window styles,
- an application can use either frame-control flags or the frame-window style
- constants, which have the FS_ prefix. Each style constant has a corresponding
- frame-control flag. Both produce exactly the same styles in a frame window.
- Typically, if an application is creating a frame window that uses frame
- controls, the application uses frame-control flags to specify the frame-window
- styles-if not, the application uses frame-style constants. An application can
- combine the frame-style constants with the standard window styles when creating
- a frame window.
-
- When an application calls WinCreateStdWindow without setting any frame-control
- flags, the function creates a standard window that is invisible and behind all
- its sibling windows, that has a width and height of 0, and that is positioned
- at the lower-left corner of its parent window. After the call to
- WinCreateStdWindow returns, the application can use the WinSetWindowPos
- function to change the window's size, coordinates, z-order position, and
- visibility.
-
- If an application calls WinCreateStdWindow with the FCF_SHELLPOSITION
- frame-control flag, the function creates the window so that it is in front of
- its sibling windows and has a standard size and coordinates determined by the
- system.
-
-
- ΓòÉΓòÉΓòÉ 6.1.2.2. Frame-Window Resources ΓòÉΓòÉΓòÉ
-
- If an application specifies FCF_ACCELTABLE, FCF_ICON, FCF_MENU, FCF_STANDARD,
- FS_ACCELTABLE, FS_ICON, or FS_STANDARD when creating a frame window, the
- application must provide the resources to support the specified style. Failure
- to do so causes the window creation to fail. Depending on the style, a frame
- window might attempt to load one or more resources from the application's
- executable files.
-
- The following table shows the frame-control flags and frame-window styles that
- require resources:
-
- Frame Window Flags and Styles Requiring Resources
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFlag ΓöéStyle ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFCF_ACCELTABLE ΓöéFS_ACCELTABLE ΓöéRequires an Γöé
- Γöé Γöé Γöéaccelerator-table Γöé
- Γöé Γöé Γöéresource. The frame Γöé
- Γöé Γöé Γöéwindow uses the Γöé
- Γöé Γöé Γöéaccelerator table toΓöé
- Γöé Γöé Γöétranslate WM_CHAR Γöé
- Γöé Γöé Γöémessages to Γöé
- Γöé Γöé ΓöéWM_COMMAND, WM_HELP,Γöé
- Γöé Γöé Γöéor WM_SYSCOMMAND Γöé
- Γöé Γöé Γöémessages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFCF_ICON ΓöéFS_ICON ΓöéRequires an icon Γöé
- Γöé Γöé Γöéresource. The frame Γöé
- Γöé Γöé Γöéwindow draws the Γöé
- Γöé Γöé Γöéicon when the user Γöé
- Γöé Γöé Γöéminimizes the Γöé
- Γöé Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFCF_MENU ΓöéFS_MENU ΓöéRequires a Γöé
- Γöé Γöé Γöémenu-template Γöé
- Γöé Γöé Γöéresource. A frame Γöé
- Γöé Γöé Γöéwindow uses the menuΓöé
- Γöé Γöé Γöétemplate to create aΓöé
- Γöé Γöé Γöémenu containing the Γöé
- Γöé Γöé Γöécommands and menus Γöé
- Γöé Γöé Γöéspecified by the Γöé
- Γöé Γöé Γöéresource. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFCF_STANDARD ΓöéFS_STANDARD ΓöéRequires a Γöé
- Γöé Γöé Γöémenu-template Γöé
- Γöé Γöé Γöéresource Γöé
- Γöé Γöé Γöé(FCF_STANDARD only),Γöé
- Γöé Γöé Γöéan accelerator-tableΓöé
- Γöé Γöé Γöéresource, and an Γöé
- Γöé Γöé Γöéicon resource. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- You can use the resource compiler to add icon, menu, and accelerator-table
- resources to the application's executable file. Each resource must have a
- resource identifier that matches the resource identifier specified in the
- FRAMECDATA structure passed to the WinCreateWindow function, or in the
- idResources parameter of the WinCreateStdWindow function.
-
- Note: For detailed information about icon, menu, and accelerator-table
- resources, see Mouse Pointers and Icons, Menus, and Keyboard
- Accelerators respectively.
-
- The following sample code illustrates how to use WinCreateStdWindow to load and
- set up certain resources for a frame window. Normally the first step is to set
- up a header file defining the the IDs of the applicable resources:
-
-
- #define ID_RESOURCE 001
-
- #define IDM_OPTIONS 50
- #define IDM_SHIFT 51
- #define IDM_EXIT 52
-
-
- Defining Resources for Header File
-
- Then, make a resource (.RC) file, defining each resource:
-
-
- /* Sample Resource */
-
- #include <os2.h>
-
- POINTER ID_RESOURCE sampres.ico /* Icon */
-
- ACCELTABLE ID_RESOURCE
- BEGIN /* Accelerator table */
- VK_F10, IDM_SHIFT, VIRTUALKEY
- VK_F3 , IDM_EXIT, VIRTUALKEY
- END
-
- MENU ID_RESOURCE /* Menu */
- BEGIN
- SUBMENU "~Options", IDM_OPTIONS
- BEGIN
- MENUITEM "~Shift Colors\tF10", IDM_SHIFT
- MENUITEM "~Exit\tF3", IDM_EXIT
- END
- END
-
-
- Defining Resources for Resource (.RC) File
-
- When using WinCreateStdWindow with more than one resource, each resource can
- have the same ID, as in the above example (ID_RESOURCE or 1), but only if each
- resource is of a different type. Resources of the same type must have unique
- IDs.
-
- Use FCF flags to indicate what resources to load:
-
-
- ULONG flFrameFlags=
- FCF_TITLEBAR | /* Title bar */
- FCF_SIZEBORDER | /* Size border */
- FCF_MINMAX | /* Min & Max buttons */
- FCF_SYSMENU | /* System menu */
- FCF_SHELLPOSITION | /* System size & position */
- FCF_TASKLIST | /* Add name to task list */
- FCF_ICON | /***Add icon */
- FCF_ACCELTABLE | /***Add accel. table */
- FCF_MENU ; /***Add menu */
-
-
- Using FCF Flags to Indicate What Resources to Load
-
- Use 0 (or NULL) in the seventh parameter of WinCreateStdWindow to indicate that
- the resource is stored in the application file, as follows:
-
-
- hwndFrame = WinCreateStdWindow(
- HWND_DESKTOP, /* Parent is desktop window. */
- WS_VISIBLE, /* Make frame window visible. */
- &flFrameFlags, /* Frame controls */
- "ResSamClient", /* Window class for client */
- NULL, /* No window title */
- WS_VISIBLE, /* Make client window visible . */
- (HMODULE) 0, /* Resources in application module */
- ID_RESOURCE, /* Resource identifier */
- NULL); /* Pointer to client window handle */
-
-
- Indicating that a Resource is Stored in the Application File
-
- Following is the full listing of the sample program:
-
-
- SampleProgramforLoadingResourcesinaFrameWindow
-
-
- #define INCL_PM
- #include <os2.h>
-
- MRESULT EXPENTRY ClientWndProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2);
-
- int main(int argc, char *argv, char *envp)
- {
- HWND hwndFrame;
- HWND hwndClient;
- HMQ hmq;
- QMSG qmsg;
- HAB hab;
-
- ULONG flFrameFlags=
- FCF_TITLEBAR | /* Title bar */
- FCF_SIZEBORDER | /* Size Border */
- FCF_MINMAX | /* Min & Max Buttons */
- FCF_SYSMENU | /* System Menu */
- FCF_SHELLPOSITION | /* System size & position */
- FCF_TASKLIST | /* Add name to task list. */
- FCF_ICON | /***Add icon. */
- FCF_ACCELTABLE | /***Add accelerator table. */
- FCF_MENU; /***Add menu. */
-
- hab = WinInitialize(0);
-
- hmq = WinCreateMsgQueue(hab, 0);
-
- WinRegisterClass(
- hab, /* Anchor block handle */
- "ResSamClient", /* Name of class being registered */
- (PFNWP)ClientWndProc, /* Window procedure for class */
- CS_SIZEREDRAW | /* Class style */
- CS_HITTEST, /* Class style */
- 0); /* Extra bytes to reserve */
-
- hwndFrame = WinCreateStdWindow(
- HWND_DESKTOP, /* Parent is desktop window. */
- WS_VISIBLE, /* Make frame window visible. */
- &flFrameFlags, /* Frame controls */
- "ResSamClient", /* Window class for client */
- NULL, /* No window title */
- WS_VISIBLE, /* Make client window visible . */
- (HMODULE) 0, /* Resources in application module */
- ID_RESOURCE, /* Resource identifier */
- NULL); /* Pointer to client window handle */
-
-
- while (WinGetMsg(hab, &qmsg, 0, 0, 0))
- WinDispatchMsg(hab, &qmsg);
-
- WinDestroyWindow(hwndFrame);
- WinDestroyMsgQueue(hmq);
- WinTerminate(hab);
-
- return 0;
- }
-
- MRESULT EXPENTRY ClientWndProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
- {
- RECTL rcl;
- HPS hps;
- static LONG lColor=CLR_RED;
- switch (msg) {
-
- case WM_PAINT:
- hps=WinBeginPaint(hwnd,(HPS) NULL, &rcl); /* Get hps */
- WinFillRect(hps,&rcl,lColor); /* Fill the window */
- WinEndPaint(hps); /* Free hps */
- return 0;
-
- case WM_COMMAND:
-
- switch (SHORT1FROMMP(mp1)) {
- case IDM_SHIFT: /* Shift selected */
- if (lColor==CLR_RED) lColor=CLR_BLUE; /* Change the */
- else lColor=CLR_RED; /* color */
- WinInvalidateRect(hwnd,(PRECTL)NULL,0UL); /* Paint Window */
- return 0;
- case IDM_EXIT: /* Exit selected */
- WinPostMsg(hwnd,WM_CLOSE,MPVOID,MPVOID); /* Exit program. */
- return 0;
- }
-
- }
- return WinDefWindowProc (hwnd, msg, mp1, mp2);
- }
-
-
- ΓòÉΓòÉΓòÉ 6.1.3. Frame-Window Class Data ΓòÉΓòÉΓòÉ
-
- An application can specify class-specific data for a frame window by passing to
- the WinCreateWindow function a pointer to the FRAMECDATA structure. The
- class-specific data contains the frame-control flags (FCF_ flags),
- resource-module handle, and resource identifier to be used when creating the
- frame window. The resource-module handle and the resource identifier specify
- where to find resources for the frame window.
-
- Supplying class-specific data with WinCreateWindow is similar to using the
- WinCreateStdWindow function without creating a client window.
-
-
- ΓòÉΓòÉΓòÉ 6.1.4. Frame-Window Data ΓòÉΓòÉΓòÉ
-
- Frame-window data specifies the state of the frame window at a given time. An
- application can retrieve the frame-window data by calling the
- WinQueryWindowUShort function. A frame window has the following state flags:
-
- Frame Window State Flags and Their Meanings
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFlag ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_ACTIVE ΓöéIndicates that the frame window is Γöé
- Γöé Γöéactive. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_DLGDISMISSED ΓöéIndicates that a dialog window has Γöé
- Γöé Γöébeen dismissed by a call to the Γöé
- Γöé ΓöéWinDismissDlg function. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_FLASHHILITE ΓöéIndicates that the frame window is Γöé
- Γöé Γöéflashing and its flash state is Γöé
- Γöé ΓöéTRUE. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_FLASHWINDOW ΓöéIndicates that the frame window Γöé
- Γöé Γöéflashes as the result of either a Γöé
- Γöé Γöécall to the WinFlashWindow function Γöé
- Γöé Γöéor a WM_FLASHWINDOW message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_NOACTIVATESWP ΓöéIndicates that the system should do Γöé
- Γöé Γöéno z-ordering on this frame window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_OWNERDISABLE ΓöéFor a frame window that is part of aΓöé
- Γöé Γöédialog window, this flag indicates Γöé
- Γöé Γöéwhether the owner window was enabledΓöé
- Γöé Γöéor disabled when the dialog window Γöé
- Γöé Γöéwas loaded. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_OWNERHIDDEN ΓöéIndicates that the frame window's Γöé
- Γöé Γöéowner window is hidden or minimized,Γöé
- Γöé Γöéin which case the frame window also Γöé
- Γöé Γöéis hidden. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFF_SELECTED ΓöéIndicates that the frame window has Γöé
- Γöé Γöébeen selected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFI_ACTIVATEOK ΓöéIndicates that the window can be Γöé
- Γöé Γöéactivated. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFI_FRAME ΓöéIndicates that the window is a frameΓöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFI_NOMOVEWITHOWNER ΓöéIndicates that the window should Γöé
- Γöé Γöémove when its owner window moves. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFI_OWNERHIDE ΓöéIndicates that the frame window Γöé
- Γöé Γöéshould be hidden or shown as a Γöé
- Γöé Γöéresult of its owner window being Γöé
- Γöé Γöéhidden, shown, minimized, or Γöé
- Γöé Γöémaximized. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 6.1.5. Frame-Window Operation ΓòÉΓòÉΓòÉ
-
- The frame window maintains the size, position, and visibility of itself, its
- frame controls, and its client window. The frame window responds to user
- requests to move, size, minimize, maximize, and redraw itself. It also
- responds to requests to close (destroy) itself and to change the focus and
- activation state.
-
- The frame window, when being moved or sized, maintains the position of each
- owned window relative to its owner window's lower-left corner.
-
- Whenever the frame window redraws itself (for example, after being moved or
- sized), it draws the frame controls and then lets the application draw the
- client window. This order ensures that the rapidly drawn frame controls are
- drawn before the client window.
-
- The order in which the frame controls are drawn depends on the z-order position
- of the controls. The following list specifies the z-order position of the
- frame controls (from top to bottom):
-
- FID_SYSMENU
- FID_TITLEBAR
- FID_MENU
- FID_VERTSCROLL
- FID_HORZSCROLL
- FID_CLIENT
-
- Although an application can change the z-order position of any window, changing
- the relative positions of frame controls is not recommended.
-
- When the user maximizes the frame window, the size of the frame window
- increases to the size of its parent window, plus an additional amount on each
- of its four sides equal to the width of its sizing border. A window always is
- clipped to its parent window; a maximized standard frame window does not show
- its sizing border in its normal maximized position.
-
- Frame controls owned by a frame window or windows owned by child windows of a
- frame window are destroyed automatically when the frame window processes the
- WM_DESTROY message.
-
-
- ΓòÉΓòÉΓòÉ 6.1.6. Nonstandard Frame Windows ΓòÉΓòÉΓòÉ
-
- Although most applications use frame windows to create their main windows and
- dialog windows, they are not limited to frame windows. Applications can create
- nonstandard frame windows and still use the standard frame controls, such as
- the title bar and system menu, within the nonstandard windows.
-
- An application can create a nonstandard frame window either by subclassing a
- frame window or by creating a private frame-window class. An application that
- subclasses a frame window can intercept the messages sent to the window and
- process them in new ways. An application that creates private frame-window
- classes essentially rewrites the frame-window procedure. In either case, by
- creating nonstandard frame windows, the application gains much more control
- over the arrangement of frame controls in the frame window.
-
- The messages WM_FORMATFRAME, WM_UPDATEFRAME, and WM_CALCVALIDRECTS control the
- arrangement of frame controls for applications that subclass the frame-window
- procedure. By intercepting these messages, an application can rearrange the
- frame controls in a frame window.
-
- To maintain the size and position of frame controls, an application that
- creates private frame-window classes can use the WinCreateFrameControls and
- WinCalcFrameRect functions. These functions provide capabilities that are
- similar to those provided by frame windows.
-
-
- ΓòÉΓòÉΓòÉ 6.1.7. Default Frame-Window Behavior ΓòÉΓòÉΓòÉ
-
- The following table lists all the messages specifically handled by the window
- procedure of the predefined frame-window class (WC_FRAME) and describes how the
- window procedure responds to each message.
-
- Default Frame-Window Messages and Behavior
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ACTIVATE ΓöéSets the highlighted state of the Γöé
- Γöé Γöétitle bar or border so that it Γöé
- Γöé Γöématches the frame window's Γöé
- Γöé Γöéactivation state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéIf the frame window is minimized, Γöé
- Γöé Γöécaptures the mouse; otherwise, Γöé
- Γöé Γöéactivates the frame window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DOWN ΓöéActivates the frame window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DOWN ΓöéActivates the frame window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1UP ΓöéProcesses messages from minimized Γöé
- Γöé Γöéwindow frames. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéIf the frame window is minimized, Γöé
- Γöé Γöéposts a WM_SYSCOMMAND message to Γöé
- Γöé Γöéitself; otherwise, activates the Γöé
- Γöé Γöéframe window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CALCVALIDRECTS ΓöéIf the frame window has no client Γöé
- Γöé Γöéwindow or if the client window has Γöé
- Γöé Γöéthe CS_SIZEREDRAW style, returns theΓöé
- Γöé ΓöéCVR_REDRAW flag to invalidate the Γöé
- Γöé Γöéentire window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CLOSE ΓöéIf the frame window has a client Γöé
- Γöé Γöéwindow, passes this message to the Γöé
- Γöé Γöéclient; otherwise, returns the Γöé
- Γöé Γöéresult of the WinDefWindowProc Γöé
- Γöé Γöéfunction. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéCreates the specified frame controlsΓöé
- Γöé Γöéby calling the Γöé
- Γöé ΓöéWinCreateFrameControls function. Γöé
- Γöé ΓöéAlso creates any accelerator tables,Γöé
- Γöé Γöéloads icons, and adds itself to the Γöé
- Γöé ΓöéWindow List. These actions depend onΓöé
- Γöé Γöéthe frame-window styles and Γöé
- Γöé Γöéframe-control flags specified for Γöé
- Γöé Γöéthe window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéIf the focus is held by a child Γöé
- Γöé Γöéwindow of the frame window, sets theΓöé
- Γöé Γöéfocus to the frame window's parent Γöé
- Γöé Γöéwindow, destroys any owned windows Γöé
- Γöé Γöéor child windows, destroys any iconsΓöé
- Γöé Γöécreated by using the FS_ICON style, Γöé
- Γöé Γöéand destroys any accelerator tables Γöé
- Γöé Γöécreated by using the FS_ACCELTABLE Γöé
- Γöé Γöéstyle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéReturns the result of the Γöé
- Γöé ΓöéWinDefWindowProc function. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ERASEBACKGROUND ΓöéReturns TRUE, signaling that the Γöé
- Γöé Γöéwindow should erase the Γöé
- Γöé Γöéclient-window area. The frame windowΓöé
- Γöé Γöésends this message to itself during Γöé
- Γöé ΓöéWM_PAINT processing. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_FORMATFRAME ΓöéCalculates the sizes and positions Γöé
- Γöé Γöéof the frame controls and the clientΓöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HITTEST ΓöéIf the frame window is minimized andΓöé
- Γöé Γöédisabled, returns HT_ERROR; Γöé
- Γöé Γöéotherwise, returns TF_MOVE. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MINMAXFRAME ΓöéIf the frame window has a client Γöé
- Γöé Γöéwindow, passes this message to the Γöé
- Γöé Γöéclient window; otherwise, passes Γöé
- Γöé Γöéthis message to the WinDefWindowProcΓöé
- Γöé Γöéfunction. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéDetermines the correct mouse pointerΓöé
- Γöé Γöéto use and returns the result of Γöé
- Γöé ΓöéWinDefWindowProc. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéIf the frame window is minimized, Γöé
- Γöé Γöésends WM_QUERYICON and Γöé
- Γöé ΓöéWM_ERASEBACKGROUND to itself and Γöé
- Γöé Γöédraws the icon; otherwise, paints Γöé
- Γöé Γöéthe control windows, sends a Γöé
- Γöé ΓöéWM_ERASEBACKGROUND message to the Γöé
- Γöé Γöéclient window, and paints the clientΓöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYTRACKINFO ΓöéStarts track-move processing of the Γöé
- Γöé Γöétitle-bar control window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SHOW ΓöéReturns the result of Γöé
- Γöé ΓöéWinDefWindowProc. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SIZE ΓöéSends a WM_FORMATFRAME message to Γöé
- Γöé Γöéitself. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SYSCOMMAND ΓöéIf the frame window has captured theΓöé
- Γöé Γöémouse, ignores the system command; Γöé
- Γöé Γöéotherwise, uses one of the followingΓöé
- Γöé Γöécommands: SC_APPMENU, SC_CLOSE, Γöé
- Γöé ΓöéSC_MOVE, SC_NEXT, SC_NEXTFRAME, Γöé
- Γöé ΓöéSC_RESTORE, SC_SIZE, SC_SYSMENU, Γöé
- Γöé ΓöéSC_TASKMANAGER. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_UPDATEFRAME ΓöéReformats and updates the appearanceΓöé
- Γöé Γöéof the frame window. Sent after a Γöé
- Γöé Γöéframe control has been added to or Γöé
- Γöé Γöéremoved from the frame window. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 6.2. Using Frame Windows ΓòÉΓòÉΓòÉ
-
- This section explains how to:
-
- o Create a main window
- o Retrieve a frame-control handle.
-
-
- ΓòÉΓòÉΓòÉ 6.2.1. Creating a Main Window ΓòÉΓòÉΓòÉ
-
- An application can create a main window by using the WinCreateStdWindow
- function. The following code fragment creates a typical main window-a frame
- window that has a system menu, title bar, menu, vertical and horizontal scroll
- bars, minimize and maximize (window-sizing) buttons, and a sizing border:
-
- #define IDM_MENU 1
-
- HWND hwndFrame;
-
- ULONG flFrameControlFlags =
- FCF_SYSMENU | FCF_TITLEBAR | FCF_SIZEBORDER |
- FCF_MENU | FCF_MINMAX | FCF_HORZSCROLL |
- FCF_VERTSCROLL | FCF_SHELLPOSITION;
-
- hwndFrame = WinCreateStdWindow(
- HWND_DESKTOP, /* Frame-window parent */
- WS_VISIBLE, /* Make window visible */
- &flFrameControlFlags, /* Frame-control flags */
- "MyClass", /* Client-window class */
- "Main Window", /* Window title */
- 0, /* No client-window styles */
- (HMODULE)NULL, /* App. module has resources */
- IDM_MENU, /* Resource ID */
- 0); /* Client-window handle */
-
- An application also can create a standard main window by creating a frame
- window with the FCF_STANDARD flag. The application must include icon, menu,
- and accelerator-table resources if it uses the FCF_STANDARD flag.
-
- The application creates the standard window by using the WinCreateStdWindow
- function, as shown in the following code fragment:
-
- #define IDM_RESOURCES 1
-
- HWND hwndFrame;
-
- /* Set the frame-control flags. */
- ULONG flFrameControlFlags = FCF_STANDARD;
-
- /* Create the standard main window. */
- hwndFrame = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE,
- &flFrameControlFlags,
- "MyClass", "Main Window", 0, (HMODULE) NULL,
- IDM_RESOURCES, 0);
-
- Another way to create a main window and its frame controls is to use the
- WinCreateWindow function to create the frame window and the frame controls,
- then call WinCreateWindow again to create the client window. One advantage of
- this approach is that, when creating the frame window, the application can
- specify the window's initial size and position. The following figure
- illustrates this approach:
-
-
- UsingWinCreateWindowtoCreateFrame ,Control ,andClientWindows
-
- #define ID_RESOURCES 1
- #define ID_FRAME 1
-
- ULONG flFrameControlFlags =
- FCF_ACCELTABLE | FCF_ICON | FCF_MENU |
- FCF_MINMAX | FCF_SIZEBORDER | FCF_SYSMENU |
- FCF_TASKLIST | FCF_TITLEBAR;
-
- FRAMECDATA fcdata;
- HWND hwndFrame;
- HWND hwndClient;
- SWP swp;
-
- fcdata.cb = sizeof(FRAMECDATA);
- fcdata.flCreateFlags = flFrameControlFlags;
- fcdata.hmodResources = (HMODULE) NULL;
- fcdata.idResources = ID_RESOURCES;
-
- /* Create the frame and client windows. */
- hwndFrame = WinCreateWindow(
- HWND_DESKTOP, /* Frame-window parent */
- WC_FRAME, /* Frame-window class */
- "Main Window", /* Window title */
- 0, /* Initially invisible */
- 0,0,0,0, /* Size and position = 0 */
- NULL, /* No owner */
- HWND_TOP, /* Top z-order position */
- ID_FRAME, /* Frame-window ID */
- &fcdata, /* Pointer to class data */
- NULL); /* No presentation parameters */
-
- hwndClient = WinCreateWindow(
- hwndFrame, /* Client-window parent */
- "MyClass", /* Client-window class */
- NULL, /* No title for client window */
- 0, /* Initially invisible */
- 0,0,0,0, /* Size and position = 0 */
- hwndFrame, /* Owner is frame window */
- HWND_BOTTOM, /* Bottom z-order position */
- FID_CLIENT, /* Standard client-window ID */
- NULL, /* No class data */
- NULL); /* No presentation parameters */
-
- .
- . /* Continue with initialization. */
- .
-
- /* Set the size and position of the frame window. */
- WinQueryWindowPos(HWND_DESKTOP, &swp);
- WinSetWindowPos(hwndFrame, HWND_TOP, swp.x, swp.cy / 2,
- swp.cx, swp.cy / 2, SWP_MOVE | SWP_SIZE);
-
- /* Set the size and position of the client window. */
- WinQueryWindowPos(hwndFrame, &swp);
- WinSetWindowPos(hwndClient, HWND_TOP, SV_CXSIZEBORDER,
- SV_CYSIZEBORDER - 1, swp.cx - SV_CXSIZEBORDER * 2,
- (swp.cy - SV_CYSIZEBORDER * 2) + 1, SWP_MOVE | SWP_SIZE);
-
- /* Make the frame and client windows visible. */
- WinShowWindow(hwndFrame, TRUE);
- WinShowWindow(hwndClient, TRUE);
-
-
- ΓòÉΓòÉΓòÉ 6.2.2. Retrieving a Frame Handle ΓòÉΓòÉΓòÉ
-
- An application can retrieve a frame-control handle by using the WinWindowFromID
- function. The following code fragment retrieves the handle of a title-bar
- control:
-
- HWND hwndTitleBar,hwndFrame;
-
- hwndTitleBar = WinWindowFromID(hwndFrame, FID_TITLEBAR);
-
- Given a frame-control handle, an application can retrieve its parent
- frame-window handle by using the WinQueryWindow function:
-
- HWND hwndFrame,hwndTitleBar;
-
- hwndFrame = WinQueryWindow(hwndTitleBar, QW_PARENT);
-
- By using identifiers to identify frame controls, rather than using window
- classes, an application can create its own controls to replace the predefined
- controls.
-
-
- ΓòÉΓòÉΓòÉ 6.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions, structures, and messages used with frame
- windows.
-
- Frame-Window Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCalcFrameRect ΓöéCalculates a client rectangle from aΓöé
- Γöé Γöéframe rectangle or a frame rectangleΓöé
- Γöé Γöéfrom a client rectangle. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Frame-Window Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFRAMECDATA ΓöéFrame-control data structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéHSVWP ΓöéFrame window repositioning handle. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Frame-Window Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ACTIVATE ΓöéOccurs when an application Γöé
- Γöé Γöécauses the activation or Γöé
- Γöé Γöédeactivation of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéOccurs when the user presses Γöé
- Γöé Γöépointer button 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DOWN ΓöéOccurs when the user presses Γöé
- Γöé Γöépointer button 2. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DOWN ΓöéOccurs when the user presses Γöé
- Γöé Γöépointer button 3. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépoint button 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CALCVALIDRECTS ΓöéSent to determine which areas Γöé
- Γöé Γöéof a window can be preserved Γöé
- Γöé Γöéand which can be displayed Γöé
- Γöé Γöéwhen a window is sized. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CLOSE ΓöéSent to a frame window to Γöé
- Γöé Γöéindicate that the user is Γöé
- Γöé Γöéclosing the window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéOccurs when the application Γöé
- Γöé Γöérequests creation of a window.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéOccurs when an application Γöé
- Γöé Γöérequests destruction of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéSets the enable state of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ERASEBACKGROUND ΓöéCauses a client window to be Γöé
- Γöé Γöéfilled with the background, ifΓöé
- Γöé Γöéappropriate. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_FLASHWINDOW ΓöéOccurs when an application hasΓöé
- Γöé Γöéissued a WinFlashWindow call. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_FOCUSCHANGE ΓöéOccurs when the window Γöé
- Γöé Γöépossessing the focus is Γöé
- Γöé Γöéchanged. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_FORMATFRAME ΓöéSent to a frame window to Γöé
- Γöé Γöécalculate the sizes and Γöé
- Γöé Γöépositions of all the frame Γöé
- Γöé Γöécontrols and the client Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HITTEST ΓöéSent to determine which windowΓöé
- Γöé Γöéis associated with an input Γöé
- Γöé Γöéfrom the pointing device. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MINMAXFRAME ΓöéSent to a frame window that isΓöé
- Γöé Γöébeing minimized, maximized, orΓöé
- Γöé Γöérestored. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéOccurs when the pointing Γöé
- Γöé Γöédevice pointer moves. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_NEXTMENU ΓöéOccurs when either the Γöé
- Γöé Γöébeginning or the end of the Γöé
- Γöé Γöémenu is reached using the Γöé
- Γöé Γöécursor control keys. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéOccurs when a window needs Γöé
- Γöé Γöépainting. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYFRAMECTLCOUNT ΓöéSent to the frame window in Γöé
- Γöé Γöéresponse to the receipt of a Γöé
- Γöé ΓöéWM_SIZE or WM_UPDATEFRAME Γöé
- Γöé Γöémessage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYFRAMEINFO ΓöéEnables an application to Γöé
- Γöé Γöéquery information about frame Γöé
- Γöé Γöéwindows. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYICON ΓöéSent to a frame window to Γöé
- Γöé Γöéquery its associated icon. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYTRACKINFO ΓöéThe frame control and title Γöé
- Γöé Γöébar generate this message Γöé
- Γöé Γöéafter receiving a Γöé
- Γöé ΓöéWM_TRACKFRAME message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETACCELTABLE ΓöéEstablishes the window Γöé
- Γöé Γöéaccelerator table to be used Γöé
- Γöé Γöéfor translation when the Γöé
- Γöé Γöéwindow is active. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETBORDERSIZE ΓöéSent to the frame window to Γöé
- Γöé Γöéchange the width and height ofΓöé
- Γöé Γöéthe border. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETICON ΓöéSent to a frame window to set Γöé
- Γöé Γöéits associated icon. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SHOW ΓöéOccurs when a window's Γöé
- Γöé ΓöéWS_VISIBLE state is changing. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SIZECLIPBOARD ΓöéSent when the clipboard Γöé
- Γöé Γöécontains a data handle for theΓöé
- Γöé ΓöéCFI_OWNERDISPLAY format, and Γöé
- Γöé Γöéthe clipboard application Γöé
- Γöé Γöéwindow has changed size. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SYSCOMMAND ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify toΓöé
- Γöé Γöéits owner or when a keystroke Γöé
- Γöé Γöéhas been translated by an Γöé
- Γöé Γöéaccelerator table into a Γöé
- Γöé ΓöéWM_SYSCOMMAND message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TRACKFRAME ΓöéSent to a window whenever it Γöé
- Γöé Γöéis to be moved or sized. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TRANSLATEACCEL ΓöéSent to the focus window Γöé
- Γöé Γöéwhenever a WM_CHAR message Γöé
- Γöé Γöéoccurs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_UPDATEFRAME ΓöéSent by an application after Γöé
- Γöé Γöéframe controls have been addedΓöé
- Γöé Γöéor removed from the window Γöé
- Γöé Γöéframe. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_WINDOWPOSCHANGED ΓöéSent to the window procedure Γöé
- Γöé Γöéof the window whose position Γöé
- Γöé Γöéis changed. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 7. Control Windows ΓòÉΓòÉΓòÉ
-
- A control window is a window that an application uses in conjunction with
- another window to carry out simple input and output tasks. This chapter
- describes how to create and use control windows in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 7.1. About Control Windows ΓòÉΓòÉΓòÉ
-
- Control windows are used most often as part of a frame or dialog window, but
- they also can be used in a client window. An application can create control
- windows in a frame window by using frame-control flags in the
- WinCreateStdWindow function, or it can create control windows individually by
- calling the WinCreateWindow function.
-
- Including control windows in a dialog window requires the use of a dialog
- template, which is a data structure that describes a dialog window and its
- control windows. The system uses the data in the dialog template to create the
- dialog window and control windows. An application can create a dialog template
- at run time, or it can use the system resource compiler to create a
- dialog-template resource.
-
- The operating system provides many types of predefined control windows. An
- application can create a control of a particular type by specifying the
- appropriate control-window class name, either in the WinCreateWindow function
- or in a dialog template. The following is a list of the predefined
- control-window classes:
-
- Control Window Classes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéClass name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_BUTTON ΓöéConsists of buttons and boxes the user can Γöé
- Γöé Γöéselect by clicking the pointing device or Γöé
- Γöé Γöéusing the keyboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_COMBOBOX ΓöéCreates a combination-box control, which Γöé
- Γöé Γöécombines a list-box control and an Γöé
- Γöé Γöéentry-field control. It allows the user to Γöé
- Γöé Γöéenter data by typing in the entry field or Γöé
- Γöé Γöéchoosing from a list in the list box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_CONTAINER ΓöéCreates a control for the user to group Γöé
- Γöé Γöéobjects in a logical manner. A container canΓöé
- Γöé Γöédisplay those objects in various formats or Γöé
- Γöé Γöéviews. The container control supports drag Γöé
- Γöé Γöéand drop so the user can place information inΓöé
- Γöé Γöéa container by simply dragging and dropping. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_ENTRYFIELD ΓöéConsists of a single line of text that the Γöé
- Γöé Γöéuser can edit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_FRAME ΓöéA composite window class that can contain Γöé
- Γöé Γöéchild windows of many of the other window Γöé
- Γöé Γöéclasses. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_LISTBOX ΓöéPresents a list of text items from which the Γöé
- Γöé Γöéuser can make selections. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_MENU ΓöéPresents a list of items that can be Γöé
- Γöé Γöédisplayed horizontally as action bars, or Γöé
- Γöé Γöévertically as pull-down menus. Menus usuallyΓöé
- Γöé Γöéare used to provide a command interface to Γöé
- Γöé Γöéapplications. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_NOTEBOOK ΓöéCreates a control for the user that is Γöé
- Γöé Γöédisplayed as a number of pages. The top pageΓöé
- Γöé Γöéis visible, and the others are hidden, with Γöé
- Γöé Γöétheir presence being indicated by a visible Γöé
- Γöé Γöéedge on each of the back pages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SCROLLBAR ΓöéConsists of window scroll bars that let the Γöé
- Γöé Γöéuser request to scroll the contents of an Γöé
- Γöé Γöéassociated window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SLIDER ΓöéCreates a control that is usable for Γöé
- Γöé Γöéproducing approximate (analog) values or Γöé
- Γöé Γöéproperties. Scroll bars were used for this Γöé
- Γöé Γöéfunction in the past, but the slider providesΓöé
- Γöé Γöéa more flexible method of achieving the same Γöé
- Γöé Γöéresult, with less programming effort. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_SPINBUTTON ΓöéCreates a control that presents itself to theΓöé
- Γöé Γöéuser as a scrollable ring of choices, giving Γöé
- Γöé Γöéthe user quick access to the data. The user Γöé
- Γöé Γöéis presented only one item at a time, so the Γöé
- Γöé Γöéspin button should be used with data that is Γöé
- Γöé Γöéintuitively related. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_STATIC ΓöéSimple display items that do not respond to Γöé
- Γöé Γöékeyboard or pointing device events. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_TITLEBAR ΓöéDisplays the window title or caption and letsΓöé
- Γöé Γöéthe user move the window's owner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWC_VALUESET ΓöéCreates a control similar in function to the Γöé
- Γöé Γöéradio buttons but provides additional Γöé
- Γöé Γöéflexibility to display graphical, textual, Γöé
- Γöé Γöéand numeric formats. The values set with Γöé
- Γöé Γöéthis control are mutually exclusive. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- A control window is always owned by another window, usually a frame or dialog
- window. This relationship is important because a control window sends
- WM_CONTROL messages to its owner whenever an input event occurs in the control
- window. Each WM_CONTROL message includes the identifier of the control window
- in which the event occurred and a notification code that specifies the nature
- of the event. An application specifies a control window's ID either in the
- WinCreateWindow function or in a dialog template. Each ID must be unique.
-
- Control windows are like other predefined window classes in that they respond
- to standard window-management messages and functions, such as WinSetWindowText
- and WinShowWindow.
-
- All control-window classes have a set of specific messages they send and
- receive. The summary at the end of this chapter lists the messages that all
- control windows have in common.
-
- The system paints most control windows synchronously-that is, it redraws a
- control window as soon as any part of that window becomes invalid.
-
-
- ΓòÉΓòÉΓòÉ 7.2. Using Control Windows ΓòÉΓòÉΓòÉ
-
- An application can use control windows in a dialog window, standard frame
- window, or client window. The following sections describe how to use control
- windows in an application.
-
-
- ΓòÉΓòÉΓòÉ 7.2.1. Using Control Windows in a Dialog Window ΓòÉΓòÉΓòÉ
-
- To use a control window in a dialog window, an application specifies the
- control in a dialog template in the application's resource-definition file. A
- dialog template typically includes several control windows. When the
- application loads the dialog-template resource and displays the dialog window,
- the system automatically displays the control windows as part of the dialog
- window.
-
- An application can send messages, through the dialog-window procedure, to a
- control window to change its state. The control window sends notification
- messages to the dialog-window procedure. The content of a notification message
- depends on the type of control window.
-
-
- ΓòÉΓòÉΓòÉ 7.2.2. Using Control Windows in a Non-Dialog Window ΓòÉΓòÉΓòÉ
-
- To use a control window in a non-dialog window, an application must call the
- WinCreateWindow function, using the appropriate window class name. An
- application usually specifies one of its client windows as the owner of the
- control window. Therefore, the client-window procedure receives notification
- messages from the control window. In cases where a control is owned by the
- frame window (such as a menu control), the notification messages to the frame
- window are passed to the client window.
-
-
- ΓòÉΓòÉΓòÉ 7.2.3. Creating a Custom Control Window ΓòÉΓòÉΓòÉ
-
- The operating system provides the following three ways to create custom control
- windows:
-
- o Use ownerdraw list boxes and menus or buttons.
- o Subclass an existing control-window class.
- o Register and implement a window class from scratch.
-
- List boxes and menus can have an ownerdraw style, and buttons can have a
- user-button style, which cause the system to send a message to the owner of the
- ownerdraw control whenever the control must be drawn. (If the owner is a frame
- window, it sends these messages on to its client windows for handling by the
- client window procedure.) This feature lets an application alter the appearance
- of a control window. For menus and list boxes, the owner window draws the
- items within the control, and the system draws the outline of the control. For
- buttons, the user-button style affects the drawing of the entire control.
-
- Subclassing an existing control window is an easy way to create a custom
- control. The subclass procedure can alter selected behavior of the control
- window by processing only those messages that affect the selected behaviors.
- All other messages pass to the original control-window procedure.
-
- The techniques for defining a custom control-window class are the same as those
- used for creating a client-window class. When you create a custom
- control-window class, be sure the window procedure can send and receive the
- messages listed in the following two tables.
-
- If an application creates a private control-window class, the name of the
- private class could be used in the dialog template, just like a predefined
- window-class constant. For example, if an application defines and registers a
- window class called "MyControlClass", it could create a dialog window that
- contains that type of control window by using the following resource
- definition:
-
-
- DLGTEMPLATE IDD_CUSTOM_TEST
- BEGIN
- DIALOG "", IDD_CUSTOM_TEST, 1, 1, 126, 130, FS_DLGBORDER, 0
- BEGIN
- CONTROL "This is Text", IDD_TITLE,
- 37, 107, 56, 12,
- WC_STATIC,
- SS_TEXT | DT_CENTER | DT_TOP | DT_WORDBREAK
- | WS_VISIBLE
- CONTROL "Custom Control", IDD_CUSTOM,
- 33, 68, 64, 13,
- "MyControlClass",
- WS_VISIBLE
- CONTROL "Okay", DID_OK,
- 57, 10, 24, 14,
- WC_BUTTON,
- BS_PUSHBUTTON | BS_DEFAULT | WS_TABSTOP | WS_VISIBLE
- END
- END
-
-
- ΓòÉΓòÉΓòÉ 7.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 messages used with control windows.
-
- Messages Received by a Control Window
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ADJUSTWINDOWPOS ΓöéSent by WinSetWindowPos to Γöé
- Γöé Γöéenable the window to adjust Γöé
- Γöé Γöéits new position or size when Γöé
- Γöé Γöéit is about to be moved. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYDLGCODE ΓöéSent by the dialog manager to Γöé
- Γöé Γöéidentify the type of control, Γöé
- Γöé Γöéto determine what kinds of Γöé
- Γöé Γöémessages the control Γöé
- Γöé Γöéunderstands, and to determine Γöé
- Γöé Γöéwhether an input message may Γöé
- Γöé Γöébe processed by the dialog Γöé
- Γöé Γöémanager or passed down to the Γöé
- Γöé Γöécontrol. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Generated by a Control Window to its Owner
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_COMMAND ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify toΓöé
- Γöé Γöéits owner, or when a keystrokeΓöé
- Γöé Γöéhas been translated by an Γöé
- Γöé Γöéaccelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to a control's owner Γöé
- Γöé Γöéwindow when the pointing Γöé
- Γöé Γöédevice pointer moves over the Γöé
- Γöé Γöécontrol window, allowing the Γöé
- Γöé Γöéowner to set the pointer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HELP ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify toΓöé
- Γöé Γöéits owner, or when a keystrokeΓöé
- Γöé Γöéhas been translated into a Γöé
- Γöé ΓöéWM_HELP message by an Γöé
- Γöé Γöéaccelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SYSCOMMAND ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify toΓöé
- Γöé Γöéits owner, or when a keystrokeΓöé
- Γöé Γöéhas been translated into a Γöé
- Γöé ΓöéWM_SYSCOMMAND message by an Γöé
- Γöé Γöéaccelerator table. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 8. Button Controls ΓòÉΓòÉΓòÉ
-
- A button is a type of control window used to initiate an operation or to set
- the attributes of an operation. This chapter describes how to create and use
- buttons in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 8.1. About Button Controls ΓòÉΓòÉΓòÉ
-
- A button control can appear alone or with a group of other buttons. When
- buttons are grouped, the user can move from button to button within the group
- by pressing the Arrow keys. The user also can move among groups by pressing
- the Tab key.
-
- A user can select a button by clicking it with the mouse, pressing the spacebar
- when the button has the keyboard focus, or sending a BM_CLICK message. In most
- cases, a button changes its appearance when selected.
-
- A button control is always owned by another window, usually a dialog window or
- an application's client window. A button control posts WM_COMMAND messages or
- sends WM_CONTROL notification messages to its owner when a user selects the
- button. The owner window receives messages from a button control and can send
- messages to the button to alter its position, appearance, and enabled/disabled
- state.
-
- To use a button control in a dialog window, an application specifies the
- control in a dialog template in the application's resource-definition file.
- The application processes button messages in the dialog-window procedure.
-
- An application creates a button control in a client window by calling
- WinCreateWindow, specifying a window class of WC_BUTTON, and identifying the
- client window as the owner of the button control.
-
-
- ΓòÉΓòÉΓòÉ 8.1.1. Button Types ΓòÉΓòÉΓòÉ
-
- There are four main types of buttons: push buttons, radio buttons, check boxes,
- and three-state check boxes. A button's type determines how the button looks
- and behaves.
-
- A radio button, check box, or three-state check box controls an operation; a
- push button initiates an operation. For example, a user might set printing
- options (such as paper size, print quality, and printer type) in a
- print-command dialog window containing an array of radio buttons and check
- boxes. After setting the options, the user would select a push button to tell
- an application that printing should begin (or be canceled). Then, the
- application would query the state of each check box and radio button to
- determine the printing parameters.
-
- A push button is a rectangular window that contains a text string, as shown in
- the following figure. Typically, an application uses a push button to let the
- user start or stop an operation.
-
- Push Button in a Dialog Box
-
- When selected, a push button control posts a WM_COMMAND message to its owner
- window.
-
- A radio button is a window with text displayed to the right of a small circular
- indicator. Each time the user selects a radio button, that button's state
- toggles between selected and unselected. This state remains until the next
- time the user selects the button. An application typically uses radio buttons
- in groups, as shown in the following figure.
-
- Radio Buttons in a Dialog Box
-
- Within a group, usually one button is selected by default, and the user can
- move the selection to another button by using the cursor keys; however, only
- one button can be selected at a time. Radio buttons are appropriate if an
- exclusive choice is required from a fixed list of related options. For
- example, applications often use radio buttons to allow the user to select the
- screen foreground and background colors. A radio-button control sends
- WM_CONTROL messages to its owner window.
-
- Check boxes are similar to radio buttons, except that they can offer
- multiple-choice selection as well as individual choice. Check boxes offer the
- user a fixed list of choices, with the option of selecting more than one, or
- even all.
-
- Check Boxes in a Dialog Box
-
- Check boxes also toggle application features on or off. For example, a word
- processing application might use a check box to let the user turn word wrapping
- on or off. A check-box control sends WM_CONTROL messages to its owner window.
-
- Three-state check boxes are similar to check boxes, except that they can be
- displayed in halftone as well as selected and unselected. An application might
- use the halftone state to indicate that, currently, the checkbox is not
- selectable. A three-state check-box control sends WM_CONTROL messages and
- posts WM_COMMAND messages to its owner window.
-
- In addition to using the four predefined button-control types, an application
- can create button controls that appear as defined by the owner window. When
- they must be drawn or highlighted, these button controls send WM_CONTROL
- messages with BN_PAINT as the notification code to their owner windows.
-
-
- ΓòÉΓòÉΓòÉ 8.1.2. Button Styles ΓòÉΓòÉΓòÉ
-
- The following table describes the button styles an application can use when
- creating button controls:
-
- Button Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle ΓöéDescription. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_3STATE ΓöéCreates a three-state check Γöé
- Γöé Γöébox (see also BS_CHECKBOX). Γöé
- Γöé ΓöéWhen the user selects the Γöé
- Γöé Γöécheck box, it sends a Γöé
- Γöé ΓöéWM_CONTROL message to the Γöé
- Γöé Γöéowner window. The owner shouldΓöé
- Γöé Γöéset the check box to the Γöé
- Γöé Γöéappropriate state: selected, Γöé
- Γöé Γöéunselected, or halftone. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_AUTO3STATE ΓöéCreates an auto-three-state Γöé
- Γöé Γöécheck box (see also Γöé
- Γöé ΓöéBS_CHECKBOX). When the user Γöé
- Γöé Γöéselects the check box, the Γöé
- Γöé Γöésystem automatically sets the Γöé
- Γöé Γöécheck box to the appropriate Γöé
- Γöé Γöéstate: selected, unselected, Γöé
- Γöé Γöéor halftone. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_AUTOCHECKBOX ΓöéCreates an auto-check box (seeΓöé
- Γöé Γöéalso BS_CHECKBOX). The system Γöé
- Γöé Γöéautomatically toggles the Γöé
- Γöé Γöécheck box between the selectedΓöé
- Γöé Γöéand unselected states each Γöé
- Γöé Γöétime the user selects the box.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_AUTORADIOBUTTON ΓöéCreates an auto-radio button Γöé
- Γöé Γöé(see also BS_RADIOBUTTON). Γöé
- Γöé ΓöéWhen the user selects an Γöé
- Γöé Γöéauto-radio button, the system Γöé
- Γöé Γöéautomatically selects the Γöé
- Γöé Γöébutton and removes the Γöé
- Γöé Γöéselection from the other Γöé
- Γöé Γöéauto-radio buttons in the Γöé
- Γöé Γöégroup. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_CHECKBOX ΓöéCreates a check box-a small Γöé
- Γöé Γöésquare that has text displayedΓöé
- Γöé Γöéto its right. When the user Γöé
- Γöé Γöéselects a check box, the checkΓöé
- Γöé Γöébox sends a WM_CONTROL messageΓöé
- Γöé Γöéto the owner window. The ownerΓöé
- Γöé Γöéwindow should toggle the checkΓöé
- Γöé Γöébox between selected and Γöé
- Γöé Γöéunselected states. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_DEFAULT ΓöéCreates a push button that hasΓöé
- Γöé Γöéa heavy black border. The userΓöé
- Γöé Γöécan select this push button byΓöé
- Γöé Γöépressing the spacebar. This Γöé
- Γöé Γöéstyle is useful for letting Γöé
- Γöé Γöéthe user quickly select the Γöé
- Γöé Γöémost likely set of options in Γöé
- Γöé Γöéa dialog window. This style isΓöé
- Γöé Γöévalid only in combination withΓöé
- Γöé Γöéthe BS_PUSHBUTTON style or theΓöé
- Γöé ΓöéPUSHBUTTON statement in a Γöé
- Γöé Γöéresource-definition file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_HELP ΓöéCreates a push button that Γöé
- Γöé Γöéposts a WM_HELP message Γöé
- Γöé Γöé(instead of a WM_COMMAND Γöé
- Γöé Γöémessage) to its owner window Γöé
- Γöé Γöéwhen the user selects the Γöé
- Γöé Γöébutton. This style is valid Γöé
- Γöé Γöéonly in combination with the Γöé
- Γöé ΓöéBS_PUSHBUTTON style or the Γöé
- Γöé ΓöéPUSHBUTTON statement in a Γöé
- Γöé Γöéresource-definition file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_NOCURSORSELECT ΓöéCreates an auto-radio button Γöé
- Γöé Γöéthat will not be selected Γöé
- Γöé Γöéautomatically when the user Γöé
- Γöé Γöémoves the cursor to the buttonΓöé
- Γöé Γöéusing the cursor-movement Γöé
- Γöé Γöékeys. This style is valid onlyΓöé
- Γöé Γöéin combination with the Γöé
- Γöé ΓöéBS_AUTORADIOBUTTON style or Γöé
- Γöé Γöéthe AUTORADIOBUTTON statement Γöé
- Γöé Γöéin a resource-definition file.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_NOBORDER ΓöéCreates a push button that hasΓöé
- Γöé Γöéno border. This style is validΓöé
- Γöé Γöéonly in combination with the Γöé
- Γöé ΓöéBS_PUSHBUTTON style or the Γöé
- Γöé ΓöéPUSHBUTTON statement in a Γöé
- Γöé Γöéresource-definition file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_NOPOINTERFOCUS ΓöéCreates a radio button or Γöé
- Γöé Γöécheck box that does not Γöé
- Γöé Γöéreceive the keyboard focus Γöé
- Γöé Γöéwhen the user selects it. ThisΓöé
- Γöé Γöéstyle is valid in combination Γöé
- Γöé Γöéwith the BS_AUTORADIOBUTTON, Γöé
- Γöé ΓöéBS_RADIOBUTTON, BS_3STATE, Γöé
- Γöé ΓöéBS_AUTO3STATE, Γöé
- Γöé ΓöéBS_AUTOCHECKBOX, and Γöé
- Γöé ΓöéBS_CHECKBOX styles, or the Γöé
- Γöé ΓöéAUTORADIOBUTTON, RADIOBUTTON, Γöé
- Γöé ΓöéAUTOCHECKBOX, or CHECKBOX Γöé
- Γöé Γöéstatements in a Γöé
- Γöé Γöéresource-definition file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_PUSHBUTTON ΓöéCreates a push button-a Γöé
- Γöé Γöéround-cornered rectangle with Γöé
- Γöé Γöétext displayed inside it. WhenΓöé
- Γöé Γöéselected, the push button Γöé
- Γöé Γöéposts a WM_COMMAND message to Γöé
- Γöé Γöéits owner window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_RADIOBUTTON ΓöéCreates a radio button-a smallΓöé
- Γöé Γöécircle that has text displayedΓöé
- Γöé Γöéto its right. Radio buttons Γöé
- Γöé Γöéusually are used in groups of Γöé
- Γöé Γöérelated, but exclusive, Γöé
- Γöé Γöéchoices. When the user selectsΓöé
- Γöé Γöéa radio button, the button Γöé
- Γöé Γöésends a WM_CONTROL message to Γöé
- Γöé Γöéits owner window. The user Γöé
- Γöé Γöéshould select the button and Γöé
- Γöé Γöéremove the selection from the Γöé
- Γöé Γöéother radio buttons in the Γöé
- Γöé Γöégroup. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_SYSCOMMAND ΓöéCreates a button that posts a Γöé
- Γöé ΓöéWM_SYSCOMMAND message (insteadΓöé
- Γöé Γöéof a WM_COMMAND message) to Γöé
- Γöé Γöéthe owner window when the userΓöé
- Γöé Γöéselects the button. This styleΓöé
- Γöé Γöéis valid only in combination Γöé
- Γöé Γöéwith the BS_PUSHBUTTON style Γöé
- Γöé Γöéor the PUSHBUTTON statement inΓöé
- Γöé Γöéa resource-definition file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBS_USERBUTTON ΓöéCreates a user-defined button Γöé
- Γöé Γöéthat sends a WM_CONTROL Γöé
- Γöé Γöémessage to the owner window Γöé
- Γöé Γöéwhen the button needs to be Γöé
- Γöé Γöédrawn, highlighted, or Γöé
- Γöé Γöédisabled. A user-defined Γöé
- Γöé Γöébutton also posts WM_COMMAND Γöé
- Γöé Γöémessages to the owner window Γöé
- Γöé Γöéwhen the user selects the Γöé
- Γöé Γöébutton. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 8.1.3. Default Button Behavior ΓòÉΓòÉΓòÉ
-
- Following are the messages processed by the predefined button-control window
- class (WC_BUTTON). Each message is described in terms of how a button control
- responds to that message.
-
- Messages Processed by the WC_BUTTON Class
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_CLICK ΓöéSends a WM_BUTTON1DOWN and Γöé
- Γöé ΓöéWM_BUTTON1UP message to itselfΓöé
- Γöé Γöéto simulate a user button Γöé
- Γöé Γöéselection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_QUERYCHECK ΓöéReturns the checked state of Γöé
- Γöé Γöéthe button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_QUERYCHECKINDEX ΓöéReturns the 0-based index to Γöé
- Γöé Γöéthe selected button in a Γöé
- Γöé Γöégroup. Returns -1 if no buttonΓöé
- Γöé Γöéin the group is selected or ifΓöé
- Γöé Γöéthe button receiving the Γöé
- Γöé Γöémessage is not a radio button Γöé
- Γöé Γöéor an auto-radio button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_QUERYHILITE ΓöéReturns the highlighted state Γöé
- Γöé Γöéof the button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_SETCHECK ΓöéSets the checked state of the Γöé
- Γöé Γöébutton and returns the Γöé
- Γöé Γöéprevious checked state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_SETDEFAULT ΓöéSets the default button state Γöé
- Γöé Γöéand redraws the button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_SETHILITE ΓöéSets the highlighted state of Γöé
- Γöé Γöéthe button and returns the Γöé
- Γöé Γöéprevious highlighted state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéMarks button 1, sending a Γöé
- Γöé ΓöéBN_DBLCLICKED notification Γöé
- Γöé Γöécode when the button-up Γöé
- Γöé Γöémessage arrives. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéSets the button 1 window so itΓöé
- Γöé Γöécan capture mouse input. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1UP ΓöéIf the button 1 window can Γöé
- Γöé Γöécapture mouse input, and if Γöé
- Γöé Γöéthe mouse pointer is inside Γöé
- Γöé Γöébutton 1 when the button is Γöé
- Γöé Γöéreleased, this message Γöé
- Γöé Γöéreleases the mouse and sends aΓöé
- Γöé Γöénotification message to the Γöé
- Γöé Γöéowner window. If the button isΓöé
- Γöé Γöéa push button, the push buttonΓöé
- Γöé Γöécontrol posts a WM_COMMAND Γöé
- Γöé Γöémessage; otherwise, the buttonΓöé
- Γöé Γöécontrol sends a WM_CONTROL Γöé
- Γöé Γöémessage with the BN_CLICKED Γöé
- Γöé Γöénotification code. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéSets the button window so it Γöé
- Γöé Γöécan capture mouse input when Γöé
- Γöé Γöéthe spacebar is pressed; Γöé
- Γöé Γöéreleases the mouse when the Γöé
- Γöé Γöéspacebar is released. Passes Γöé
- Γöé Γöéother key messages to the Γöé
- Γöé Γöédefault window procedure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéValidates the requested buttonΓöé
- Γöé Γöéstyle and sets the window Γöé
- Γöé Γöétext. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéFrees the memory containing Γöé
- Γöé Γöéthe window's text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéSent when an application Γöé
- Γöé Γöéchanges the enabled state of aΓöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MATCHMNEMONIC ΓöéReturns TRUE if mp1 matches a Γöé
- Γöé Γöémnemonic in the control Γöé
- Γöé Γöéwindow's text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéSets the default mouse Γöé
- Γöé Γöépointer. If the button has theΓöé
- Γöé Γöémouse captured, the button's Γöé
- Γöé Γöéhighlighted state changes as Γöé
- Γöé Γöéthe mouse pointer moves in andΓöé
- Γöé Γöéout of the button boundary. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéDraws the button according to Γöé
- Γöé Γöéits style and current state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYDLGCODE ΓöéReturns the DLGC_BUTTON code Γöé
- Γöé Γöécombined with other DLGC_ Γöé
- Γöé Γöécodes that designate the Γöé
- Γöé Γöébutton's type. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéReturns the requested window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETFOCUS ΓöéCreates a cursor if the Γöé
- Γöé Γöébutton-control window is Γöé
- Γöé Γöéreceiving the focus. Destroys Γöé
- Γöé Γöéthe cursor if the Γöé
- Γöé Γöébutton-control window is Γöé
- Γöé Γöélosing the focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéSets the requested window Γöé
- Γöé Γöéparameters and redraws the Γöé
- Γöé Γöébutton, including the cursor, Γöé
- Γöé Γöéif the button-control window Γöé
- Γöé Γöéhas the focus. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 8.1.4. Button Notification Messages ΓòÉΓòÉΓòÉ
-
- A button that was created using the BS_PUSHBUTTON or BS_USERBUTTON style posts
- a WM_COMMAND message to its owner when the user selects it. An application can
- change this behavior by combining the BS_HELP or BS_SYSCOMMAND styles with the
- BS_PUSHBUTTON or BS_USERBUTTON styles when creating the button.
-
- A button control that has a style other than BS_PUSHBUTTON or BS_USERBUTTON
- sends WM_CONTROL messages to its owner when the user selects it.
-
- When the user selects a push button using the mouse pointer, the system
- automatically highlights the button. The button's window procedure tracks the
- movement of the pointer until the user releases the button. If the user moves
- the pointer so that it is outside the button boundary, the system turns off the
- highlight. The push button control does not post a WM_COMMAND message until
- the user releases the pointer button, and then, only if the button is released
- inside the push button boundary. When the owner window receives a WM_COMMAND
- message from a push button, the low word of the first parameter in the message
- contains the identifier of the button as specified either in the dialog
- template or in the WinCreateWindow function when the button was created.
-
- An application should avoid duplicating identifiers for menu items and button
- controls, because both the items and the controls post identifiers to owner
- windows as WM_COMMAND messages. However, the application can determine whether
- a WM_COMMAND message came from a menu or a push button control by looking for
- the value CMDSRC_MENU or CMDSRC_PUSHBUTTON in the low word of the message's
- second parameter.
-
- When the user selects any button other than a push button, that button sends a
- WM_CONTROL message. The application can examine SHORT1FROMMP(mp1) in the
- WM_CONTROL message to find the button identifier, and can examine
- SHORT2FROMMP(mp2) to determine the notification code for the control message.
- The notification code can be one of the following:
-
- Notification Code for Button Control Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBN_CLICKED ΓöéThe user selected the button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBN_DBLCLICKED ΓöéThe user double-clicked the button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBN_PAINT ΓöéA user-defined button needs to be drawn. Γöé
- Γöé ΓöéButtons with the BS_USERBUTTON style send Γöé
- Γöé Γöéthis notification code to instruct the owner Γöé
- Γöé Γöéwindow to draw the button control. The Γöé
- Γöé Γöésecond message parameter of the WM_CONTROL Γöé
- Γöé Γöémessage contains a pointer to a USERBUTTON Γöé
- Γöé Γöéstructure that contains the information Γöé
- Γöé Γöénecessary for drawing the button. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- When the user selects a check box or radio button, the button control sends the
- WM_CONTROL message with the BN_CLICKED notification code to the owner window.
- In response, the owner window should set the display state of the button by
- sending the appropriate message back to the button.
-
- An application need not respond to WM_CONTROL messages sent by an auto-check
- box or an auto-radio button; the system automatically sets the states of these
- buttons.
-
-
- ΓòÉΓòÉΓòÉ 8.1.5. Button States ΓòÉΓòÉΓòÉ
-
- An application can query and set the highlighted and checked states of its
- buttons by sending messages to them. An application can obtain the handle of a
- button by calling WinWindowFromID, using the parent window handle and the
- identifier of the button. In the case of a dialog window, the parent window
- would be the dialog window, and the identifier would be the button identifier
- from the dialog template.
-
- Button-control text is stored as window text. An application can set and
- retrieve this text by using the WinSetWindowText and WinQueryWindowText
- functions. To set the size, position, and visibility of a button control, an
- application uses the standard window functions.
-
-
- ΓòÉΓòÉΓòÉ 8.1.6. Custom Buttons ΓòÉΓòÉΓòÉ
-
- An application can customize the appearance of a button by using the
- BS_USERBUTTON style in combination with other button styles. The owner window
- receives WM_CONTROL messages for these custom buttons whenever they must be
- drawn, highlighted, or disabled.
-
- When a button must be drawn, the owner window receives a WM_CONTROL message
- with the high word of the first parameter equal to BN_PAINT. The second
- parameter is a pointer to a USERBUTTON structure that contains information the
- application needs to draw the button.
-
- An application uses the hwnd member of the USERBUTTON structure in a call to
- the WinQueryWindowRect function to find the bounding rectangle for the button.
- The hps member is used as a presentation space for any drawing. The fsState
- member contains flags that tell an application how to draw the button:
- highlighted, unhighlighted, or disabled. The fsStateOld member contains flags
- that describe the current highlighted, unhighlighted, or disabled state of the
- button.
-
-
- ΓòÉΓòÉΓòÉ 8.2. Using Button Controls ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Create a dialog template for a button resource.
- o Create a button for a client window.
-
- An application creates a group by setting the WS_GROUP style bit for the first
- member of the group.
-
-
- ΓòÉΓòÉΓòÉ 8.2.1. Using Buttons in a Dialog Window ΓòÉΓòÉΓòÉ
-
- You can define dialog-window buttons as part of a dialog template in a
- resource-definition file, as shown in the following Resource Compiler
- source-code fragment:
-
-
- DefiningDialog - WindowButtonsinaDialogTemplate
-
-
- DLGTEMPLATE IDD_BUTTON
- BEGIN
- DIALOG "", 2, 10, 10, 235, 180, WS_VISIBLE, FCF_DLGBORDER
- BEGIN
- AUTORADIOBUTTON "Radio~1", ID_RADIO1, 15, 80, 45, 12, WS_GROUP
- AUTORADIOBUTTON "Radio~2", ID_RADIO2, 15, 60, 45, 12
- AUTORADIOBUTTON "Radio~3", ID_RADIO3, 15, 40, 45, 12
- AUTORADIOBUTTON "Radio~4", ID_RADIO4, 15, 20, 45, 12
-
- PUSHBUTTON "Button 1", ID_PUSH1, 20 100, 50, 14, WS_GROUP
- PUSHBUTTON "Button 2", ID_PUSH2, 75, 100, 50, 14, WS_GROUP
- PUSHBUTTON "Button 3", ID_PUSH3, 130, 100, 50, 14, WS_GROUP
-
- CHECKBOX "Check Box 1", ID_CHECK1, 150, 65, 65, 12, WS_GROUP
- CHECKBOX "no toggle", ID_CHECK2, 150, 40, 58, 12, WS_GROUP
- AUTOCHECKBOX "Check Box 3", ID_CHECK3, 150, 20, 65, 12, WS_GROUP
-
- DEFPUSHBUTTON "OK", DID_OK, 75, 26, 46, 20, WS_GROUP
- END
- END
-
- Each button in a dialog window has an identifier (for example, ID_RADIO1) that
- allows an application to identify the source of the WM_COMMAND and WM_CONTROL
- messages. An application can use the identifier as the second argument of the
- WinWindowFromID function to retrieve the button-window handle.
-
- The dialog template also contains the text for each button. For push buttons,
- this text is displayed in a rectangular box. If the text is too long to fit in
- the box, the text is clipped. For radio buttons and check boxes, text is
- displayed to the right of the button. A user selects the button by clicking
- either the button or the text itself.
-
- The WS_GROUP style identifies the beginning of each new group of buttons. In
- the preceding example, the four auto-radio buttons are in the same group, and
- each of the other buttons is in its own group. The auto-radio buttons in the
- first group can be selected one at a time only. An application must ensure
- that only one check box in a group is selected at a time. The order in which
- items can be selected in the group can wrap around from the end of the item
- list to its beginning.
-
- Notice that the DEFPUSHBUTTON style in the preceding example has the identifier
- DID_OK. It is customary to include an OK button with this identifier in most
- dialog windows to provide a uniform user interface. The DEFPUSHBUTTON style
- draws a thick border around a button and allows a user to select the button by
- pressing the spacebar.
-
- The dialog-window procedure for a dialog window that contains buttons must
- respond to WM_COMMAND and WM_CONTROL messages. A common strategy is to use
- auto-radio buttons and auto-check boxes to let the user set a list of
- capabilities for a command, and, then, let the user execute the command by
- choosing an OK push button. With this strategy, the dialog-window procedure
- ignores all WM_CONTROL messages that come from auto-radio buttons and
- auto-check boxes. When the dialog-window procedure receives a WM_COMMAND
- message for the OK push button, the procedure should query the auto-radio
- buttons and auto-check boxes to determine which options have been selected.
-
-
- ΓòÉΓòÉΓòÉ 8.2.2. Using Buttons in a Client Window ΓòÉΓòÉΓòÉ
-
- An application can create a button control using an application client window
- as the owner. The following code fragment shows how an application can use
- buttons in client windows:
-
-
- CreatingaButtonControlforaClientWindow
-
- #define ID_PBWINDOW 110
- HWND hwndButton,hwndClient;
-
- /* Create a button window. */
- hwndButton = WinCreateWindow(hwndClient, /* Parent window */
- WC_BUTTON, /* Class window */
- "Test Button" /* Button text */
- WS_VISIBLE | /* Visible style */
- BS_PUSHBUTTON, /* Button style */
- 10, 10, /* x, y */
- 70, 60, /* cx, cy */
- hwndClient, /* Owner window */
- HWND_TOP, /* Top of z-order */
- ID_PBWINDOW, /* Identifier */
- NULL, /* Control data */
- NULL); /* parameters */
-
- Once created in the client window, the button control posts a WM_COMMAND
- message or sends a WM_CONTROL message to the client-window procedure. This
- window procedure should examine the message identifier to determine which
- button posted or sent the message.
-
- An application that has client-window buttons can move and size the buttons
- when the client window receives a WM_SIZE message. An application can move and
- size a window by using the WinSetWindowPos function. An application can obtain
- a window handle for a button control by calling the WinWindowFromID function,
- specifying the handle of the parent window and the window identifier for each
- button.
-
-
- ΓòÉΓòÉΓòÉ 8.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions, structures, and messages used with button
- controls:
-
- Button-Control Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateWindow ΓöéCreates a new window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowText ΓöéCopies window text into a buffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowText ΓöéSets the window text for the Γöé
- Γöé Γöéspecified window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWindowFromID ΓöéReturns the handle of the child Γöé
- Γöé Γöéwindow with the specified identify. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Button-Control Structure
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéUSERBUTTON ΓöéUser-button structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Received by a Button Control
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_CLICK ΓöéApplication sends this message to Γöé
- Γöé Γöécause the effect of the user Γöé
- Γöé Γöéclicking a push button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_QUERYCHECK ΓöéReturns the zero-based index of a Γöé
- Γöé Γöéchecked radio button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_QUERYCHECKINDEX ΓöéReturns the zero-based index of a Γöé
- Γöé Γöéchecked radio button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_QUERYHILITE ΓöéReturns the highlighting state of a Γöé
- Γöé Γöébutton control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_SETCHECK ΓöéSets the checked state of a button Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_SETDEFAULT ΓöéSets the default state of a button Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBM_SETHILITE ΓöéSets the highlight state of a buttonΓöé
- Γöé Γöécontrol. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Generated by a Button Control
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_COMMAND ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner, or when a keystroke has been Γöé
- Γöé Γöétranslated by an accelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to a control's owner window Γöé
- Γöé Γöéwhen the pointer moves over the Γöé
- Γöé Γöécontrol window, allowing the owner Γöé
- Γöé Γöéto set the pointer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéSets the enable state of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HELP ΓöéOccurs when a control procedure doesΓöé
- Γöé Γöénot expect to receive this message Γöé
- Γöé Γöéand, therefore, takes no action on Γöé
- Γöé Γöéit, other than to set count to the Γöé
- Γöé Γöédefault value of NULL. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MATCHMNEMONIC ΓöéSent by the dialog box to a control Γöé
- Γöé Γöéwindow to determine whether a typed Γöé
- Γöé Γöécharacter matches a mnemonic in its Γöé
- Γöé Γöéwindow text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé Γöéconversion of DBCS characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe button control window procedure Γöé
- Γöé Γöéwindow parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the button control window Γöé
- Γöé Γöéprocedure window parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SYSCOMMAND ΓöéOccurs when a control window has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner, or when a keystroke has been Γöé
- Γöé Γöétranslated by an accelerator table Γöé
- Γöé Γöéinto a WM_SYSCOMMAND. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 9. List-Box Controls ΓòÉΓòÉΓòÉ
-
- A list box is a control window that displays several text items at a time, one
- or more of which can be selected by the user. This chapter explains how to
- create and use list-box controls in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 9.1. About List Boxes ΓòÉΓòÉΓòÉ
-
- An application uses a list box when it requires a list of selectable fields
- that is too large for the display area or a list of choices that can change
- dynamically. Each list item contains a text string and a handle. Usually, the
- text string is displayed in the list-box window; but the handle is available to
- the application to reference other data associated with each of the items in
- the list.
-
- A list box always is owned by another window that receives messages from the
- list box when events occur, such as when a user selects an item from the list
- box. Typically, the owner is a dialog window (as shown in the following
- figure,) or the client window of an application frame window. The client- or
- dialog-window procedure defined by the application responds to messages sent
- from the list box.
-
- List Box in a Dialog Box
-
- A list box always contains a scroll bar for use when the list box contains more
- items than can be displayed in the list-box window. The list box responds to
- mouse clicks in the scroll bar by scrolling the list; otherwise, the scroll bar
- is disabled.
-
- The maximum number of items permitted in a list box is 32767.
-
-
- ΓòÉΓòÉΓòÉ 9.2. Using List Boxes ΓòÉΓòÉΓòÉ
-
- An application uses a list-box control to display a list in a window. List
- boxes can be displayed in standard application windows, although they are more
- commonly used in dialog windows. In either case, notification messages are
- sent from the list box to its owner window, enabling the application to respond
- to user actions in the list.
-
- Once a list box is created, the application controls the insertion and deletion
- of list items. Items can be inserted at the end of the list, automatically
- sorted into the list, or inserted at a specified index position. Applications
- can turn list drawing on and off to speed up the process of inserting numerous
- items into a list.
-
- The owner-window procedure of the list box receives messages when a user
- manipulates the list-box data. Most default list actions (for example,
- highlighting selections and scrolling) are handled automatically by the list
- box itself. The application controls the responses when the user chooses an
- item in the list, either by double-clicking the item or by pressing Enter after
- an item is highlighted. The list box also notifies the application when the
- user changes the selection or scrolls the list.
-
- Normally, list items are text strings drawn by a list box. An application also
- can draw and highlight the items in a list. This enables the application to
- create customized lists that contain graphics. When an application creates a
- list box with the LS_OWNERDRAW style, the owner of the list box receives a
- WM_DRAWITEM message for each item that should be drawn or highlighted. This is
- similar to the owner-drawn style for menus, except that the owner-drawn style
- applies to the entire list rather than to individual items.
-
-
- ΓòÉΓòÉΓòÉ 9.2.1. Creating a List-Box Window ΓòÉΓòÉΓòÉ
-
- List boxes are WC_LISTBOX class windows and are predefined by the system.
- Applications can create list boxes by calling WinCreateWindow, using WC_LISTBOX
- as the window-class parameter.
-
- A list box passes notification messages to its owner window, so an application
- uses its client window, rather than the frame window, as the owner of the list.
- The client-window procedure receives the messages sent from the list box.
-
- For example, to create a list box that completely fills the client area of a
- frame window, an application would make the client window the owner and parent
- of the list-box window, and make the list-box window the same size as the
- client window. This is shown in the following code fragment.
-
- #define ID_LISTWINDOW 250
-
- HWND hwndClient,hwndList;
- RECTL rcl;
-
- /* How big is the client window? */
- WinQueryWindowRect(hwndClient, &rcl);
-
- /* Make a list-box window. */
- hwndList = WinCreateWindow(hwndClient, /* Parent */
- WC_LISTBOX, /* Class */
- "", /* Name */
- WS_VISIBLE | LS_NOADJUSTPOS, /* Style */
- 0, 0, /* x, y */
- rcl.xRight, rcl.yTop, /* cx, cy */
- hwndClient, /* Owner */
- HWND_TOP, /* Behind */
- ID_LISTWINDOW, /* ID */
- NULL, /* Control data */
- NULL); /* parameters */
-
- Because the list box draws its own border, and a frame-window border already
- surrounds the client area of a frame window due to the adjacent frame controls,
- the effect is a double-thick border around the list box. You can change this
- effect by calling WinInflateRect to overlap the list-box border with the
- surrounding frame-window border, resulting in only one list-box border.
-
- Notice that the code specifies the list-box window style LS_NOADJUSTPOS. This
- ensures that the list box is created exactly the specified size. If the
- LS_NOADJUSTPOS style is not specified, the list-box height is rounded down, if
- necessary, to make it a multiple of the item height. Enabling a list box to
- adjust its height automatically is useful for preventing partial items being
- displayed at the bottom of a list box.
-
-
- ΓòÉΓòÉΓòÉ 9.2.2. Using a List Box in a Dialog Window ΓòÉΓòÉΓòÉ
-
- List boxes most commonly are used in dialog windows. A list box in a dialog
- box is a control window, like a push button or an entry field. Typically, the
- application defines a list box as one item in a dialog template in the
- resource-definition file, as shown in the following resource compiler
- source-code fragment.
-
-
- DLGTEMPLATE IDD_OPEN
- BEGIN
- DIALOG "Open...", IDD_OPEN, 35, 35, 150, 135,
- FS_DLGBORDER, FCF_TITLEBAR
- BEGIN
- LISTBOX IDD_FILELIST, 15, 15, 90, 90
- PUSHBUTTON "Drive", IDD_DRIVEBUTTON, 115, 70, 30, 14
- DEFPUSHBUTTON "Open", IDD_OPENBUTTON, 115, 40, 30, 14
- PUSHBUTTON "Cancel", IDD_CANCELBUTTON, 115, 15, 30, 14
- END
- END
-
- Once the dialog resource is defined, the application loads and displays the
- dialog box as it would normally. The application inserts items into the list
- when processing the WM_INITDLG message.
-
- A dialog window with a list box usually has an OK button. The user can select
- items in the list, and then indicate a final selection by double-clicking,
- pressing Enter, or clicking the OK button. When the dialog-window procedure
- receives a message indicating that the user has clicked the OK button, it
- queries the list box to determine the current selection (or selections, if the
- list allows multiple selections), and then responds as though it had received a
- WM_CONTROL message with the LN_ENTER notification code.
-
-
- ΓòÉΓòÉΓòÉ 9.2.3. Adding or Deleting an Item in a List Box ΓòÉΓòÉΓòÉ
-
- Applications can add or delete an item in a list box by sending an
- LM_INSERTITEM or LM_DELETEITEM message to the list-box window. Items in a list
- are specified with a 0-based index (beginning at the top of the list). A new
- list is created empty; then, the application initializes the list by inserting
- items.
-
- The application specifies the text and position for each new item. It can
- specify an absolute-position index or one of the following predefined index
- values:
-
- List Item Position Index
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéValue ΓöéMeaning Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLIT_END ΓöéInsert item at end of list. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLIT_SORTASCENDING ΓöéInsert item alphabetically ascendingΓöé
- Γöé Γöéinto list. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLIT_SORTDESCENDING ΓöéInsert item alphabetically Γöé
- Γöé Γöédescending into list. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The application must send an LM_DELETEITEM message and supply the
- absolute-position index of the item when deleting items from a list. The
- LM_DELETEALL message deletes all items in a list.
-
- One way an application can speed up the insertion of list items is to suspend
- drawing until it has finished inserting items. This is a particularly valuable
- approach when using a sorted insertion process (when inserting one item can
- cause rearrangement of the entire list). You can turn off list drawing by
- calling WinEnableWindowUpdate, specifying FALSE for the enable parameter, and
- then calling WinShowWindow. This forces a total update when insertion is
- complete. The following code fragment illustrates this concept:
-
- HWND hwndFileList;
-
- /* Disable updates while filling the list. */
- WinEnableWindowUpdate(hwndFileList, FALSE);
- .
- . /* Send LM_INSERTITEM messages to insert all new items. */
- .
-
- /* Now cause the window to update and show the new information. */
- WinShowWindow(hwndFileList, TRUE);
-
- Notice that this optimization is unnecessary if an application is adding list
- items while processing a WM_INITDLG message, because the list box is not
- visible, and the list-box routines are internally optimized.
-
-
- ΓòÉΓòÉΓòÉ 9.2.4. Responding to a User Selection in a List Box ΓòÉΓòÉΓòÉ
-
- When a user chooses an item in a list, the primary notification an application
- receives is a WM_CONTROL message, with the LN_ENTER control code sent to the
- owner window of the list. Within the window procedure for the owner window,
- the application responds to the LN_ENTER control code by querying the list box
- for the current selection (or selections, in the case of an LS_MULTIPLESEL or
- LS_EXTENDEDSEL list box).
-
- The LN_ENTER control code notifies the application that the user has selected a
- list item. A WM_CONTROL message with an LN_SELECT control code is sent to the
- list-box owner whenever a selection in a list changes, such as when a user
- moves the mouse pointer up and down a list while pressing the mouse button. In
- this case, items are selected but not yet chosen. An application can ignore
- LN_SELECT control codes when the selection changes, responding only when the
- item is actually chosen. Or an application can use LN_SELECT to display
- context-dependent information that changes rapidly with each selection made by
- the user.
-
-
- ΓòÉΓòÉΓòÉ 9.2.5. Handling Multiple Selections ΓòÉΓòÉΓòÉ
-
- When a list box has the style LS_MULTIPLESEL or LS_EXTENDEDSEL, the user can
- select more than one item at a time. An application must use different
- strategies when working with these types of lists. For example, when
- responding to an LN_ENTER control code, it is not sufficient to send a single
- LM_QUERYSELECTION message, because that message will find only the first
- selection. To find all current selections, an application must continue
- sending LM_QUERYSELECTION messages, using the return index of the previous
- message as the starting index of the next message, until no items are returned.
-
-
- ΓòÉΓòÉΓòÉ 9.2.6. Creating an Owner-Drawn List Item ΓòÉΓòÉΓòÉ
-
- To draw its own list items, an application must create a list that has the
- style LS_OWNERDRAW: the owner window of the list box must respond to the
- WM_MEASUREITEM and WM_DRAWITEM messages.
-
- When the owner window receives a WM_MEASUREITEM message, it must return the
- height of the list item. All items in a list must have the same height
- (greater than or equal to 1). The WM_MEASUREITEM message is sent when the list
- box is created, and every time an item is added. You can change the item
- height by sending an LM_SETITEMHEIGHT message to the list-box window.
-
- The owner window receives a WM_DRAWITEM message whenever an item in an
- owner-drawn list should be drawn or highlighted. Although it is quite common
- for an owner-drawn list to draw items, it is less common to override the
- system-default method of highlighting. (This method inverts the rectangle that
- contains the item.) Do not create your own highlighting unless, for some
- reason, the system-default method is unacceptable to you.
-
- The WM_DRAWITEM message contains a pointer to an OWNERITEM data structure. The
- OWNERITEM structure contains the window identifier for the list box, a
- presentation-space handle, a bounding rectangle for the item, the position
- index for the item, and the application-defined item handle. This structure
- also contains two fields that determine whether a message draws, highlights, or
- removes the highlighting from an item. The OWNERITEM structure has the
- following form:
-
- typedef struct _OWNERITEM { /* oi */
- HWND hwnd;
- HPS hps;
- ULONG fsState;
- ULONG fsAttribute;
- ULONG fsStateOld;
- ULONG fsAttributeOld;
- RECTL rclItem;
- LONG idItem;
- ULONG hItem;
- } OWNERITEM;
-
- When the item must be drawn, the owner window receives a WM_DRAWITEM message
- with the fsState field set differently from the fsStateOld field. If the owner
- window draws the item in response to this message, it returns TRUE, telling the
- system not to draw the item. If the owner window returns FALSE, the system
- draws the item, using the default list-item drawing method.
-
- You can get the text of a list item by sending an LM_QUERYITEMTEXT message to
- the list-box window. You should draw the item using the hps and rclItem
- arguments provided in the OWNERITEM structure.
-
- If the item being drawn is currently selected, the fsState and fsStateOld
- fields are both TRUE; they both will be FALSE if the item is not currently
- selected. The window receiving a WM_DRAWITEM message can use this information
- to highlight the selected item at the same time it draws the item. If the
- owner window highlights the item, it must leave the fsState and fsStateOld
- fields equal to each other. If the system provides default highlighting for
- the item (by inverting the item rectangle), the owner window must set the
- fsState field to 1 and the fsStateOld field to 0 before returning from the
- WM_DRAWITEM message.
-
- The owner window also receives a WM_DRAWITEM message when the highlight state
- of a list item changes. For example, when a user clicks an item, the
- highlighting must be removed from the currently selected item, and the new
- selection must be highlighted. If these items are owner-drawn, the owner
- window receives one WM_DRAWITEM message for each unhighlighted item and one
- message for the newly highlighted item. To highlight an item, the fsState
- field must equal TRUE, and the fsStateOld field must equal FALSE. In this
- case, the application should highlight the item and return the fsState and
- fsStateOld fields equal to FALSE, which tells the system not to highlight the
- item. The application also can return the fsState and fsStateOld fields with
- two different (unequal) values and the list box will highlight the item (the
- default action).
-
- To remove highlighting from an item, the fsState field must equal FALSE and the
- fsStateOld field must equal TRUE. In this case, the application removes the
- highlighting and returns both the fsState and the fsStateOld fields equal to
- FALSE. This tells the system not to attempt to remove the highlighting. The
- application also can return the fsState and fsStateOld fields with two
- different (unequal) values, and the list box will remove the highlighting (the
- default response).
-
- The following code fragment shows these selection processes:
-
- OWNERITEM *poi;
-
- case WM_DRAWITEM:
-
- /* Convert mp2 into an OWNERITEM structure pointer. */
- poi = (POWNERITEM) PVOIDFROMMP(mp2);
-
- /* Test to see if this is drawing or highlighting/unhighlighting. */
- if (poi->fsState != poi->fsStateOld) {
-
- /* This is either highlighting or unhighlighting. */
- if (poi->fsState) {
- .
- . /* Highlight the item. */
- .
- }
- else {
- .
- . /* Remove the highlighting. */
- .
- }
-
- /* Set fsState = fsStateOld to tell system you did it. */
- poi->fsState = poi->fsStateOld = 0;
-
- return TRUE; /* Tells list box you did the highlighting. */
-
- }
- else {
- .
- . /* Draw the item. */
- .
- if (poi->fsState) { /* Checks to see if item is selected */
- .
- . /* Highlight the item. */
- .
- /* Set fsState = fsStateOld to tell system you did it. */
- }
- return TRUE; /* Tells list box you did the drawing. */
- }
-
-
- ΓòÉΓòÉΓòÉ 9.2.7. Default List-Box Behavior ΓòÉΓòÉΓòÉ
-
- This following table lists all the messages handled by the predefined list-box
- window-class procedure.
-
- Messages Handled by WC_LISTBOX Class
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_DELETEALL ΓöéDeletes all items in the list. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_DELETEITEM ΓöéRemoves the specified item from the Γöé
- Γöé Γöélist, redrawing the list as Γöé
- Γöé Γöénecessary. Returns the number of Γöé
- Γöé Γöéitems remaining in the list. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_INSERTITEM ΓöéInserts a new item in the list Γöé
- Γöé Γöéaccording to the position Γöé
- Γöé Γöéinformation passed with the message.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMCOUNT ΓöéReturns the number of items in the Γöé
- Γöé Γöélist. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMHANDLE ΓöéReturns the specified item handle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMTEXT ΓöéCopies the text of the specified Γöé
- Γöé Γöéitem to a buffer supplied by the Γöé
- Γöé Γöémessage sender. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMTEXTLENGTH ΓöéReturns the text length of the Γöé
- Γöé Γöéspecified item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYSELECTION ΓöéFor a single-selection list box, Γöé
- Γöé Γöéreturns the zero-based index of the Γöé
- Γöé Γöécurrently selected item. For a Γöé
- Γöé Γöémultiple-selection list box, returnsΓöé
- Γöé Γöéthe next selected item or LIT_NONE Γöé
- Γöé Γöéif no more items are selected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYTOPINDEX ΓöéReturns the zero-based index to the Γöé
- Γöé Γöéitem currently visible at the top ofΓöé
- Γöé Γöéthe list. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SEARCHSTRING ΓöéSearches the list for a match to theΓöé
- Γöé Γöéspecified string. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SELECTITEM ΓöéSelects the specified item. If the Γöé
- Γöé Γöélist is a single-selection list, Γöé
- Γöé Γöédeselects the previous selection. Γöé
- Γöé ΓöéSends a WM_CONTROL message (with theΓöé
- Γöé ΓöéLN_SELECT code) to the owner window.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETITEMHANDLE ΓöéSets the specified item handle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETITEMHEIGHT ΓöéSets the item height for the list. Γöé
- Γöé ΓöéAll items in the list have the same Γöé
- Γöé Γöéheight. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETITEMTEXT ΓöéSets the text for the specified Γöé
- Γöé Γöéitem. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETTOPINDEX ΓöéShows the specified item as the top Γöé
- Γöé Γöéitem in the list window, scrolling Γöé
- Γöé Γöéthe list as necessary. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ADJUSTWINDOWPOS ΓöéIf the list box has the style Γöé
- Γöé ΓöéLS_NOADJUSTPOS, makes no changes to Γöé
- Γöé Γöéthe SWP structure and returns FALSE.Γöé
- Γöé ΓöéOtherwise, adjusts the height of theΓöé
- Γöé Γöélist box so that a partial item is Γöé
- Γöé Γöénot shown at the bottom of the list.Γöé
- Γöé ΓöéReturns TRUE if the SWP structure isΓöé
- Γöé Γöéchanged. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DOWN ΓöéReturns TRUE; the message is Γöé
- Γöé Γöéignored. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DOWN ΓöéReturns TRUE; the message is Γöé
- Γöé Γöéignored. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéProcesses virtual keys for line and Γöé
- Γöé Γöépage scrolling. Sends an LN_ENTER Γöé
- Γöé Γöénotification code for the Enter key.Γöé
- Γöé ΓöéReturns TRUE if the key is Γöé
- Γöé Γöéprocessed; otherwise, passes the Γöé
- Γöé Γöémessage to the WinDefWindowProc Γöé
- Γöé Γöéfunction. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéCreates an empty list box with a Γöé
- Γöé Γöéscroll bar. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéDestroys the list and deallocates Γöé
- Γöé Γöéany memory allocated during its Γöé
- Γöé Γöéexistence. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéEnables the scroll bar if there are Γöé
- Γöé Γöémore items than can be displayed in Γöé
- Γöé Γöéa list-box window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéSets the mouse pointer to the arrow Γöé
- Γöé Γöéshape and returns TRUE to show that Γöé
- Γöé Γöéthe message was processed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéDraws the list box and its items. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETFOCUS ΓöéIf the list box is gaining the Γöé
- Γöé Γöéfocus, creates a cursor and sends anΓöé
- Γöé ΓöéLN_SETFOCUS notification code to theΓöé
- Γöé Γöéowner window. If the list box is Γöé
- Γöé Γöélosing the focus, this message Γöé
- Γöé Γöédestroys the cursor and sends an Γöé
- Γöé ΓöéLN_KILLFOCUS notification code to Γöé
- Γöé Γöéthe owner window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TIMER ΓöéUses timers to control automatic Γöé
- Γöé Γöéscrolling that occurs when a user Γöé
- Γöé Γöédrags the mouse pointer outside the Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SCROLL ΓöéHandles scrolling indicated by the Γöé
- Γöé Γöélist-box scroll bar. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 9.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the operating system structure, functions, and messages used with
- list boxes.
-
- List-Box Structure
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéOWNERITEM ΓöéOwner item. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- List-Box Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDeleteLboxItem ΓöéDeletes the indexed item from the Γöé
- Γöé Γöélist box. Returns the number of Γöé
- Γöé Γöéitems left. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinInsertLboxItem ΓöéInserts text into a list box at Γöé
- Γöé Γöéindex. Returns the actual index Γöé
- Γöé Γöéwhere it was inserted. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryLboxCount ΓöéReturns the number of items in the Γöé
- Γöé Γöélist box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryLboxItemText ΓöéFills the buffer with the text of Γöé
- Γöé Γöéthe indexed item. Returns the Γöé
- Γöé Γöélength of the text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryLboxItemTextLengΓöéReturns the length of the text of Γöé
- Γöé Γöéthe indexed item in the list box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryLboxSelectedItemΓöéReturns the index of the selected Γöé
- Γöé Γöéitem in the list box. For single Γöé
- Γöé Γöéselection only. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetLboxItemText ΓöéSets the text of the list box Γöé
- Γöé Γöéindexed item to buffer. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Generated by a List Box to Its Owner
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when a list box control has aΓöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DRAWITEM ΓöéNotification sent to the owner of a Γöé
- Γöé Γöélist box control each time an item Γöé
- Γöé Γöéis to be drawn. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MEASUREITEM ΓöéNotification sent to the owner of a Γöé
- Γöé Γöéspecific list box control to Γöé
- Γöé Γöéestablish the height and width of anΓöé
- Γöé Γöéitem in that control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé Γöéconversion of DBCS characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe list box control window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the list box control window Γöé
- Γöé Γöéparameters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Received by a List Box
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_DELETEALL ΓöéSent to a list box control to deleteΓöé
- Γöé Γöéall the items in the list box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_DELETEITEM ΓöéDeletes an item from the list box Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_INSERTITEM ΓöéInserts an item into a list box Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMCOUNT ΓöéReturns a count of the number of Γöé
- Γöé Γöéitems in the list box control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMHANDLE ΓöéReturns the handle of the indexed Γöé
- Γöé Γöéitem of the list box control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMTEXT ΓöéReturns the text of the specified Γöé
- Γöé Γöélist box item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYITEMTEXTLENGTH ΓöéReturns the length of the text of Γöé
- Γöé Γöéthe specified list box item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYSELECTION ΓöéUsed to enumerate the selected item,Γöé
- Γöé Γöéor items, in a list box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_QUERYTOPINDEX ΓöéObtains the index of the item Γöé
- Γöé Γöécurrently at the top of the list Γöé
- Γöé Γöébox. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SEARCHSTRING ΓöéReturns the index of the list box Γöé
- Γöé Γöéitem whose text matches the string. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SELECTITEM ΓöéUsed to set the selection state of Γöé
- Γöé Γöéan item in a list box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETITEMHANDLE ΓöéSets the handle of the specified Γöé
- Γöé Γöélist box item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETITEMHEIGHT ΓöéSets the height of the items in a Γöé
- Γöé Γöélist box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETITEMTEXT ΓöéSets the text into the specified Γöé
- Γöé Γöélist box item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLM_SETTOPINDEX ΓöéUsed to scroll a particular item to Γöé
- Γöé Γöéthe top of the list box. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 10. Combination-Box Controls ΓòÉΓòÉΓòÉ
-
- A combination box is two controls in one: an entry field and a list box. This
- chapter describes how to use combination-box controls, also called combination
- boxes and prompted entry fields, to let the user choose and edit items from a
- list in a PM application.
-
-
- ΓòÉΓòÉΓòÉ 10.1. About Combination Boxes ΓòÉΓòÉΓòÉ
-
- Combination-box controls enable the user to enter data by typing in the entry
- field or by choosing from a list in the list box. The following figure is an
- example of a combination box.
-
- Combination Box
-
- A combination-box control automatically manages the interaction between the
- entry field and the list box. For example, when the user chooses an item in
- the list box, the combination-box control displays the text for that item in
- the entry field. Then, the user can edit the text without affecting the item
- in the list box. When the user types a letter in the entry field, the
- combination-box control scrolls the list box contents so that items beginning
- with that letter become visible.
-
-
- ΓòÉΓòÉΓòÉ 10.1.1. Combination-Box Styles ΓòÉΓòÉΓòÉ
-
- A combination box can have one of the following styles:
-
- Combination-Box Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBS_SIMPLE ΓöéCreates a simple combination box Γöé
- Γöé Γöéthat always displays its list box. Γöé
- Γöé ΓöéThe user can enter and edit text in Γöé
- Γöé Γöéthe entry field or choose items fromΓöé
- Γöé Γöéthe list box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBS_DROPDOWN ΓöéCreates a drop-down combination box Γöé
- Γöé Γöéthat displays its list box only if Γöé
- Γöé Γöéthe user clicks the drop-down icon Γöé
- Γöé Γöéat the right end of the entry field.Γöé
- Γöé ΓöéThe combination-box control hides Γöé
- Γöé Γöéthe list box when the user clicks Γöé
- Γöé Γöéthe icon a second time. In a Γöé
- Γöé Γöédrop-down combination box, the user Γöé
- Γöé Γöécan enter and edit text in the entryΓöé
- Γöé Γöéfield or choose items from the list Γöé
- Γöé Γöébox. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBS_DROPDOWNLIST ΓöéCreates a drop-down-list combinationΓöé
- Γöé Γöébox that is similar to the drop-downΓöé
- Γöé Γöécombination box, except that the Γöé
- Γöé Γöéuser can choose items only from the Γöé
- Γöé Γöélist box. The user cannot enter or Γöé
- Γöé Γöéedit text in the entry field. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- For combination boxes that have the CBS_DROPDOWN or CBS_DROPDOWNLIST styles, an
- application can display the list by using the CBM_SHOWLIST message.
-
- Drop-Down Combination Box
-
- This is an example of a drop-down list box.
-
- Drop-Down List Box
-
- An application can determine whether the list is already showing by using the
- CBM_ISLISTSHOWING message.
-
- Applications also can use any of the entry-field (EM_) and list-box (LM_)
- messages with combination boxes. Entry-field messages affect the entry field;
- list-box messages affect the list box. For example, an application can use the
- LM_INSERTITEM message to insert items into the list box.
-
-
- ΓòÉΓòÉΓòÉ 10.1.2. Notification Codes ΓòÉΓòÉΓòÉ
-
- A combination-box control sends WM_CONTROL messages containing notification
- codes to its parent window. These notification codes are similar to those sent
- by entry-field and list-box controls. A combination-box control sends the
- following notification codes to its owner window:
-
- Combination-Box Notification Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBN_EFCHANGE ΓöéIndicates that the text in a combination-box Γöé
- Γöé Γöéentry field has changed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBN_EFSCROLL ΓöéIndicates that the text in a combination-box Γöé
- Γöé Γöéentry field has been scrolled. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBN_ENTER ΓöéIndicates that a combination-box item has Γöé
- Γöé Γöébeen selected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBN_LBSCROLL ΓöéIndicates that a combination-box list has Γöé
- Γöé Γöébeen scrolled. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBN_LBSELECT ΓöéIndicates that a combination-box list item Γöé
- Γöé Γöéhas been selected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBN_MEMERROR ΓöéIndicates that the combination-box control Γöé
- Γöé Γöécannot allocate sufficient memory. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBN_SHOWLIST ΓöéIndicates that a combination-box list has Γöé
- Γöé Γöédropped down (is visible). Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 10.2. Using Combination Boxes ΓòÉΓòÉΓòÉ
-
- You can create a combination box by using the WinCreateWindow function or by
- specifying a COMBOBOX statement in a dialog-window template in a resource file.
- When creating a combination box using WinCreateWindow, you must specify the
- predefined class WC_COMBOBOX. If you do not specify a style, the function uses
- the default styles WS_GROUP, WS_TABSTOP, and WS_VISIBLE.
-
-
- ΓòÉΓòÉΓòÉ 10.3. Summary ΓòÉΓòÉΓòÉ
-
- The following table lists the OS/2 messages used with combination-box controls:
-
- Messages Received by a Combination Box
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBM_HILITE ΓöéSets the highlighting state of the Γöé
- Γöé Γöéentry field control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCMB_ISLISTSHOWING ΓöéDetermines whether the list box Γöé
- Γöé Γöécontrol is showing. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCBM_SHOWLIST ΓöéSets the showing state of the list Γöé
- Γöé Γöébox control. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Message Sent From a Combination Box to Its Owner
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 11. Menus ΓòÉΓòÉΓòÉ
-
- A menu is a window that contains a list of items- text strings, bit maps, or
- images drawn by the application-that enables the user, by mouse or keyboard, to
- choose from these predetermined choices. This chapter describes how to use
- menus in your PM applications.
-
-
- ΓòÉΓòÉΓòÉ 11.1. About Menus ΓòÉΓòÉΓòÉ
-
- A menu always is owned by another window, usually a frame window. When a user
- makes a choice from a menu, the menu posts a message containing the unique
- identifier for the menu item to its owner by way of the owner window's window
- procedure.
-
- Menus
-
- An application typically defines its menus using Resource Compiler, and then
- associates the menus with a frame window when the frame window is created.
- Applications also can create menus by filling in menu-template data structures
- and creating windows with the WC_MENU class. Either way, applications can add,
- delete, or change menu items dynamically by issuing messages to menu windows.
-
-
- ΓòÉΓòÉΓòÉ 11.1.1. Menu Bar and Pull-Down Menus ΓòÉΓòÉΓòÉ
-
- A typical application uses a menu bar and several pull-down submenus. The
- pull-down submenus ordinarily are hidden, but become visible when the user
- makes selections in the menu bar. Pull-down submenus always are attached to
- the menu bar.
-
- The menu bar is a child of the frame window; the menu bar window handle is the
- key to communicating with the menu bar and its submenus. You can retrieve this
- handle by calling WinWindowFromID, with the handle of the parent window and the
- FID_MENU frame-control identifier. Most messages for the menu bar and its
- submenus can be issued to the menu-bar window. Flags in the messages tell the
- window whether to search submenus for requested menu items.
-
-
- ΓòÉΓòÉΓòÉ 11.1.2. Pop-Up Menus ΓòÉΓòÉΓòÉ
-
- A pop-up menu is like a pull-down submenu, except that it is not attached to
- the menu bar; it can appear anywhere in its parent window. A pop-up menu
- usually is associated with a portion of a window, such as the client window
- (see the following figure), or it is associated with a specific object, such as
- an icon.
-
- Pop-Up Menu
-
- A pop-up menu remains hidden until the user selects it (either by moving the
- cursor to the appropriate location and pressing Enter or clicking on the
- location with the mouse). Typically, pop-up menus are displayed at the
- position of the cursor or mouse pointer; they provide a quick mechanism for
- selecting often-used menu items.
-
- To include a pop-up menu in an application, you first must define a menu
- resource in a resource-definition file, then load the resource using the
- WinLoadMenu or WinCreateMenu functions. You must call WinPopupMenu to create
- the pop-up menu and display it in the parent window. Applications typically
- call WinPopupMenu in a window procedure in response to a user-generated
- message, such as WM_BUTTON2DBLCLK or WM_CHAR.
-
- WinPopupMenu requires that you specify the pop-up menu's handle and also the
- handles of the parent and owner windows of the pop-up menu. WinLoadMenu and
- WinCreateMenu return the handle of the pop-up menu window, but you must obtain
- the handles of the parent and owner by using the WinWindowFromID function.
-
- You determine the position of the pop-up menu in relation to its parent by
- specifying coordinates and style flags in WinPopupMenu. The x and y
- coordinates determine the position of the lower-left corner of the menu
- relative to the lower-left corner of the parent. The system may adjust this
- position, however, if you include the PU_HCONSTRAIN or PU_VCONSTRAIN style
- flags in the call to WinPopupMenu. If necessary, PU_HCONSTRAIN adjusts the
- horizontal position of the menu so that its left and right edges are within the
- borders of the desktop window. PU_VCONSTRAIN makes the same adjustments
- vertically. Without these flags, a desktop-level pop-up menu can lie partially
- off the screen, with some items not visible nor selectable.
-
- The PU_POSITIONONITEM flag also can affect the position of the pop-up menu.
- This flag positions the pop-up menu so that, when the pop-up menu appears, the
- specified item lies directly under the mouse pointer. Also, PU_POSITIONONITEM
- automatically selects the item. PU_POSITIONONITEM is useful for placing the
- current menu selection under the pointer so that, if the user releases the
- mouse button without selecting a new item, the current selection remains
- unchanged.
-
- The PU_SELECTITEM flag is similar to PU_POSITIONONITEM except that it just
- selects the specified item; it does not affect the position of the menu.
-
- You can enable the user to choose an item from a pop-up menu by using the same
- mouse button that was used to display the menu. To do this, specify the
- PU_MOUSEBUTTONn flag, where n corresponds to the mouse button used to display
- the menu. This flag specifies the mouse buttons for the user to interact with
- a pop-up menu once it is displayed.
-
- By using the PU_MOUSEBUTTONn flag, you can enable the user to display the
- pop-up menu, select an item, and dismiss the menu, all in one operation. For
- example, if your window procedure displays the pop-up window when the user
- double-clicks mouse button 2, specify the PU_MOUSEBUTTON2DOWN flag in the
- WinPopupMenu function. Then, the user can display the menu with mouse button
- 2; and, while holding the button down, select an item. When the user releases
- the button, the item is chosen and the menu dismissed.
-
-
- ΓòÉΓòÉΓòÉ 11.1.3. System Menu ΓòÉΓòÉΓòÉ
-
- The system menu in the upper-left corner of a standard frame window is
- different from the menus defined by the application. The system menu is
- controlled and defined almost exclusively by the system; your only decision
- about it is whether to include it when creating a frame window. (It is unusual
- for a frame window not to include a system menu.) The system menu generates
- WM_SYSCOMMAND messages instead of WM_COMMAND messages. Most applications
- simply use the default behavior for WM_SYSCOMMAND messages, although
- applications can add, delete, and change system-menu entries.
-
-
- ΓòÉΓòÉΓòÉ 11.1.4. Menu Items ΓòÉΓòÉΓòÉ
-
- All menus can contain two main types of menu items: command items and submenu
- items. When the user chooses a command item, the menu immediately posts a
- message to the parent window. When the user selects a submenu item, the menu
- displays a submenu from which the user may choose another item. Since a
- submenu window also can contain a submenu item, submenus can originate from
- other submenus.
-
- When the user chooses a command item from a menu, the menu system posts a
- WM_COMMAND, WM_SYSCOMMAND, or WM_HELP message to the owner window, depending on
- the style bits of the menu item.
-
- Applications can change the attributes, style, and contents of menu items, and
- insert and delete items at run time, to reflect changes in the command
- environment. An application also can add items to or delete items from the
- menu bar, a pop-up menu, or a submenu. For example, an application might
- maintain a menu of the fonts currently available in the system. This
- application would use graphics programming interface (GPI) calls to determine
- which fonts were available and, then, insert a menu item for each font into a
- submenu. Furthermore, the application might set the check-mark attribute of
- the menu item for the currently chosen font. When the user chose a new font,
- the application would remove the check-mark attribute from the previous choice
- and add it to the new choice.
-
-
- ΓòÉΓòÉΓòÉ 11.1.4.1. The Help Item ΓòÉΓòÉΓòÉ
-
- To present a standard interface to the novice user, all applications must have
- a Help item in their menu bars. The Help item is defined with a particular
- style, attributes, and position in the menu. When the user chooses the Help
- item, the menu posts a WM_HELP message to the owner window, enabling the
- application to respond appropriately.
-
- The item should read Help, have an identifier of 0, and have the
- MIS_BUTTONSEPARATOR or MIS_HELP item styles. The Help menu item should be the
- last item in the menu template, so that it is displayed as the rightmost item
- in the menu bar.
-
- If an application uses the system default accelerator table, the user can
- select the Help item using either a mouse or the F1 key.
-
-
- ΓòÉΓòÉΓòÉ 11.1.4.2. Menu-Item Styles ΓòÉΓòÉΓòÉ
-
- All menu items have a combination of style bits that determine what kind of
- data the item contains and what kind of message it generates when the user
- selects it. For example, a menu item can have the MIS_TEXT, MIS_BITMAP, or
- other styles that specify the visual representation of the menu item on the
- screen. Other styles determine what kinds of messages the item sends to its
- owner and whether the owner draws the item. Menu-item styles typically do not
- change during program execution, but you can query and set them dynamically by
- sending MM_QUERYITEM and MM_SETITEM messages with the menu-item identifier to
- the menu-bar window. For text menu items (MIS_TEXT), an MM_SETITEMTEXT message
- sets the text. The MM_QUERYITEMTEXT message queries the text of the item. For
- non-text menu items, the hItem field of the MENUITEM structure typically
- contains the handle of a display object, such as a bit-map handle for
- MIS_BITMAP menu items.
-
- An application can draw a menu item by setting the style MIS_OWNERDRAW for the
- menu item. This usually is done by specifying the MIS_OWNERDRAW style for the
- menu item in the resource-definition file; but it also can be done at run time.
- When the application draws a menu item, it must respond to messages from the
- menu each time the item must be drawn.
-
-
- ΓòÉΓòÉΓòÉ 11.1.4.3. Menu-Item Attributes ΓòÉΓòÉΓòÉ
-
- Menu items have attributes that determine how the items are displayed and
- whether or not the user can choose them. An application can set and query
- menu-item attributes by sending MM_SETITEMATTR and MM_QUERYITEMATTR messages,
- with the menu-item identifier, to the menu-bar window. If the specified item
- is in a submenu, there are two methods of determining its attributes. The
- first is to send MM_SETITEMATTR and MM_QUERYITEMATTR messages to the top-level
- menu, specifying the identifier of the item and setting a flag so that the
- message searches all submenus for the item. Then, you can retrieve the handle
- of the menu-bar by calling WinWindowFromID, with the handle of the frame window
- and the FID_MENU frame-control identifier.
-
- The second method, which is more efficient if you want to either work with more
- than one submenu item or set the same item several times, involves two steps:
-
- 1. Send an MM_QUERYITEM message to the menu, with the identifier of the
- submenu. The updated MENUITEM structure contains the window handle of the
- submenu.
-
- 2. Send an MM_QUERYITEMATTR (or MM_SETITEMATTR) message to the submenu window,
- specifying the identifier of the item in the submenu.
-
-
- ΓòÉΓòÉΓòÉ 11.1.4.4. Menu-Item Structure ΓòÉΓòÉΓòÉ
-
- A single menu item is defined by the MENUITEM data structure. This structure
- is used with the MM_INSERTITEM message to insert items in a menu or to query
- and set item characteristics with the MM_QUERYITEM and MM_SETITEM messages.
- The MENUITEM structure has the following form:
-
- typedef struct _MENUITEM { /* mi */
- SHORT iPosition;
- USHORT afStyle;
- USHORT afAttribute;
- USHORT id;
- HWND hwndSubMenu;
- ULONG hItem;
- } MENUITEM;
-
- You can derive the values of most of the fields in this structure directly from
- the resource-definition file. However, the last field in the structure, hItem,
- depends on the style of the menu item.
-
- The iPosition field specifies the ordinal position of the item within its menu
- window. If the item is part of the menu bar, iPosition specifies its relative
- left-to-right position, with 0 being the leftmost item. If the item is part of
- a submenu, iPosition specifies its relative top-to-bottom and left-to-right
- positions, with 0 being the upper-left item. An item with the
- MIS_BREAKSEPARATOR style in a pull-down menu causes a new column to begin.
-
- The afStyle field contains the style bits of the item. The afAttribute field
- contains the attribute bits.
-
- The id field contains the menu-item identifier. The identifier should be
- unique but does not have to be. Just remember that, when multiple items have
- the same identifier, they post the same command number in the WM_COMMAND,
- WM_SYSCOMMAND, and WM_HELP messages. Also, any message that specifies a menu
- item with a non-unique identifier will find the first item that has that
- identifier.
-
- The hwndSubMenu field contains the window handle of a submenu window (if the
- item is a submenu item). The hwndSubMenu field is NULL for command items.
-
- The hItem field contains a handle to the display object for the item, unless
- the item has the MIS_TEXT style, in which case, hItem is 0. For example, a
- menu item with the MIS_BITMAP style has an hItem field that is equal to its
- bit-map handle.
-
-
- ΓòÉΓòÉΓòÉ 11.1.5. Menu Access ΓòÉΓòÉΓòÉ
-
- The OS/2 operating system is designed to work with or without a mouse or other
- pointing device. The system provides default behavior that enables a user to
- interact with menus without a mouse. Following are the keystrokes that produce
- this default behavior:
-
- Keystroke Menu Access
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéKeystroke ΓöéAction Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAlt ΓöéToggles in and out of menu-bar mode. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAlt+Spacebar ΓöéShows the system menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéF10 ΓöéBacks up one level. If a submenu is Γöé
- Γöé Γöédisplayed, it is canceled. If no submenu is Γöé
- Γöé Γöédisplayed, this keystroke exits the menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéShift+Esc ΓöéShows the system menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRight Arrow ΓöéCycles to the next top-level menu item. If Γöé
- Γöé Γöéthe selected item is at the far-left side of Γöé
- Γöé Γöéthe menu, the menu code sends a WM_NEXTMENU Γöé
- Γöé Γöémessage to the frame window. The default Γöé
- Γöé Γöéprocessing by the frame window is to cycle Γöé
- Γöé Γöébetween the application and system menus. (AnΓöé
- Γöé Γöéapplication can modify this behavior by Γöé
- Γöé Γöésubclassing the frame window.) If the Γöé
- Γöé Γöéselected item is in a submenu, the next Γöé
- Γöé Γöécolumn in the submenu is selected, or the Γöé
- Γöé Γöénext top-level menu item is selected; this Γöé
- Γöé Γöékeystroke also can send or process a Γöé
- Γöé ΓöéWM_NEXTMENU message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLeft Arrow ΓöéWorks like the Right Arrow key, except in theΓöé
- Γöé Γöéopposite direction. In submenus, this Γöé
- Γöé Γöékeystroke backs up one column, except when Γöé
- Γöé Γöéthe currently selected item is in the Γöé
- Γöé Γöéfar-left column, in which case the previous Γöé
- Γöé Γöésubmenu is selected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéUp Arrow or ΓöéWhen pressed in a top-level menu, activates aΓöé
- ΓöéDown Arrow Γöésubmenu. When pressed in a submenu, this Γöé
- Γöé Γöékeystroke selects the previous or next or Γöé
- Γöé Γöéitem, respectively. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEnter ΓöéActivates a submenu, and highlights the firstΓöé
- Γöé Γöéitem if an item has a submenu associated withΓöé
- Γöé Γöéit; otherwise, this keystroke chooses the Γöé
- Γöé Γöéitem as though the user released the mouse Γöé
- Γöé Γöébutton while the item was selected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAlphabetic ΓöéSelects the first menu item with the Γöé
- Γöécharacter Γöéspecified character as its mnemonic key. A Γöé
- Γöé Γöémnemonic is defined for a menu item by Γöé
- Γöé Γöéplacing a tilde (~) before the character in Γöé
- Γöé Γöéthe menu text. If the selected item has a Γöé
- Γöé Γöésubmenu associated with it, the menu is Γöé
- Γöé Γöédisplayed, and the first item is highlighted;Γöé
- Γöé Γöéotherwise, the item is chosen. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- An application does not support the default keyboard behavior with any unusual
- code; instead, the application receives a message when a menu item is chosen by
- the keyboard just as though it had been chosen by a mouse.
-
-
- ΓòÉΓòÉΓòÉ 11.1.5.1. Mnemonics ΓòÉΓòÉΓòÉ
-
- Adding mnemonics to menu items is one way of providing the user with keyboard
- access to menus. You can indicate a mnemonic keystroke for a menu item by
- preceding a character in the item text with a tilde, as in ~nFile. Then, the
- user can choose that item by pressing the mnemonic key when the menu is active.
- The following figure shows the result on screen.
-
- Examples of Mnemonics
-
- The menu bar is active when the user presses and releases the Alt key, and the
- first item in the menu bar is highlighted. A pop-up or pull-down menu is active
- when it is open.
-
-
- ΓòÉΓòÉΓòÉ 11.1.5.2. Accelerators ΓòÉΓòÉΓòÉ
-
- In addition to mnemonics, a menu item can have an associated keyboard
- accelerator. Accelerators are different from mnemonics in that the menu need
- not be active for the accelerator key to work. If you have associated a menu
- item with a keyboard accelerator, display the accelerator to the right of the
- menu item. Do this in the resource-definition file by placing a tab character
- (\t) in the menu text before the characters that will be displayed on the
- right. For example, if the Close item had the F3 function key as its keyboard
- accelerator, the text for the item would be Close\tF3.
-
-
- ΓòÉΓòÉΓòÉ 11.2. Using Menus ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Define menu items in a resource file.
- o Include a menu bar in a standard window.
- o Create a pop-up menu.
- o Add a menu to a dialog window.
- o Access the system menu.
- o Respond to a the menu choice of a user.
- o Set and query menu-item attributes.
- o Add and delete menu items.
- o Create a custom menu item.
-
-
- ΓòÉΓòÉΓòÉ 11.2.1. Defining Menu Items in a Resource File ΓòÉΓòÉΓòÉ
-
- Typically, a menu resource represents the menu bar or pop-up menu and all the
- related submenus. A menu-item definition is organized as shown in the
- following code:
-
-
- MENUITEM item text, item identifier, item style, item attributes
-
- The menu resource-definition file specifies the text of each item in the menu,
- its unique identifier, its style and attributes, and whether it is a command
- item or a submenu item. A menu item that has no specification for style or
- attributes has the default style of MIS_TEXT and all attribute bits off,
- indicating that the item is enabled. The MIS_SEPARATOR style identifies
- nonselectable lines between menu items. The following figure is sample Resource
- Compiler source code that defines a menu resource. The code defines a menu with
- three submenu items in the menu bar (File, Edit, and Font) and a command item
- (Help). Each submenu has several command items, and the Font submenu has two
- other submenus within it.
-
-
- ResourceCompilerCodeDefiningaMenuResource
-
-
- MENU ID_MENU_RESOURCE
- BEGIN
- SUBMENU "~File", IDM_FILE
- BEGIN
- MENUITEM "~Open...", IDM_FI_OPEN
- MENUITEM "~Close\tF3", IDM_FI_CLOSE, 0, MIA_DISABLED
- MENUITEM "~Quit", IDM_FI_QUIT
- MENUITEM "", IDM_FI_SEP1, MIS_SEPARATOR
- MENUITEM "~About Sample", IDM_FI_ABOUT
- END
- SUBMENU "~Edit", IDM_EDIT
- BEGIN
- MENUITEM "~Undo", IDM_ED_UNDO, 0, MIA_DISABLED
- MENUITEM "", IDM_ED_SEP1, MIS_SEPARATOR
- MENUITEM "~Cut", IDM_ED_CUT
- MENUITEM "C~opy", IDM_ED_COPY
- MENUITEM "~Paste", IDM_ED_PASTE
- MENUITEM "C~lear", IDM_ED_CLEAR
- END
- SUBMENU "Font", IDM_FONT
- BEGIN
- SUBMENU "Style", IDM_FONT_STYLE
- BEGIN
- MENUITEM "Plain", IDM_FONT_STYLE_PLAIN
- MENUITEM "Bold", IDM_FONT_STYLE_BOLD
- MENUITEM "Italic", IDM_FONT_STYLE_ITALIC
- END
- SUBMENU "Size", IDM_FONT_SIZE
- BEGIN
- MENUITEM "10", IDM_FONT_SIZE_10
- MENUITEM "12", IDM_FONT_SIZE_12
- MENUITEM "14", IDM_FONT_SIZE_14
- END
- END
- MENUITEM "F1=Help", 0x00, MIS_TEXT | MIS_BUTTONSEPARATOR | MIS_HELP
- END
-
- To define a menu item with the MIS_BITMAP style, an application must use a tool
- such as Icon Editor to create a bit map, include the bit map in its
- resource-definition file, and define a menu in the file (as shown in the
- following figure). The text for the bit map menu items is an ASCII
- representation of the resource identifier of the bit map resource to be
- displayed for that item.
-
-
- DefiningaMenuwiththeMIS _ BITMAPStyle
-
-
- /* Bring externally created bit maps into the resource file. */
- BITMAP 101 button.bmp
- BITMAP 102 hirest.bmp
- BITMAP 103 hizoom.bmp
- BITMAP 104 hired.bmp
-
- /* Connect a menu item with a bit map. */
- SUBMENU "~Bitmaps", IDM_BITMAP
- BEGIN
- MENUITEM "#101", IDM_BM_01, MIS_BITMAP
- MENUITEM "#102", IDM_BM_02, MIS_BITMAP
- MENUITEM "#103", IDM_BM_03, MIS_BITMAP
- MENUITEM "#104", IDM_BM_04, MIS_BITMAP
- END
-
-
- ΓòÉΓòÉΓòÉ 11.2.2. Including a Menu Bar in a Standard Window ΓòÉΓòÉΓòÉ
-
- If you have defined a menu resource in a resource-definition file, you can use
- the menu resource to create a menu bar in a standard window. You include the
- menu bar by using the FCF_MENU attribute flag and specifying the menu-resource
- identifier in a call to WinCreateStdWindow, as shown in the following code
- fragment:
-
- #define ID_MENU_RESOURCE 100
-
- HWND hwndFrame;
- CHAR szClassName[]="MyClass";
- CHAR szTitle[]="My Title";
-
- ULONG flControlStyle = FCF_MENU | FCF_SIZEBORDER |
- FCF_TITLEBAR | FCF_ACCELTABLE;
-
- hwndFrame = WinCreateStdWindow(HWND_DESKTOP,
- WS_VISIBLE,
- &flControlStyle,
- szClassName,
- szTitle,
- 0, (HMODULE) NULL,
- ID_MENU_RESOURCE,
- NULL);
-
- After you make this call, the operating system automatically includes the menu
- in the window, drawing the menu bar across the top of the window. When the
- user chooses an item from the menu, the menu posts the message to the frame
- window. The frame window passes any WM_COMMAND messages to the client window.
- (The frame window does not pass WM_SYSCOMMAND messages to the client window.)
- WM_HELP messages are posted to the focus window. The WinDefWindowProc function
- passes WM_HELP messages to the parent window. If a WM_HELP message is passed
- to a frame window, the frame window calls the HK_HELP hook. Your client window
- procedure must process these messages to respond to the user's actions.
-
-
- ΓòÉΓòÉΓòÉ 11.2.3. Creating a Pop-up Menu ΓòÉΓòÉΓòÉ
-
- The following code fragment shows how to make a pop-up menu appear when the
- user double-clicks mouse button 2 anywhere in the parent window. The menu is
- positioned with the mouse pointer located on the item having the IDM_OPEN
- identifier and is constrained horizontally and vertically. Then, the user can
- select an item from the pop-up menu using mouse button 2.
-
- #define ID_MENU_RESOURCE 110
- #define IDM_OPEN 120
-
- HWND hwndFrame;
-
- MRESULT ClientWndProc(
- HWND hwnd,
- ULONG msg,
- MPARAM mp1,
- MPARAM mp2)
- {
- HWND hwndMenu;
- BOOL fSuccess;
-
- switch (msg) {
- .
- . /* Process other messages. */
- .
- case WM_BUTTON2DBLCLK:
- hwndMenu = WinLoadMenu(hwnd, (HMODULE) NULL, ID_MENU_RESOURCE);
- fSuccess = WinPopupMenu(hwnd,
- hwndFrame,
- hwndMenu,
- 20,
- 50,
- IDM_OPEN,
- PU_POSITIONONITEM |
- PU_HCONSTRAIN |
- PU_VCONSTRAIN |
- PU_MOUSEBUTTON2DOWN |
- PU_MOUSEBUTTON2);
-
- .
- .
- .
-
-
- ΓòÉΓòÉΓòÉ 11.2.4. Adding a Menu to a Dialog Window ΓòÉΓòÉΓòÉ
-
- You might want to use menus in windows that were not created using the
- WinCreateStdWindow function. For these windows, you can load a menu resource
- by using the WinLoadMenu function and specifying the parent window for the
- menu. WinLoadMenu assigns the specified menu resource to the parent. To see
- the menu in the window, you must send a WM_UPDATEFRAME message to the parent
- after loading the menu resource. This strategy is especially useful for adding
- menus to a window created as a dialog window, but it can be used no matter what
- type of window is specified as the parent.
-
-
- ΓòÉΓòÉΓòÉ 11.2.5. Accessing the System Menu ΓòÉΓòÉΓòÉ
-
- Although most applications do not alter the system menu, you can obtain the
- handle of the system menu by calling WinWindowFromID with a frame-window handle
- (or dialog-window handle) and the identifier FID_SYSMENU. Once you have the
- handle of the system menu, you can access the individual menu items by using
- predefined constants. For example, the following code fragment shows how to
- disable the Close menu item in the system menu of a window:
-
- HWND hwndSysMenu;
- HWND hwndFrame;
-
- hwndSysMenu = WinWindowFromID(hwndFrame, FID_SYSMENU);
-
- WinSendMsg(hwndSysMenu, MM_SETITEMATTR,
- MPFROM2SHORT(SC_CLOSE, TRUE),
- MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED));
-
-
- ΓòÉΓòÉΓòÉ 11.2.6. Responding to a User's Menu Choice ΓòÉΓòÉΓòÉ
-
- When a user chooses a menu item, the client window procedure receives a
- WM_COMMAND message with SHORT1FROMMP(mp1) equal to the menu identifier of the
- chosen item. Your application must use the menu identifier to guide its
- response to the choice. Typically, the code in the client window procedure
- resembles the following code fragment:
-
- case WM_COMMAND:
- DoMenuCommand(hwnd, SHORT1FROMMP(mp1));
- return 0;
-
- The function that translates the menu identifier into an action typically
- resembles the following code fragment:
-
-
- VOID DoMenuCommand(
- HWND hwnd,
- USHORT usItemID)
- {
-
- /* Test the menu item. */
- switch (usItemID) {
- case IDM_FI_NEW:
- DoNew(hwnd);
- break;
-
- .
- . /* etc. */
- .
-
- }
- }
-
- The menu window sends a WM_MENUSELECT message every time the menu selection
- changes. SHORT1FROMMP(mp1) contains the identifier of the item that is
- changing state, and SHORT2FROMMP(mp2) is a 16-bit Boolean value that describes
- whether or not the item is chosen; the mp2 parameter contains the handle of the
- menu.
-
- If the Boolean value is FALSE, the item is selected but not chosen; for
- example, the user may have moved the cursor or mouse pointer over the item
- while the button was down. An application can use this message to display Help
- information at the bottom of the application window. The return value is
- ignored.
-
- If the Boolean value is TRUE, the item is chosen-that is, the user pressed
- Enter or released the mouse button while an item was selected. If the
- application returns FALSE, the menu does not generate a WM_COMMAND,
- WM_SYSCOMMAND, or WM_HELP message, and the menu is not dismissed.
-
-
- ΓòÉΓòÉΓòÉ 11.2.7. Setting and Querying Menu-Item Attributes ΓòÉΓòÉΓòÉ
-
- Menu-item attributes are represented in the fAttribute field of the MENUITEM
- data structure. Typically, attributes are set in the resource-definition file
- of the menu and are changed at run time as required. Applications can use the
- MM_SETITEMATTR and MM_QUERYITEMATTR messages to set and query attributes for a
- particular menu item. One of the most common uses of these messages is to
- check and uncheck menu items to let the user know what option is selected
- currently. For example, if you have a menu item that should toggle between
- checked and unchecked each time the user selects it, you can use the following
- figure to change the checked attribute. In this example, you send an
- MM_QUERYITEMATTR message to the menu item to obtain its current checked
- attribute; then, you use the exclusive OR operator to toggle the state; and
- finally, you send the new attribute state back to the item using an
- MM_SETITEMATTR message.
-
-
- ChangingaMenuItemtoToggleBetweenCheckedandUnchecked
-
-
-
- usAttrib = SHORT1FROMMR(
- WinSendMsg(hwndMenu, /* Submenu window */
- MM_QUERYITEMATTR, /* Message */
- (MPARAM)itemID, /* Item identifier */
- (MPARAM)MIA_CHECKED /* Attribute mask */
- ));
-
- usAttrib = MIA_CHECKED; /* XOR to toggle checked attribute */
-
- WinSendMsg(hwndMenu, /* Submenu window */
- MM_SETITEMATTR, /* Message */
- (MPARAM)itemID, /* Item identifier */
- MPFROM2SHORT(MIA_CHECKED, usAttrib)); /* Attribute mask, value */
-
-
- ΓòÉΓòÉΓòÉ 11.2.8. Adding and Deleting Menu Items ΓòÉΓòÉΓòÉ
-
- An application can add and delete items from its menus dynamically by sending
- MM_INSERTITEM and MM_DELETEITEM messages to the menu window. Any item,
- including those in submenus, can be deleted by sending a message to the menu
- window. Messages to insert items in submenus must be sent to the submenu's
- window (rather than to the window of the top-level menu). You can retrieve the
- handle of a submenu of the menu bar by sending an MM_QUERYITEM message to the
- menu-bar and specifying the identifier of the submenu item for the submenu, as
- shown in the following code fragment:
-
- /* IDM_MYMENUID is the identifier of the submenu containing the item. */
-
- MENUITEM mi;
- HWND hwndMenu, hwndSubMenu, hwndPullDown,hwndFrame;
-
- hwndMenu = WinWindowFromID(hwndFrame, FID_MENU);
- WinSendMsg(hwndMenu, /* Handle of menu bar */
- MM_QUERYITEM, /* Message */
- MPFROM2SHORT(IDM_MYMENUID, TRUE), /* Submenu identifier */
- (MPARAM) &mi); /* Pointer to MENUITEM */
-
- hwndPullDown = mi.hwndSubMenu; /* Handle to submenu */
-
- Once the application has the handle of the submenu, it can insert an item by
- filling in a MENUITEM structure and sending an MM_INSERTITEM message to the
- submenu. For text-menu items, the application must send a pointer to the text
- string as well as to the MENUITEM structure, as shown in the following figure.
-
-
- InsertingaMenuItem
-
-
- PSZ pszNewItemString;
-
- mi.iPosition = MIT_END;
- mi.afStyle = MIS_TEXT;
- mi.afAttribute = 0;
- mi.id = IDM_MYMENU_FIRST;
- mi.hwndSubMenu = NULL;
- mi.hItem = 0;
-
- WinSendMsg(hwndPullDown, MM_INSERTITEM, (MPARAM) &mi,
- (MPARAM) pszNewItemString);
-
- To delete an item, the application sends an MM_DELETEITEM message to the menu
- bar, specifying the identifier of the item to delete. For example, to clear
- all the items following IDM_MYMENU_FIRST in a submenu in which the items are
- numbered sequentially, use the following code:
-
-
- USHORT usItemNum;
-
- /* Clear all the items in MYMENU. */
- hwndMenu = WinWindowFromID(hwndFrame, FID_MENU);
- usItemNum = IDM_MYMENU_FIRST;
- while (WinSendMsg(hwndMenu, MM_DELETEITEM,
- MPFROM2SHORT(usItemNum++, TRUE), NULL) != 0);
-
- Adding a complete submenu to the menu bar is a more complicated procedure than
- that shown in the previous examples. There are two strategies. The
- recommended technique is to define all possible submenus in your
- resource-definition file; and then, as your application runs, selectively
- remove and insert the submenus as needed.
-
- For example, assume that your application has a submenu that you want to be
- displayed only when a particular application tool is in use. You must first
- define the submenu as part of the main menu resource in your
- resource-definition file, so that the system reads in the resource menu
- template and creates the submenu window along with the rest of the menu. You
- then can remove the submenu from the menu bar, saving the title of the submenu
- and the MENUITEM structure that defines the submenu, as shown in the following
- figure:
-
-
- RemovingaSubmenufromtheMenuBar
-
-
- HWND hwndMenu, hwndClient;
- MENUITEM mi;
- CHAR szMenuTitle[MAX_STRINGSIZE];
-
- /* Remove a submenu so that you can replace it later. */
-
- /* Obtain the handle of a menu. */
- hwndMenu = WinWindowFromID(WinQueryWindow(hwndClient, QW_PARENT),
- FID_MENU);
-
- /* Obtain information on the item to remove. */
- WinSendMsg(hwndMenu, MM_QUERYITEM,
- MPFROM2SHORT(IDM_MENUID, TRUE), /* TRUE to search submenus */
- (MPARAM)&mi);
-
- /* Save the text for the submenu item. */
- WinSendMsg(hwndMenu, MM_QUERYITEMTEXT,
- MPFROM2SHORT(IDM_FONT, MAX_STRINGSIZE),
- (MPARAM)szMenuTitle);
-
- /* Remove the item, but retain mi and szMenuTitle. */
- WinSendMsg(hwndMenu, MM_REMOVEITEM,
- MPFROM2SHORT(IDM_FONT, TRUE), NULL);
-
- It is important to use the MM_REMOVEITEM message, rather than MM_DELETEITEM, to
- remove the item; deleting the item destroys the submenu window-removing it does
- not. The submenu should remain intact so that you can insert it later.
-
- To reinsert the submenu, send an MM_INSERTITEM message to the menu bar, passing
- the MENUITEM structure and menu title that you saved when you removed the item.
- The following code fragment shows how to insert a submenu that was removed by
- using the previous code example:
-
-
- /* Put the submenu back in and obtain the handle of the menu bar. */
- hwndMenu = WinWindowFromID(
- WinQueryWindow(hwndClient, QW_PARENT), FID_MENU);
-
- /* Use the information that you saved when you removed the menu. */
- WinSendMsg(hwndMenu, MM_INSERTITEM, (MPARAM)&mi,
- (MPARAM)szMenuTitle);
-
- The other technique that you can use to insert a submenu in the menu bar is to
- build up, in memory, a data structure as a menu template and use that template
- and WinCreateWindow to create a submenu. The resultant submenu window handle
- then is placed in the hwndSubMenu field of a MENUITEM structure, and the menu
- item is sent to the menu bar with an MM_INSERTITEM message.
-
- You also can create an empty submenu window by using WinCreateWindow. Pass
- NULL for the pCtlData and pPresParams parameters, instead of building the menu
- template in memory. Then insert a new menu item in the menu bar by using the
- MM_INSERTITEM message, setting the MIS_SUBMENU style, and putting the window
- handle of the created menu into the hwndSubMenu field. Then use the
- MM_INSERTITEM message to insert the items in the new pull-down menu.
-
-
- ΓòÉΓòÉΓòÉ 11.2.9. Creating a Custom Menu Item ΓòÉΓòÉΓòÉ
-
- Applications can customize the appearance of an individual menu item by setting
- the MIS_OWNERDRAW style bit for the item. The operating system sends two
- different messages to an application that include owner-drawn menu items:
- WM_MEASUREITEM and WM_DRAWITEM. Both messages include a pointer to an
- OWNERITEM data structure.
-
- WM_MEASUREITEM is sent only once for each owner-drawn item when the menu is
- initialized. The message is sent to the owner of the menu (typically, a frame
- window), which forwards the message to its client window. Typically, the
- client window procedure processes WM_MEASUREITEM by filling in the yTop and
- Right fields of the RECTL structure, specified by the rclItem field of this
- OWNERITEM structure; this specifies the size of the rectangle needed to enclose
- the item when it is drawn. The following code fragment responds to a
- WM_MEASUREITEM message.
-
- case WM_MEASUREITEM:
- ((POWNERITEM) mp2)->rclItem.xRight = 26;
- ((POWNERITEM) mp2)->rclItem.yTop = 10;
- return 0;
-
- If a menu item has the MIS_OWNERDRAW style, the owner window receives a
- WM_DRAWITEM message every time the menu item needs to be drawn. You process
- this message by using the hps and rclItem fields of the OWNERITEM structure to
- draw the item. There are two situations in which the owner window receives a
- WM_DRAWITEM message:
-
- o When the item must be redrawn completely
- o When the item must be highlighted or have its highlight removed.
-
- You can choose to handle one or both of these situations. Typically, you
- handle the drawing of the item. You may not want to handle the second
- situation, however, since the system-default behavior (inverting the bits in
- the item rectangle) often is acceptable.
-
- The two situations in which a WM_DRAWITEM message is received are detected by
- comparing the values of the fsState and fsStateOld fields of the OWNERITEM
- structure that is sent as part of the message. If the two fields are the same,
- draw the item. Before drawing the item, however, check its attributes to see
- whether it has the attributes MIA_CHECKED, MIA_FRAMED, or MIA_DISABLED. Then
- draw the item according to the attributes.
-
- For example, when the checked attribute of an owner-drawn menu item changes,
- the system sends a WM_DRAWITEM message to the item so that it can redraw itself
- and either draw or remove the check mark. If you want the system-default check
- mark, simply draw the item and leave the fsAttribute and fsAttributeOld fields
- unchanged; the system draws the check mark if necessary. If you draw the check
- mark yourself, clear the MIA_CHECKED bit in both fsAttribute and fsAttributeOld
- so that the system does not attempt to draw a check mark.
-
- In the same example, if fsAttribute and fsAttributeOld are not equal, the
- highlight showing that an item is selected needs to change. The MIA_HILITED
- bit of the fsAttribute field is set if the item needs to be highlighted and is
- not set if the highlight needs to be removed. If you do not want to provide
- your own highlighting, you should ignore any WM_DRAWITEM message in which
- fsAttribute and fsAttributeOld are not equal. If you do not alter these two
- fields, the system performs its default highlighting operation. If you want to
- provide your own visual cue that an item is selected, respond to a WM_DRAWITEM
- message in which the fsAttribute and fsAttributeOld fields are not equal by
- providing the cue and clearing the MIA_HILITED bit of both fields before
- returning from the message.
-
- Likewise, the MIA_CHECKED and MIA_FRAMED bits of fsAttribute and fsAttributeOld
- either can be used to perform the corresponding action or passed on, unchanged,
- so that the system performs the action.
-
- The following code fragment shows how to respond to a WM_DRAWITEM message when
- you want to draw the item and also be responsible for its highlighted state:
-
-
- case WM_DRAWITEM:
- {
- POWNERITEM poi;
- RECTL rcl;
- MPARAM mp2;
-
- poi = (POWNERITEM) mp2;
-
- /*
- * If the new attribute equals the old attribute,
- * redraw the entire item.
- */
-
- if (poi->fsAttribute == poi->fsAttributeOld) {
-
- /*
- * Draw the item in poi->hps and poi->rclItem, and check the
- * attributes for check marks. If you produce your own check marks,
- * use this line of code:
- *
- * poi->fsAttributeOld = (poi->fsAttribute &= ~MIA_CHECKED;
- */
-
- }
-
- /* Else highlight the item or remove its highlight. */
-
- else if ((poi->fsAttribute & MIA_HILITED) !=
- (poi->fsAttributeOld & MIA_HILITED)) {
-
- /*
- * Set bits the same so that the menu window does not highlight
- * the item or remove its highlight.
- */
-
- poi->fsAttributeOld = (poi->fsAttribute &= ~MIA_HILITED);
- }
- return TRUE; /* TRUE means the item is drawn. */
- } /* endcase */
-
-
- ΓòÉΓòÉΓòÉ 11.3. Summary ΓòÉΓòÉΓòÉ
-
- This section lists the OS/2 functions, structures, and messages used with
- menus.
-
- Menu Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateMenu ΓöéCreates a menu window from the menu Γöé
- Γöé Γöétemplate. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCheckMenuItem ΓöéSets the check state of the Γöé
- Γöé Γöéspecified menu item to the flag. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinEnableMenuItem ΓöéSets the state of the specified menuΓöé
- Γöé Γöéitem to the enable flag. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinIsMenuItemChecked ΓöéReturns the state (checked/not Γöé
- Γöé Γöéchecked) of the identified menu Γöé
- Γöé Γöéitem. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinIsMenuItemEnabled ΓöéReturns the state (enable/disable) Γöé
- Γöé Γöéof the specified menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinIsMenuItemValid ΓöéReturns TRUE if the specified item Γöé
- Γöé Γöéis a valid choice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinLoadMenu ΓöéCreates a menu window from the menu Γöé
- Γöé Γöétemplate Menuid from Resource, and Γöé
- Γöé Γöéreturns in Menu the window handle Γöé
- Γöé Γöéfor the created window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinPopupMenu ΓöéDisplays a pop-up menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetMenuItemText ΓöéSets the text for menu indexed item Γöé
- Γöé Γöéto buffer. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Menu Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMENUITEM ΓöéMenu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéOWNERITEM ΓöéOwner item. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Received by a Menu
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_DELETEITEM ΓöéDeletes a menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_ENDMENUMODE ΓöéSent to a menu control to terminate Γöé
- Γöé Γöémenu selection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_INSERTITEM ΓöéInserts a menu item in a menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_ISITEMVALID ΓöéReturns the selectable status of a Γöé
- Γöé Γöéspecified menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_ITEMIDFROMPOSITION ΓöéReturns the identity of a menu item Γöé
- Γöé Γöéof a specified index. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_ITEMPOSITIONFROMID ΓöéReturns the index of a menu item of Γöé
- Γöé Γöéa particular identify. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_QUERYITEM ΓöéReturns the definition of the Γöé
- Γöé Γöéspecified menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_QUERYITEMATTR ΓöéReturns the attributes of a menu Γöé
- Γöé Γöéitem. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_QUERYITEMCOUNT ΓöéReturns the number of items in the Γöé
- Γöé Γöémenu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_QUERYITEMRECT ΓöéReturns the bounding rectangle of a Γöé
- Γöé Γöémenu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_QUERYITEMTEXT ΓöéReturns the text of the specified Γöé
- Γöé Γöémenu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_QUERYITEMTEXTLENGTH ΓöéReturns the text length of the Γöé
- Γöé Γöéspecified menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_QUERYSELITEMID ΓöéReturns the identity of the selectedΓöé
- Γöé Γöémenu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_REMOVEITEM ΓöéRemoves a menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_SELECTITEM ΓöéSelects or deselects a menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_SETITEM ΓöéSets the definition of a menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_SETITEMATTR ΓöéSets the attributes of a menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_SETITEMHANDLE ΓöéSets the handle of a menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_SETITEMTEXT ΓöéSets the text of a menu item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMM_STARTMENUMODE ΓöéUsed to begin menu selection. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Generated by a Menu
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ADJUSTWINDOWPOS ΓöéSent by WinSetWindowPos to enable Γöé
- Γöé Γöéthe window to adjust its new Γöé
- Γöé Γöéposition or size whenever it is Γöé
- Γöé Γöéabout to be moved. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 2. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 3. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_COMMAND ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner or when a keystroke has been Γöé
- Γöé Γöétranslated by an accelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTEXTMENU ΓöéOccurs when the operator requests a Γöé
- Γöé Γöépop-up menu. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to the owner window of a Γöé
- Γöé Γöécontrol when the pointing device Γöé
- Γöé Γöépointer moves over the control Γöé
- Γöé Γöéwindow, enabling the owner to set Γöé
- Γöé Γöéthe pointer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéOccurs when an application requests Γöé
- Γöé Γöéthe creation of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéOccurs when an application requests Γöé
- Γöé Γöéthe destruction of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DRAWITEM ΓöéSent to the owner of a menu control Γöé
- Γöé Γöéeach time an item is to be drawn. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéSets the enable state of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_FOCUSCHANGE ΓöéOccurs when the window possessing Γöé
- Γöé Γöéthe focus is changed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HELP ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner or when a keystroke has been Γöé
- Γöé Γöétranslated by an accelerator table Γöé
- Γöé Γöéinto a WM_HELP. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_INITMENU ΓöéOccurs when a menu control is about Γöé
- Γöé Γöéto become active. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MEASUREITEM ΓöéSent to the owner of a meu control Γöé
- Γöé Γöéto establish the height for an item Γöé
- Γöé Γöéin that control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MENUEND ΓöéOccurs when a menu control is about Γöé
- Γöé Γöéto terminate. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MENUSELECT ΓöéOccurs when a menu item has been Γöé
- Γöé Γöéselected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéOccurs when the pointing device Γöé
- Γöé Γöépointer moves. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_NEXTMENU ΓöéOccurs when either the beginning or Γöé
- Γöé Γöéthe end of the menu is reached usingΓöé
- Γöé Γöéthe cursor control keys. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéOccurs when a window needs Γöé
- Γöé Γöérepainting. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé Γöéconversion of DBCS characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETFOCUS ΓöéOccurs when a window is to receive Γöé
- Γöé Γöéor lose the input focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the menu parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SYSCOMMAND ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner or when a keystroke has been Γöé
- Γöé Γöétranslated by an accelerator table Γöé
- Γöé Γöéinto a WM_SYSCOMMAND. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 12. Entry-Field Controls ΓòÉΓòÉΓòÉ
-
- An entry field is a control window that enables a user to view and edit a
- single line of text. This chapter describes how to create and use entry-field
- controls in your PM applications.
-
-
- ΓòÉΓòÉΓòÉ 12.1. About Entry Fields ΓòÉΓòÉΓòÉ
-
- An entry field provides the text-editing capabilities of a simple text editor
- and is useful whenever an application requires a short line of text from the
- user as illustrated in the following figure.
-
- Example of Entry Fields
-
- If the application requires more sophisticated text-editing capabilities and
- multiple lines of text from the user, the application can use a multiple-line
- entry (MLE) field. See Multiple-Line Entry Field Controls for more information
- about MLE controls.
-
- Both the user and the application can edit text in an entry field.
- Applications typically use entry fields in dialog windows, although they can be
- used in non-dialog windows as well.
-
- An application creates an entry field by specifying either the WC_ENTRYFIELD
- window class in the WinCreateWindow function or the ENTRYFIELD statement in a
- resource-definition file.
-
-
- ΓòÉΓòÉΓòÉ 12.1.1. Entry-Field Styles ΓòÉΓòÉΓòÉ
-
- An entry field has a style that determines how it appears and behaves. An
- application specifies the style in either the WinCreateWindow function or the
- ENTRYFIELD statement in a resource-definition file. An application can specify
- a combination of the following styles for an entry field.
-
- Entry-Field Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_ANY ΓöéAllows the entry-field text to contain a Γöé
- Γöé Γöémixture of double-byte and single-byte Γöé
- Γöé Γöécharacters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_AUTOSCROLL ΓöéAutomatically scrolls text horizontally to Γöé
- Γöé Γöéshow the insertion point. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_AUTOSIZE ΓöéAutomatically sets the size of the entry Γöé
- Γöé Γöéfield, based on the width of the field's textΓöé
- Γöé Γöéstring and the metrics of the current system Γöé
- Γöé Γöéfont. This style can set the width, height, Γöé
- Γöé Γöéor both-whichever has a value of -1 in the Γöé
- Γöé ΓöéWinCreateWindow function or Γöé
- Γöé Γöéresource-definition file. This style affectsΓöé
- Γöé Γöéonly the initial size of the entry field; it Γöé
- Γöé Γöédoes not adjust the size as the font or Γöé
- Γöé Γöétext-string width changes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_AUTOTAB ΓöéAutomatically moves the cursor to the next Γöé
- Γöé Γöécontrol window when the user enters the Γöé
- Γöé Γöémaximum number of characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_CENTER ΓöéCenters text within the entry field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_DBCS ΓöéSpecifies that the entry-field text consist Γöé
- Γöé Γöéof double-byte characters only. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_LEFT ΓöéLeft-aligns text within the entry field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_MARGIN ΓöéDraws a border around the entry field. The Γöé
- Γöé Γöéborder is 1/2-character wide and Γöé
- Γöé Γöé1/4-character high. Without this style, the Γöé
- Γöé Γöéapplication draws no border around the entry Γöé
- Γöé Γöéfield. The width of the entry-field rectangleΓöé
- Γöé Γöéis increased on all sides by the width of Γöé
- Γöé Γöéthis margin. After an entry field with the Γöé
- Γöé ΓöéES_MARGIN style is created, the Γöé
- Γöé ΓöéWinQueryWindowRect function returns a larger Γöé
- Γöé Γöérectangle that includes this margin and whoseΓöé
- Γöé Γöéorigin, therefore, is different from the Γöé
- Γöé Γöéorigin specified when the entry field was Γöé
- Γöé Γöécreated. If an application does not adjust Γöé
- Γöé Γöéfor this size difference when moving or Γöé
- Γöé Γöésizing an entry field, the entry field Γöé
- Γöé Γöébecomes larger after each moving and sizing Γöé
- Γöé Γöéoperation. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_MIXED ΓöéAllows the entry-field text to contain a Γöé
- Γöé Γöémixture of single-byte and double-byte Γöé
- Γöé Γöécharacters. Unlike the ES_ANY style, this Γöé
- Γöé Γöéstyle lets ASCII DBCS data be converted to Γöé
- Γöé ΓöéEBCDIC DBCS data without causing an overflow Γöé
- Γöé Γöécondition. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_READONLY ΓöéPrevents the user from entering or editing Γöé
- Γöé Γöétext in the entry field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_RIGHT ΓöéRight-aligns text within the entry field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_SBCS ΓöéSpecifies that the entry-field text must Γöé
- Γöé Γöéconsist of single-byte characters only. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéES_UNREADABLE ΓöéDisplays each character as an asterisk (*). Γöé
- Γöé ΓöéThis style is useful when obtaining a Γöé
- Γöé Γöépassword from the user. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 12.1.2. Entry-Field Notification Codes ΓòÉΓòÉΓòÉ
-
- An entry field is always owned by another window. A WM_CONTROL notification
- message is sent to the owner whenever an event occurs in the entry field. This
- message contains a notification code that specifies the exact nature of the
- event. An entry field can send the notification codes described in the
- following table to its owner.
-
- Notification of Entry-Field Events
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéNotification Code ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEN_CHANGE ΓöéIndicates that the contents of an Γöé
- Γöé Γöéentry field have changed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEN_INSERTMODETOGGLE ΓöéIndicates that the insert mode has Γöé
- Γöé Γöébeen toggled. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEN_KILLFOCUS ΓöéIndicates that an entry field has Γöé
- Γöé Γöélost the keyboard focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEN_MEMERROR ΓöéIndicates that an entry field cannotΓöé
- Γöé Γöéallocate enough memory to perform Γöé
- Γöé Γöéthe requested operation, such as Γöé
- Γöé Γöéextending the text limit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEN_OVERFLOW ΓöéIndicates that either the user or Γöé
- Γöé Γöéthe application attempted to exceed Γöé
- Γöé Γöéthe text limit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEN_SCROLL ΓöéIndicates that the text in an entry Γöé
- Γöé Γöéfield is about to scroll. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEN_SETFOCUS ΓöéIndicates that an entry field Γöé
- Γöé Γöéreceived the keyboard focus. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- An application typically ignores notification messages from an entry field,
- thus allowing default text editing to occur. For more specialized uses, an
- application can use notification messages to filter input. For example, if an
- entry field is intended for numbers only, an application can use the EN_CHANGE
- notification code to check the contents of the entry field each time the user
- enters a non-numeric character.
-
- As an alternative, an application can prevent inappropriate characters from
- reaching an entry field by using EN_SETFOCUS and EN_KILLFOCUS, in filter code,
- placed in the main message loop. Whenever the entry field has the keyboard
- focus, the filter code can intercept and filter WM_CHAR messages before the
- WinDispatchMsg function passes them to the entry field. An application also
- can respond to certain keystrokes, such as the Enter key, as long as the
- entry-field control has the keyboard focus.
-
-
- ΓòÉΓòÉΓòÉ 12.1.3. Default Entry-Field Behavior ΓòÉΓòÉΓòÉ
-
- The following table lists and describes all the messages specifically handled
- by the predefined entry-field control-window class (WC_ENTRYFIELD).
-
- Messages Handled by WC_ENTRYFIELD Class
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_CLEAR ΓöéDeletes the current text selection Γöé
- Γöé Γöéfrom the control window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_COPY ΓöéCopies the current text selection toΓöé
- Γöé Γöéthe system clipboard, in CF_TEXT Γöé
- Γöé Γöéformat. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_CUT ΓöéCopies the current text selection toΓöé
- Γöé Γöéthe system clipboard, in CF_TEXT Γöé
- Γöé Γöéformat, and deletes the selection Γöé
- Γöé Γöéfrom the control window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_PASTE ΓöéCopies the current contents of the Γöé
- Γöé Γöésystem clipboard that have CF_TEXT Γöé
- Γöé Γöéformat, replacing the current text Γöé
- Γöé Γöéselection in the control window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYCHANGED ΓöéReturns TRUE if the text has changedΓöé
- Γöé Γöésince the last EM_QUERYCHANGED Γöé
- Γöé Γöémessage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYFIRSTCHAR ΓöéReturns the offset to the first Γöé
- Γöé Γöécharacter visible at the left edge Γöé
- Γöé Γöéof the control window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYREADONLY ΓöéDetermines whether the entry field Γöé
- Γöé Γöéis in the read-only state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYSEL ΓöéReturns a long word that contains Γöé
- Γöé Γöéthe offsets for the first and last Γöé
- Γöé Γöécharacters of the current selection Γöé
- Γöé Γöéin the control window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETFIRSTCHAR ΓöéScrolls the text so that the Γöé
- Γöé Γöécharacter at the specified offset isΓöé
- Γöé Γöéthe first character visible at the Γöé
- Γöé Γöéleft edge of the control window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETINSERTMODE ΓöéToggles the text-entry mode between Γöé
- Γöé Γöéinsert and overstrike. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETREADONLY ΓöéSets the entry field to the Γöé
- Γöé Γöéread-only state. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETSEL ΓöéSets the current selection to the Γöé
- Γöé Γöéspecified character offsets. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETTEXTLIMIT ΓöéAllocates memory from the control Γöé
- Γöé Γöéheap for the specified maximum Γöé
- Γöé Γöénumber of characters, returning TRUEΓöé
- Γöé Γöéif it is successful and FALSE if it Γöé
- Γöé Γöéis not. Failure causes the entry Γöé
- Γöé Γöéfield to send a WM_CONTROL message Γöé
- Γöé Γöéwith the EN_MEMERROR notification Γöé
- Γöé Γöécode to the owner window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ADJUSTWINDOWPOS ΓöéChanges the size of the control Γöé
- Γöé Γöérectangle if the control has the Γöé
- Γöé ΓöéES_MARGIN style. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéOccurs when the user presses mouse Γöé
- Γöé Γöébutton 1 twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéSets the mouse capture and keyboard Γöé
- Γöé Γöéfocus to the entry field, and Γöé
- Γöé Γöéprepares to track the movement of Γöé
- Γöé Γöéthe mouse during WM_MOUSEMOVE Γöé
- Γöé Γöémessages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1UP ΓöéReleases the mouse. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON2DOWN ΓöéReturns TRUE to prevent this messageΓöé
- Γöé Γöéfrom being processed further. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON3DOWN ΓöéReturns TRUE to prevent this messageΓöé
- Γöé Γöéfrom being processed further. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéHandles text entry and other Γöé
- Γöé Γöékeyboard input events. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéValidates the requested style and Γöé
- Γöé Γöésets the window text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéFrees the memory used for the windowΓöé
- Γöé Γöétext. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéSent when an application changes theΓöé
- Γöé Γöéenabled state of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéIf the mouse button is down, the Γöé
- Γöé Γöéentry field tracks the text Γöé
- Γöé Γöéselection. If the mouse button is Γöé
- Γöé Γöéup, the entry field sets the mouse Γöé
- Γöé Γöépointer to the default arrow shape. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéDraws the entry field and text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYDLGCODE ΓöéReturns the predefined Γöé
- Γöé ΓöéDLGC_ENTRYFIELD constant. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéReturns the requested window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETFOCUS ΓöéIf the entry field is gaining the Γöé
- Γöé Γöéfocus, it creates a cursor and sendsΓöé
- Γöé Γöéthe owner window a WM_CONTROL Γöé
- Γöé Γöémessage with the EN_SETFOCUS Γöé
- Γöé Γöénotification code. If the entry Γöé
- Γöé Γöéfield is losing the focus, it Γöé
- Γöé Γöédestroys the current cursor and Γöé
- Γöé Γöésends the owner window a WM_CONTROL Γöé
- Γöé Γöémessage with the EN_KILLFOCUS Γöé
- Γöé Γöénotification code. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETSELECTION ΓöéToggles the current selection Γöé
- Γöé Γöéstatus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéSets the specified window Γöé
- Γöé Γöéparameters, redraws the entry field,Γöé
- Γöé Γöéand sends the owner window a Γöé
- Γöé ΓöéWM_CONTROL message with the Γöé
- Γöé ΓöéEN_CHANGE notification code. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TIMER ΓöéBlinks the insertion point if the Γöé
- Γöé Γöéentry field has the focus. The entryΓöé
- Γöé Γöéfield scrolls the text, if Γöé
- Γöé Γöénecessary, while extending the Γöé
- Γöé Γöéselection to text that becomes Γöé
- Γöé Γöévisible in the window. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 12.1.4. Entry-Field Text Editing ΓòÉΓòÉΓòÉ
-
- The user can insert (type) text or numeric values in an entry field when that
- entry field has the keyboard focus. An application can insert text by using
- the WinSetWindowText function. An application can insert numeric values by
- using the WinSetDlgItemShort function. The text or numeric value is inserted
- into the entry field at the cursor position.
-
- The entry field's entry mode, either insert or overstrike, determines what
- happens when the user enters text. The user sets the entry mode by pressing
- the Insert key; the entry mode toggles each time the Insert key is pressed.
- The application can set the entry mode by sending the EM_SETINSERTMODE message
- to the entry field.
-
- The cursor position, identified by a blinking bar, is specified by a character
- offset relative to the beginning of the text. The user can set the cursor
- position by using the mouse or the Arrow keys. An application can set the
- cursor position by using the EM_SETSEL message. This message directs the entry
- field to move the blinking bar to the given character position.
-
- The EM_SETSEL message also sets the selection. The selection is one or more
- characters of text on which the entry field carries out an operation, such as
- deleting or copying to the clipboard. The user selects text by pressing the
- Shift key while moving the cursor, or by pressing mouse button 1 while moving
- the mouse. An application selects text by using the EM_SETSEL message to
- specify the cursor position and the anchor point. The selection includes all
- text between the cursor position and the anchor point. If the cursor position
- and anchor point are equal, there is no selection. An application can retrieve
- the selection (cursor position and anchor point) by using the EM_QUERYSEL
- message.
-
- The user can delete characters, one at a time, by pressing the Delete key or
- the Backspace key. The Delete key deletes the character to the right of the
- cursor; the Backspace key deletes the character to the left of the cursor. The
- user also can delete a group of characters by selecting them and pressing the
- Delete key. An application can delete selected text by using the EM_CLEAR
- message.
-
- An application can use the EM_QUERYCHANGED message to determine whether the
- contents of an entry field have changed.
-
- An application can prevent the user from editing an entry field by setting the
- ES_READONLY style in the WinCreateWindow function or in the ENTRYFIELD
- statement in the resource-definition file. The application also can set and
- query the read-only state by using the EM_SETREADONLY and ES_QUERYREADONLY
- messages.
-
- If text extends beyond the left or right edges of an entry field, the user can
- scroll the text by using the Arrow keys. An application can scroll the text by
- using the EM_SETFIRSTCHAR message to specify the first character visible at the
- left edge of the entry field. For scrolling to occur, the entry field must
- have the ES_AUTOSCROLL style. An application can use the EM_QUERYFIRSTCHAR
- message to obtain the first character that is currently visible.
-
-
- ΓòÉΓòÉΓòÉ 12.1.5. Entry-Field Control Copy and Paste Operations ΓòÉΓòÉΓòÉ
-
- The user can cut, copy, and paste text in an entry field by using the
- Shift+Delete and Ctrl+Insert key combinations. An application, either by
- itself or in response to the user, can cut, copy, and paste text by using the
- EM_CUT, EM_COPY, and EM_PASTE messages. An application can use the ES_CUT and
- EM_COPY messages to copy the selected text to the clipboard. The EM_CUT
- message also deletes the text (EM_COPY does not). The EM_PASTE message copies
- the text on the clipboard to the current position in the entry field, replacing
- any existing text with the copied text. An application can delete the selected
- text, without copying it to the clipboard, by using the EM_CLEAR message.
-
-
- ΓòÉΓòÉΓòÉ 12.1.6. Entry-Field Text Retrieval ΓòÉΓòÉΓòÉ
-
- An application can retrieve selected text from an entry field by calling
- WinQueryWindowText and then sending an EM_QUERYSEL message to retrieve the
- offsets to the first and last characters of the text selection. These offsets
- are used to retrieve selected text.
-
- An application can retrieve numeric values by calling WinQueryDlgItemShort,
- passing the entry-field identifier and the handle of the owner window.
- WinQueryDlgItemShort converts the entry-field text to a signed or unsigned
- integer and returns the value in a specified variable. The application can use
- the WinWindowFromID function to retrieve the handle of the control window. The
- entry-field identifier is specified in the dialog template in the application's
- resource-definition file.
-
-
- ΓòÉΓòÉΓòÉ 12.2. Using Entry-Field Controls ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Create an entry field in a dialog or client window.
- o Change the default size of the entry field.
-
-
- ΓòÉΓòÉΓòÉ 12.2.1. Creating an Entry Field in a Dialog Window ΓòÉΓòÉΓòÉ
-
- A dialog window usually serves as the parent and owner of an entry field. The
- dialog window often includes a button that indicates whether the user wants to
- carry out an operation. When the user selects the button, the application
- queries the contents of the entry field and proceeds with the operation.
-
- The definition of an entry field in an application's resource-definition file
- sets the initial text, window identifier, size, position, and style of the
- entry field. The following example shows how to define an entry field as part
- of a dialog template:
-
-
- DLGTEMPLATE IDD_SAMPLE
- BEGIN
- DIALOG "Sample Dialog", ID_DLG, 7, 7, 253, 145, FS_DLGBORDER,0
- BEGIN
- DEFPUSHBUTTON "~OK", DID_OK, 8, 151, 50, 23, WS_GROUP
- ENTRYFIELD "Here is some text", ID_ENTFLD, 42, 46, 68, 15,
- ES_MARGIN | ES_AUTOSCROLL
- END
- END
-
-
- ΓòÉΓòÉΓòÉ 12.2.2. Creating an Entry Field in a Client Window ΓòÉΓòÉΓòÉ
-
- To create an entry field in a non-dialog window, an application calls
- WinCreateWindow with the window class WC_ENTRYFIELD. The entry field is owned
- by an application's client window, whose window procedure receives notification
- messages from the entry field.
-
- The following code fragment shows how to create an entry field in a client
- window:
-
-
- CodeforCreatinganEntryFieldinaClientWindow
-
- #define ID_ENTRYFIELD 5
-
- HWND hwnd, hwndEntryField1, hwndClient;
- LONG xPos = 50, yPos = 100;
- LONG xWidth = 100, yHeight = 20;
-
- hwndEntryField1 = WinCreateWindow(
- hwndClient, /* Parent-window handle */
- WC_ENTRYFIELD, /* Window class */
- "initial text", /* Initial text */
- WS_VISIBLE | /* Visible when created */
- ES_AUTOSCROLL | /* Scroll text */
- ES_MARGIN, /* Create a border */
- xPos, yPos, /* x and y position */
- xWidth, yHeight, /* Width and height */
- hwnd, /* Owner-window handle */
- HWND_TOP, /* Z-order position */
- ID_ENTRYFIELD, /* Window identifier */
- NULL, /* No control data */
- NULL); /* No pres. parameters */
-
-
- ΓòÉΓòÉΓòÉ 12.2.3. Changing the Default Size of an Entry Field ΓòÉΓòÉΓòÉ
-
- The default text limit of an entry field is 32 characters. An application can
- set a non-default size when creating an entry field by setting the cchEditLimit
- member of an ENTRYFDATA structure and supplying a pointer to the structure as
- the pCtlData parameter to WinCreateWindow.
-
- The following code fragment creates an entry field with a text limit of 12
- characters:
-
-
- CodeforCreatingEntryFieldwith12 - CharacterTextLimit
-
- HWND hwndEntryField2;
- HWND hwndClient;
- ENTRYFDATA efd;
- LONG xPos = 50, yPos = 50;
- LONG xWidth = -1, yHeight = -1; /* must be -1 for ES_AUTOSIZE */
-
- /* Initialize the ENTRYFDATA structure. */
- efd.cb = sizeof(ENTRYFDATA);
- efd.cchEditLimit = 12;
- efd.ichMinSel = 0;
- efd.ichMaxSel = 0;
-
- /* Create the entry field. */
- hwndEntryField2 = WinCreateWindow(
- hwndClient, /* Parent-window handle */
- WC_ENTRYFIELD, /* Window class */
- "projects.xls", /* No initial text */
- WS_VISIBLE | /* Visible when created */
- ES_MARGIN | /* Create a border. */
- ES_AUTOSIZE, /* System sets the size */
- xPos, yPos, /* x and y positions */
- xWidth, yHeight, /* Width and height */
- hwndClient, /* Owner-window handle */
- HWND_TOP, /* Z-order position */
- 0, /* Window identifier */
- &efd, /* Control data */
- NULL); /* No pres. parameters */
-
- To expand or reduce the text limit after creating the entry field, an
- application can send an EM_SETTEXTLIMIT message specifying a new maximum text
- limit for the entry field. The following code fragment increases to 20
- characters the text limit of the entry field created in the previous example:
-
-
- CodeforCreatingEntryFieldwith20 - CharacterTextLimit
-
- WinSendMsg(hwndEntryField2, EM_SETTEXTLIMIT,
- (MPARAM)20, (MPARAM)0);
-
-
- ΓòÉΓòÉΓòÉ 12.2.4. Retrieving Text From an Entry Field ΓòÉΓòÉΓòÉ
-
- An application can use the WinQueryWindowTextLength and WinQueryWindowText
- functions to retrieve the text from an entry field. WinQueryWindowTextLength
- returns the length of the text; WinQueryWindowText copies the window text to a
- buffer.
-
- Typically, an application needs to retrieve the text from an entry field only
- if the user changes the text. An entry field sends an EN_CHANGE notification
- code in the low word of the first message parameter of the WM_CONTROL message
- whenever the text changes. The following code fragment sets a flag when it
- receives the EN_CHANGE code, checks the flag during the WM_COMMAND message and,
- if it is set, retrieves the text of the entry field:
-
-
- CodeforFlaggingaTextChangeinanEntryField
-
- HWND hwnd;
- ULONG msg;
- MPARAM mp1;
- CHAR chBuf[64];
- HWND hwndEntryField;
- LONG cbTextLen;
- LONG cbTextRead;
- static BOOL fFieldChanged = FALSE;
-
- switch (msg) {
- case WM_CONTROL:
- switch (SHORT1FROMMP(mp1)) {
- case IDD_ENTRYFIELD:
-
- /* Check if the user changed the entry-field text. */
- if ((USHORT) SHORT2FROMMP(mp1) == EN_CHANGE)
- fFieldChanged = TRUE;
- return 0;
- }
-
- case WM_COMMAND:
- switch (SHORT1FROMMP(mp1)) {
- case DID_OK:
-
- /* If the user changed the entry-field text, */
- /* obtain the text and store it in a buffer. */
- if (fFieldChanged) {
- hwndEntryField = WinWindowFromID(hwnd,
- IDD_ENTRYFIELD);
- cbTextLen = WinQueryWindowTextLength(hwndEntryField);
- cbTextRead = WinQueryWindowText(hwndEntryField,
- sizeof(chBuf), chBuf);
- .
- . /* Do something with the text. */
- .
- }
- WinDismissDlg(hwnd, 1);
- return 0;
- }
- }
-
-
- ΓòÉΓòÉΓòÉ 12.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions, structures, and messages used with
- entry-field controls.
-
- Entry-Field Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryDlgItemShort ΓöéConverts the text of a dialog item Γöé
- Γöé Γöéinto an integer value. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowText ΓöéCopies window text into a buffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryWindowTextLengthΓöéReturns the length of the window Γöé
- Γöé Γöétext, excluding any NULL terminationΓöé
- Γöé Γöécharacter. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetDlgItemShort ΓöéConverts an integer value into the Γöé
- Γöé Γöétext of a dialog item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowText ΓöéSets the window text for a specifiedΓöé
- Γöé Γöéwindow. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Entry-Field Structure
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéENTRYFDATA ΓöéEntry-field data structure Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Sent to an Entry Field
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_CLEAR ΓöéDeletes the text that forms the Γöé
- Γöé Γöécurrent selection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_COPY ΓöéSends the current selection to the Γöé
- Γöé Γöéclipboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_CUT ΓöéSends the text that forms the Γöé
- Γöé Γöécurrent selection to the clipboard, Γöé
- Γöé Γöéthen deletes it from the entry fieldΓöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_PASTE ΓöéReplaces the text that forms the Γöé
- Γöé Γöécurrent selection with text from theΓöé
- Γöé Γöéclipboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYCHANGED ΓöéQueries whether the text of the Γöé
- Γöé Γöéentry field control has been changedΓöé
- Γöé Γöésince the last inquiry. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYFIRSTCHAR ΓöéReturns the zero-based offset of theΓöé
- Γöé Γöéfirst character displayed in the Γöé
- Γöé Γöéentry field control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYREADONLY ΓöéReturns the read-only state of an Γöé
- Γöé Γöéentry field control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_QUERYSEL ΓöéGets the zero-based offsets of the Γöé
- Γöé Γöébounds of the text that forms the Γöé
- Γöé Γöécurrent selection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETFIRSTCHAR ΓöéSpecifies the offset of the Γöé
- Γöé Γöécharacter to be displayed in the Γöé
- Γöé Γöéfirst position of the entry field Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETINSERTMODE ΓöéSets the insert mode of an entry Γöé
- Γöé Γöéfield. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETREADONLY ΓöéSets the read-only state of an entryΓöé
- Γöé Γöéfield control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETSEL ΓöéSets the zero-based offsets of the Γöé
- Γöé Γöébounds of the text that forms the Γöé
- Γöé Γöécurrent selection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEM_SETTEXTLIMIT ΓöéSets the maximum number of bytes Γöé
- Γöé Γöéthat an entry field control can Γöé
- Γöé Γöécontain. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Message Generated by an Entry Field to its Owner Window
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéOccurs when the user presses a key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé Γöéconversion of DBCS characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe entry field control window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the entry field control Γöé
- Γöé Γöéwindow parameters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 13. Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
-
- A multiple-line entry (MLE) field is a sophisticated control window that
- enables a user to view and edit multiple lines of text. This chapter describes
- how to create and use multiple-line entry field controls in a PM application.
-
-
- ΓòÉΓòÉΓòÉ 13.1. About Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
-
- An MLE field control gives an application the text-editing capabilities of a
- simple text editor. The application can create a multiple-line entry field by
- using the WinCreateWindow function or by specifying the MLE statement in a
- dialog-window template in a resource-definition file.
-
-
- ΓòÉΓòÉΓòÉ 13.1.1. MLE Styles ΓòÉΓòÉΓòÉ
-
- The style of an MLE field control determines how the MLE field appears and
- behaves. An application can specify a combination of the following styles for
- an MLE field:
-
- Multiple-Line Entry Field Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLS_BORDER ΓöéDraws a border around the MLE field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLS_HSCROLL ΓöéAdds a horizontal scroll bar to the MLE Γöé
- Γöé Γöéfield. The MLE control enables this scroll Γöé
- Γöé Γöébar whenever any line exceeds the width of Γöé
- Γöé Γöéthe MLE field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLS_IGNORETAB ΓöéDirects the MLE control to ignore the Tab Γöé
- Γöé Γöékey. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLS_READONLY ΓöéPrevents the MLE field from accepting text Γöé
- Γöé Γöéfrom the user. This style is useful for Γöé
- Γöé Γöédisplaying lengthy static text in a client orΓöé
- Γöé Γöédialog window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLS_VSCROLL ΓöéAdds a vertical scroll bar to the MLE field. Γöé
- Γöé ΓöéThe MLE control enables this scroll bar Γöé
- Γöé Γöéwhenever the number of lines exceeds the Γöé
- Γöé Γöéheight of the MLE field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLS_WORDWRAP ΓöéAutomatically breaks lines that are longer Γöé
- Γöé Γöéthan the width of the MLE field. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 13.1.2. MLE Control Notification Codes ΓòÉΓòÉΓòÉ
-
- An MLE field control sends WM_CONTROL messages containing notification codes to
- its owner whenever certain events occur-for example, when the user or
- application tries to insert too much text, or when the user uses the scroll
- bars. The owner window uses the notification codes either to carry out custom
- operations for the MLE field or to respond to errors.
-
- An MLE field control can send the following notification codes to its owner:
-
- Multiple-Line Entry Field Control Notification Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_CHANGE ΓöéIndicates that the contents of the Γöé
- Γöé ΓöéMLE field have changed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_CLPBDFAIL ΓöéIndicates that a clipboard operationΓöé
- Γöé Γöéfailed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_HSCROLL ΓöéIndicates that the MLE text is aboutΓöé
- Γöé Γöéto scroll horizontally. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_KILLFOCUS ΓöéIndicates that the MLE field lost Γöé
- Γöé Γöéthe input focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_MARGIN ΓöéIndicates that the mouse moved Γöé
- Γöé Γöéacross the MLE field margin. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_MEMERROR ΓöéIndicates that the MLE field controlΓöé
- Γöé Γöécannot allocate enough memory to Γöé
- Γöé Γöéperform the requested operation. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_OVERFLOW ΓöéIndicates that the specified MLE Γöé
- Γöé Γöéoperation would overflow the field'sΓöé
- Γöé Γöétext limit or the format rectangle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_PIXHORZOVERFLOW ΓöéIndicates that the user entered moreΓöé
- Γöé Γöétext than could fit horizontally in Γöé
- Γöé Γöéthe MLE field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_PIXVERTOVERFLOW ΓöéIndicates that the user entered moreΓöé
- Γöé Γöétext than could fit vertically in Γöé
- Γöé Γöéthe MLE field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_SEARCHPAUSE ΓöéIndicates that the MLE field controlΓöé
- Γöé Γöépaused during a search operation Γöé
- Γöé Γöéinitiated by an MLM_SEARCH message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_SETFOCUS ΓöéIndicates that the MLE field Γöé
- Γöé Γöéreceived the input focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_TEXTOVERFLOW ΓöéIndicates that the user or Γöé
- Γöé Γöéapplication attempted to exceed the Γöé
- Γöé Γöétext limit of the MLE field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_UNDOOVERFLOW ΓöéIndicates that the MLE field controlΓöé
- Γöé Γöécannot undo a text change because Γöé
- Γöé Γöéthe undo operation involves too muchΓöé
- Γöé Γöétext. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLN_VSCROLL ΓöéIndicates that the MLE text is aboutΓöé
- Γöé Γöéto scroll vertically. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The MLE field control sends the MLN_HSCROLL or MLN_VSCROLL notification codes
- when the user enables the scroll bars so that the application can monitor the
- visible contents of the MLE field. The application also can monitor the
- contents of an MLE field by using the MLM_QUERYFIRSTCHAR message, which
- specifies the offset of the character in the upper-left corner of the MLE
- field. This represents the first MLE character that is visible to the user.
- To provide an alternative way of scrolling the contents of an MLE field, an
- application can move the character at the specified offset to the upper-left
- corner of an MLE field using the MLM_SETFIRSTCHAR message.
-
- The MLE field control sends an MLN_CHANGE notification code when the user
- changes the text in some way. This notification code is especially useful when
- the MLE field is in a dialog window, because the dialog procedure can use this
- code to determine whether it should process the contents of the MLE field. If
- an application does not process MLN_CHANGE notification codes, it can use the
- MLM_QUERYCHANGED message to determine whether the user has made changes to the
- MLE text. The MLM_SETCHANGED message makes the MLE field control send an
- MLN_CHANGE notification code with every event that occurs in the MLE field,
- regardless of whether the user has changed anything. This code also can be
- used to hide a change made by a user.
-
-
- ΓòÉΓòÉΓòÉ 13.1.3. MLE Text Editing ΓòÉΓòÉΓòÉ
-
- An MLE field contains one or more lines of text. Each line consists of one or
- more characters and ends with one or more characters that represent the end of
- the line. The end-of-line characters are determined by the format of the text.
-
- The user can type text in an MLE field when the MLE field has the focus. The
- application can insert text at any time by using the MLM_INSERT message and
- specifying the text as a null-terminated string. The MLE field control inserts
- the text at the cursor position or replaces the selected text.
-
- The MLE field control entry mode, insert or overstrike, determines what happens
- when the user inserts text. The user sets the entry mode by pressing the
- Insert key. The entry mode alternates each time the user presses Insert. When
- overstrike mode is enabled, at least one character is selected. This means
- that the MLM_INSERT message always replaces at least one character. If insert
- mode is enabled, the MLM_INSERT message replaces only those characters the user
- or application has selected. Otherwise, the MLE field makes room for the
- inserted characters by moving existing characters to the right, starting at the
- cursor position.
-
- The cursor position, identified by a blinking bar, is specified as a character
- offset relative to the beginning of the text. The user can set the cursor
- position by using the mouse or Arrow keys to move the blinking bar. An
- application can set the cursor position by using the MLM_SETSEL message, which
- directs the MLE field control to move the blinking bar to a given character
- position. The MLM_SETSEL message also can set the selection.
-
- The selection is one or more characters of text on which the MLE field control
- carries out an operation, such as deleting or copying. The user selects text
- by pressing the Shift key while moving the cursor or by pressing mouse button 1
- while moving the mouse. The user also can select a word in a block of text by
- double-clicking on the word. An application selects text by using the
- MLM_SETSEL message to specify the cursor position and the anchor point. The
- selection is all the text between the cursor position and the anchor point. If
- the cursor position and anchor point are equal, there is no selection. An
- application can retrieve the cursor position, anchor point, or both, by using
- the MLM_QUERYSEL message.
-
- The user can delete characters, one at a time, by pressing the Delete key or
- the Backspace key. Pressing the Delete key deletes the character to the right
- of the cursor; pressing the Backspace key deletes the character to the left of
- the cursor and changes the cursor position. An application can delete one or
- more characters by using the MLM_DELETE message, which directs the MLE field
- control to delete a specified number of characters, starting at the given
- position. This message does not change the cursor position. An application
- can delete selected text by using the MLM_CLEAR message.
-
- An application can reverse the previous operation by using the MLM_UNDO
- message, which restores the MLE field to its previous state. This is a quick
- way to fix editing mistakes. However, not all operations can be undone.
-
- The application determines whether the previous operation can be undone by
- using the MLM_QUERYUNDO message, which returns TRUE and indicates the type of
- operation that can be undone. Using the MLM_RESETUNDO message, an application
- can prevent a subsequent MLM_UNDO message from changing the state of an MLE
- field.
-
-
- ΓòÉΓòÉΓòÉ 13.1.4. MLE Text Formatting ΓòÉΓòÉΓòÉ
-
- An application can retrieve the number of lines of text in an MLE field by
- using the MLM_QUERYLINECOUNT message and can retrieve the number of characters
- in the MLE field by using the MLM_QUERYTEXTLENGTH message. The amount of text
- and, subsequently, the number of lines to be entered in an MLE field depend on
- the text limit. An application sets the text limit by using the
- MLM_SETTEXTLIMIT message and determines the current limit by using the
- MLM_QUERYTEXTLIMIT message. The user cannot set the text limit. If the user
- types to the text limit, the MLE field control beeps and ignores any subsequent
- keystrokes. If the application attempts to add text beyond the limit, the MLE
- field control truncates the text.
-
- An application can control the length of each line in an MLE field by enabling
- word wrapping. When word wrapping is enabled, the MLE field control
- automatically breaks any line that is longer than the MLE field is wide. An
- application can set word wrapping by using the MLM_SETWRAP message, and it can
- determine whether the MLE field control is wrapping text by using the
- MLM_QUERYWRAP message. Word wrapping is disabled by default unless the
- application specifies the MLS_WORDWRAP style when creating the MLE field
- control.
-
- An application can set tab stops for an MLE control by using the MLM_SETTABSTOP
- message. Tab stops specify the maximum width of a tab character. When the
- user or an application inserts a tab character, the MLE field control expands
- the character so that it fills the space between the cursor position and the
- next tab stop. The MLM_SETTABSTOP message sets the distance (in pels) between
- tab stops, and the MLE field control provides as many tab stops as necessary,
- no matter how long the line gets. An application can retrieve the distance
- between tab stops using the MLM_QUERYTABSTOP message.
-
- An application can use the MLM_SETFORMATRECT message to set the format
- rectangle (MLE field). The format rectangle is used to set the horizontal and
- vertical limits for text. The MLE control sends a notification message to the
- parent window of the MLE field if text exceeds either of those limits. An
- application typically uses the format rectangle to provide its own word
- wrapping or other special text processing. An application can retrieve the
- current format rectangle by using the MLM_QUERYFORMATRECT message.
-
- An application can prevent the user's editing of the MLE field by setting the
- MLS_READONLY style in the WinCreateWindow function or in the MLE statement in
- the resource-definition file. The application also can set and query the
- read-only state by using the MLM_SETREADONLY and MLM_QUERYREADONLY messages,
- respectively.
-
- An application can set the colors and font for an MLE field by using the
- MLM_SETTEXTCOLOR, MLM_SETBACKCOLOR, and MLM_SETFONT messages. These messages
- affect all text in the MLE field. An MLE field cannot contain a mixture of
- fonts and colors. An application can retrieve the current values for the
- colors and font by using the MLM_QUERYTEXTCOLOR, MLM_QUERYBACKCOLOR, and
- MLM_QUERYFONT messages.
-
-
- ΓòÉΓòÉΓòÉ 13.1.5. MLE Text Import and Export Operations ΓòÉΓòÉΓòÉ
-
- An application can copy text to and from an MLE field by importing and
- exporting. To import text to an MLE field, an application can use the
- MLM_IMPORT message, which copies text from a buffer to the MLE field. To
- export text from an MLE field, the application can use the MLM_EXPORT message,
- which copies text from the MLE field to a buffer. The application uses the
- MLM_SETIMPORTEXPORT message to set the import and export buffers.
-
- An application can import and export text in a variety of formats. A text
- format, set with the MLM_FORMAT message, identifies which characters are used
- for the end-of-line characters. An MLE field can have the following text
- formats:
-
- Multiple-Line Entry Field Text Format
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFormat ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLFIE_CFTEXT ΓöéExported lines end with a carriage Γöé
- Γöé Γöéreturn/newline character pair (0x0D, 0x0A). Γöé
- Γöé ΓöéImported lines must end with a newline Γöé
- Γöé Γöécharacter, carriage return/newline character Γöé
- Γöé Γöépair, or newline/carriage return character Γöé
- Γöé Γöépair. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLFIE_NOTRANS ΓöéImported and exported lines end with a Γöé
- Γöé Γöénewline character (0x0A). Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLFIE_WINFMT ΓöéFor exported lines, the carriage Γöé
- Γöé Γöéreturn/newline character pair marks a hard Γöé
- Γöé Γöélinebreak (a break entered by the user). TwoΓöé
- Γöé Γöécarriage-return characters and a newline Γöé
- Γöé Γöécharacter (0x0D, 0x0D, 0x0A) mark a soft Γöé
- Γöé Γöélinebreak (a break inserted during word Γöé
- Γöé Γöéwrapping and not entered by the user). For Γöé
- Γöé Γöéimported lines, the extra carriage-return in Γöé
- Γöé Γöésoft linebreak characters is ignored. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The text format can affect the number of characters in a selection. To ensure
- that the export buffer is large enough to hold exported text, an application
- can send the MLM_QUERYFORMATLINELENGTH message. The application can send the
- MLM_QUERYFORMATTEXTLENGTH message to determine the number of bytes in the text
- to be exported.
-
- Each time an application inserts text in an MLE field, the MLE field control
- automatically refreshes (repaints) the display by drawing the new text. When
- an application copies large amounts of text to an MLE field, refreshing can be
- quite time-consuming, so the application should disable the refresh state. The
- application disables the refresh state by sending the MLM_DISABLEREFRESH
- message. After copying all the text, the application can restore the refresh
- state by sending the MLM_ENABLEREFRESH message.
-
-
- ΓòÉΓòÉΓòÉ 13.1.6. MLE Field Control Cut, Copy, and Paste Operations ΓòÉΓòÉΓòÉ
-
- The user can cut, copy, and paste text in an MLE field by using the
- Ctrl+Delete, Shift+Delete, and Shift+Insert key combinations. An
- application-either by itself or in response to the user-can cut, copy, and
- paste text by using the MLM_CUT, MLM_COPY, and MLM_PASTE messages. The MLM_CUT
- and MLM_COPY messages copy the selected text to the clipboard. The MLM_CUT
- message also deletes the text from the MLE field; MLM_COPY does not. The
- MLM_PASTE message copies the text from the clipboard to the current position in
- the MLE field, replacing any existing text with the copied text. An
- application can delete the selected text without copying it to the clipboard by
- using the MLM_CLEAR message.
-
- An application also can copy the selected text from an MLE field to a buffer by
- using the MLM_QUERYSELTEXT message. This message does not affect the contents
- of the clipboard.
-
-
- ΓòÉΓòÉΓòÉ 13.1.7. MLE Field Control Search and Replace Operations ΓòÉΓòÉΓòÉ
-
- An application can search for a specified string within MLE field text by using
- the MLM_SEARCH message, which searches for the string. The MLE field control
- returns TRUE if the string is found. The cursor does not move to the string
- unless the message specifies the MLFSEARCH_SELECTMATCH option.
-
- An application also can use the MLM_SEARCH message to replace one string with
- another. If the message specifies the MLFSEARCH_CHANGEALL option, the MLE
- field control replaces all occurrences of the search string with the
- replacement string. Both the search string and the replacement string must be
- specified in an MLE_SEARCHDATA structure passed with the message.
-
-
- ΓòÉΓòÉΓòÉ 13.2. Using Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
-
- This section explains how to create an MLE field control by using the
- WinCreateWindow function and by specifying the MLE statement in a dialog
- template in a resource-definition file.
-
-
- ΓòÉΓòÉΓòÉ 13.2.1. Creating an MLE Field Control ΓòÉΓòÉΓòÉ
-
- The following code fragment shows how to create an MLE field control by using
- WinCreateWindow:
-
- *xcode.
-
- #define MLE_WINDOW_ID 2
-
- HWND hwndParent;
- HWND hwndMLE;
-
- hwndMLE = WinCreateWindow(
- hwndParent, /* Parent window */
- WC_MLE, /* Window class */
- "Test", /* Initial text */
- WS_VISIBLE | /* Window style */
- MLS_BORDER, /* Window style */
- 100, 100, /* x and y positions */
- 100, 100, /* Width and height */
- hwndParent, /* Owner window */
- HWND_TOP, /* Top of z-order */
- MLE_WINDOW_ID, /* Identifier */
- NULL, /* Control data */
- NULL); /* Pres. parameters */
-
- It also is common to create an MLE field control by using an MLE statement in a
- dialog-window template in a resource file, as shown in the following code
- fragment:
-
-
- MLE "", IDD_MLETEXT, 110, 10, 50, 100,
- WS_VISIBLE | MLS_BORDER | MLS_WORDWRAP
-
- The predefined class for an MLE control is WC_MLE. If you do not specify a
- style for the MLE control, the default styles used are MLS_BORDER, WS_GROUP,
- and WS_TABSTOP.
-
-
- ΓòÉΓòÉΓòÉ 13.2.2. Importing and Exporting MLE Text ΓòÉΓòÉΓòÉ
-
- Importing and exporting MLE text takes place though a buffer. An import
- operation copies text from the buffer to the MLE field; an export operation
- copies text from the MLE to the buffer. Before an application can import or
- export MLE text, it must send an MLM_SETIMPORTEXPORT message to the MLE field
- control, specifying the address and size of the buffer.
-
- To import text, an application sends the MLM_IMPORT message to the MLE field
- control. This message requires two parameters: plOffset and cbCopy. The
- plOffset parameter is a pointer to a variable that specifies the position in
- the MLE field where the text from the buffer is to be placed. The position is
- an offset from the beginning of the MLE text (that is, the number of characters
- from the beginning of the MLE text). If plOffset points to a variable that
- equals -1, the MLE field control places the text starting at the current cursor
- position. On return, this variable contains the offset to the first character
- beyond the imported text. The cbCopy parameter of the MLM_IMPORT message
- points to a variable that specifies the number of bytes to import.
-
- The following code fragment reads text from a file to a buffer, then imports
- the text to an MLE field:
-
- HWND hwndMle;
- CHAR szMleBuf[512];
- IPT lOffset = 0;
- PSZ pszTextFile;
- HFILE hf;
- ULONG cbCopied;
- ULONG ulAction;
- ULONG cbBytesRead;
-
- .
- . /* Obtain a file name from the user. */
- .
- /* Open the file. */
-
- DosOpen(pszTextFile, &hf, &ulAction, 0, FILE_NORMAL,
- FILE_OPEN | FILE_CREATE, OPEN_ACCESS_READONLY |
- OPEN_SHARE_DENYNONE, NULL);
-
- /* Zero-fill the buffer using memset, a C run-time function. */
- memset(szMleBuf, 0, sizeof(szMleBuf));
-
- /* Set the MLE import-export buffer. */
- WinSendMsg(hwndMle, MLM_SETIMPORTEXPORT, MPFROMP(szMleBuf),
- MPFROMSHORT ((USHORT) sizeof(szMleBuf)));
-
- /*
- * Read the text from the file to the buffer, then import it
- * to the MLE.
- */
-
- do {
- DosRead(hf, szMleBuf, sizeof(szMleBuf), &cbBytesRead);
- cbCopied = (ULONG) WinSendMsg(hwndMle, MLM_IMPORT,
- MPFROMP( &lOffset), MPFROMP(&cbBytesRead));
- } while (cbCopied);
-
- /* Close the file. */
- DosClose(hf);
-
- To export MLE text, an application sends the MLM_EXPORT message to the MLE
- control. Like MLM_IMPORT, the MLM_EXPORT message takes the plOffset and cbCopy
- parameters. The plOffset parameter is a pointer to a variable that specifies
- the offset to the first character to export. A value of -1 specifies the
- current cursor position. On return, the variable contains the offset to the
- first character in the MLE field not copied to the buffer. The cbCopy
- parameter is a pointer to a variable that specifies the number of bytes to
- export. On return, this variable equals 0 if the number of characters actually
- copied does not exceed the number specified to be copied. The following code
- fragment shows how to export text from an MLE field, then store the text in a
- file:
-
-
- HWND hwndMle;
- CHAR szMleBuf[512];
- IPT lOffset = 0;
- PSZ pszTextFile;
- HFILE hf;
- ULONG cbCopied;
- ULONG ulAction;
- ULONG cbBytesWritten;
- ULONG cbCopy;
-
- /* Zero-fill the buffer using memset, a C run-time function. */
- memset(szMleBuf, 0, sizeof(szMleBuf));
-
- /* Set the MLE import-export buffer. */
- WinSendMsg(hwndMle, MLM_SETIMPORTEXPORT, MPFROMP(szMleBuf),
- MPFROMSHORT ((USHORT) sizeof(szMleBuf)));
- .
- . /* Obtain a filename from the user. */
- .
-
- /* Open the file. */
- DosOpen(pszTextFile, &hf, &ulAction, 0, FILE_NORMAL,
- FILE_OPEN | FILE_CREATE, OPEN_ACCESS_WRITEONLY |
- OPEN_SHARE_DENYNONE, NULL);
-
- /* Find out how much text is in the MLE. */
- cbCopy = (ULONG) WinSendMsg(hwndMle, MLM_QUERYFORMATTEXTLENGTH,
- MPFROMLONG(lOffset), MPFROMLONG((-1)));
-
- /* Copy the MLE text to the buffer. */
- cbCopied = (ULONG) WinSendMsg(hwndMle, MLM_EXPORT,
- MPFROMP(&lOffset), MPFROMP(&cbCopy));
-
- /* Write the contents of the buffer to the file. */
- DosWrite(hf, szMleBuf, sizeof(szMleBuf),
- &cbBytesWritten);
-
- /* Close the file. */
- DosClose(hf);
-
-
- ΓòÉΓòÉΓòÉ 13.2.3. Searching MLE Text ΓòÉΓòÉΓòÉ
-
- An application uses the MLM_SEARCH message and the MLE_SEARCHDATA structure to
- search for strings in MLE text. The first parameter of the MLM_SEARCH message
- is an array of flags that specify the style of the search. The application can
- set the MLFSEARCH_CASESENSITIVE flag if a case-sensitive search is required.
- If the application sets the MLFSEARCH_SELECTMATCH flag, the MLE field control
- highlights a matching string and, if necessary, scrolls the string into view.
- An application can use the MLFSEARCH_CHANGEALL flag to replace every occurrence
- of the string with the string specified in the pchReplace member of the
- MLE_SEARCHDATA structure.
-
- The second parameter of the MLM_SEARCH message is a pointer to an
- MLE_SEARCHDATA structure that contains information required to perform the
- search operation. This structure includes a pointer to the string and, if the
- MLFSEARCH_CHANGEALL flag is set in the MLM_SEARCH message, a pointer to the
- replacement string. The iptStart and iptStop members specify the starting and
- ending positions of the search. These positions are specified as offsets from
- the beginning of the MLE field. A value of -1 in the iptStart member causes
- the search to start at the current cursor position. A negative value in the
- iptStop member causes the search to end at the end of the MLE field. If a
- matching string is found, the MLE field control returns the length of the
- string in the cchFound member.
-
- The following code fragment uses an entry field to obtain a search string from
- the user, then searches an MLE field for an occurrence of the string. The
- search begins at the current cursor position and ends at the end of the MLE
- text. When the MLFSEARCH_SELECTMATCH flag is specified, the MLE field control
- highlights a matching string and scrolls it into view.
-
- #define IDD_SEARCHFIELD 101
-
- HWND hwnd;
- HWND hwndEntryFld;
- HWND hwndMle;
- MLE_SEARCHDATA mlesrch;
- CHAR szSearchString[64];
-
- /*
- * Obtain the handle of the entry field containing the
- * search string.
- */
- hwndEntryFld = WinWindowFromID(hwnd, IDD_SEARCHFIELD);
-
- /* Obtain the search string from the entry field. */
- WinQueryWindowText(hwndEntryFld, sizeof(szSearchString),
- szSearchString);
-
- /* Fill the MLE_SEARCHDATA structure. */
- mlesrch.cb = sizeof(mlesrch); /* Structure size */
- mlesrch.pchFind = szSearchString; /* Search string */
- mlesrch.pchReplace = NULL; /* No replacement string */
- mlesrch.cchFind = 0; /* Not used */
- mlesrch.cchReplace = 0; /* Not used */
- mlesrch.iptStart = -1; /* Start at cursor position */
- mlesrch.iptStop = -1; /* Stop at end of file */
-
- /* Start the search operation. */
- WinSendMsg(hwndMle, MLM_SEARCH, MPFROMLONG(MLFSEARCH_SELECTMATCH),
- MPFROMP(&mlesrch));
-
-
- ΓòÉΓòÉΓòÉ 13.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 structures and messages used with multiple-line entry
- field controls.
-
- Multiple-Line Entry Field Control Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLECTLDATA ΓöéMultiple-line entry field control Γöé
- Γöé Γöédata structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLEMARGSTRUCT ΓöéMultiple-line entry field margin Γöé
- Γöé Γöéinformation Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLEOVERFLOW ΓöéMultiple-line entry field overflow Γöé
- Γöé Γöéerror structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLE_SEARCHDATA ΓöéMultiple-line entry field search Γöé
- Γöé Γöéstructure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Received by an MLE Field Control
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_CHARFROMLINE ΓöéReturns the first insertion Γöé
- Γöé Γöépoint on a given line. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_CLEAR ΓöéClears the current selection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_COPY ΓöéCopies the current selection Γöé
- Γöé Γöéto the clipboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_CUT ΓöéCopies the text that forms theΓöé
- Γöé Γöécurrent selection to the Γöé
- Γöé Γöéclipboard, then deletes the Γöé
- Γöé Γöétext from the MLE field Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_DELETE ΓöéDeletes text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_DISABLEREFRESH ΓöéDisables screen refresh. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_ENABLEREFRESH ΓöéEnables screen refresh. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_EXPORT ΓöéExports text to a buffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_FORMAT ΓöéSets the format to be used forΓöé
- Γöé Γöébuffer importing and Γöé
- Γöé Γöéexporting. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_IMPORT ΓöéImports text from a buffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_INSERT ΓöéDeletes the current selection Γöé
- Γöé Γöéand replaces it with a text Γöé
- Γöé Γöéstring. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_LINEFROMCHAR ΓöéReturns the line number Γöé
- Γöé Γöécorresponding to a given Γöé
- Γöé Γöéinsertion point. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_PASTE ΓöéReplaces the text that forms Γöé
- Γöé Γöéthe current selection with Γöé
- Γöé Γöétext from the clipboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYBACKCOLOR ΓöéQueries the background color. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYCHANGED ΓöéQueries the changed flag. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYFIRSTCHAR ΓöéQueries the first visible Γöé
- Γöé Γöécharacter. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYFONT ΓöéQueries which font is in use. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYFORMATLINELENGTH ΓöéReturns the number of bytes toΓöé
- Γöé Γöéend of line after formatting Γöé
- Γöé Γöéis applied. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYFORMATRECT ΓöéQueries the format dimensions Γöé
- Γöé Γöéand mode. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYFORMATTEXTLENGTH ΓöéReturns the length of a Γöé
- Γöé Γöéspecified range of characters Γöé
- Γöé Γöéafter the current formatting Γöé
- Γöé Γöéis applied. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYIMPORTEXPORT ΓöéQueries the current transfer Γöé
- Γöé Γöébuffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYLINECOUNT ΓöéQueries the number of lines ofΓöé
- Γöé Γöétext. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYLINELENGTH ΓöéReturns the number of bytes Γöé
- Γöé Γöébetween a given insertion Γöé
- Γöé Γöépoint and the end of line. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYREADONLY ΓöéQueries the read-only mode. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYSEL ΓöéReturns the location of the Γöé
- Γöé Γöéselection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYSELTEXT ΓöéCopies the currently selected Γöé
- Γöé Γöétext into a buffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYTABSTOP ΓöéQueries the pel interval at Γöé
- Γöé Γöéwhich tab stops are placed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYTEXTCOLOR ΓöéQueries the text color. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYTEXTLENGTH ΓöéReturns the number of Γöé
- Γöé Γöécharacters in the text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYTEXTLIMIT ΓöéQueries the maximum number of Γöé
- Γöé Γöébytes that a multiple-line Γöé
- Γöé Γöéentry field control can Γöé
- Γöé Γöécontain. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYUNDO ΓöéQueries the possible undo or Γöé
- Γöé Γöéredo operations. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_QUERYWRAP ΓöéQueries the wrap flag. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_RESETUNDO ΓöéResets the undo state to Γöé
- Γöé Γöéindicate the no undo Γöé
- Γöé Γöéoperations are possible. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SEARCH ΓöéSearches for a specified text Γöé
- Γöé Γöéstring. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETBACKCOLOR ΓöéSets the background color. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETCHANGED ΓöéSets or clears the changed Γöé
- Γöé Γöéflag. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETFIRSTCHAR ΓöéSets the first visible Γöé
- Γöé Γöécharacter. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETFONT ΓöéSets a font. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETFORMATRECT ΓöéSets the format dimensions andΓöé
- Γöé Γöémode. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETIMPORTEXPORT ΓöéSets the current transfer Γöé
- Γöé Γöébuffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETREADONLY ΓöéSets or clears read-only mode.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETSEL ΓöéSets a selection. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETABSTOP ΓöéSets the pel interval at whichΓöé
- Γöé Γöétab stops are placed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETTEXTCOLOR ΓöéSets the text color. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETTEXTLIMIT ΓöéSets the maximum number of Γöé
- Γöé Γöébytes that a multiple-line Γöé
- Γöé Γöéentry field control can Γöé
- Γöé Γöécontain. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_SETWRAP ΓöéSets the wrap flag. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMLM_UNDO ΓöéPerforms any available undo Γöé
- Γöé Γöéoperations. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Issued by an MLE Field Control to Its Owner Window
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 1 twice within a specified Γöé
- Γöé Γöétime. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1UP ΓöéOccurs when the user releases Γöé
- Γöé Γöépointer button 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéSent when the user presses a key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when an MLE field control hasΓöé
- Γöé Γöéa significant event to notify to itsΓöé
- Γöé Γöéowner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéSets the state of the MLE field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéOccurs when the pointing device Γöé
- Γöé Γöépointer moves. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe entry field control window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the entry field control Γöé
- Γöé Γöéwindow parameters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 14. Scroll-Bar Controls ΓòÉΓòÉΓòÉ
-
- Scroll bars are control windows that convert mouse and keyboard input into
- integers; they are used by an application to scroll the contents of a client
- window. This chapter describes how to create and use scroll bars in PM
- applications.
-
-
- ΓòÉΓòÉΓòÉ 14.1. About Scroll Bars ΓòÉΓòÉΓòÉ
-
- A scroll bar has three main parts: the bar, its arrows, and a slider (see the
- following figure).
-
- Scroll Bars in a Window
-
- The arrows are located at each end of the scroll bar. The left scroll arrow, on
- the left side of a horizontal scroll bar, enables the user to scroll to the
- left in a document. The right scroll arrow lets the user scroll to the right.
-
- On a vertical scroll bar, the upper scroll arrow enables the user to scroll
- upward in the document; the lower scroll arrow, downward. The slider, which
- lies between the two scroll arrows, reflects the current value of the scroll
- bar. Scroll bars monitor the slider and send notification messages to the
- owner window when the slider position changes as a result of mouse or keyboard
- input.
-
- Although, typically, scroll bars are used in frame windows, an application can
- use stand-alone scroll bars of any size or shape, at any position, in a window
- of almost any class. Scroll bars can be used as parts of other control
- windows; for example, a list box uses a scroll bar to enable the user to view
- items when the list box is too small to display all the items.
-
-
- ΓòÉΓòÉΓòÉ 14.1.1. Scroll-Bar Creation ΓòÉΓòÉΓòÉ
-
- An application can include a scroll bar in a standard frame window by
- specifying the FCF_HORZSCROLL or FCF_VERTSCROLL flag in the WinCreateStdWindow
- function. To create a scroll bar in another type of window, an application can
- specify the predefined (preregistered) window class WC_SCROLLBAR in the
- WinCreateWindow function or in the CONTROL statement in a resource file.
-
- Although most applications specify an owner window when creating a scroll bar,
- an owner is not required. If an application does not specify an owner, the
- scroll bar does not send notification messages.
-
-
- ΓòÉΓòÉΓòÉ 14.1.1.1. Scroll-Bar Styles ΓòÉΓòÉΓòÉ
-
- A scroll bar has styles that determine what it looks like and how it responds
- to input. Styles are specified in the WinCreateWindow function or the CONTROL
- statement. A scroll-bar can have the following styles:
-
- Scroll-Bar Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle ΓöéMeaning Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBS_AUTOTRACK ΓöéCauses the entire slider to track the Γöé
- Γöé Γöémovement of the mouse pointer when the user Γöé
- Γöé Γöéscrolls the window. Without this style, only Γöé
- Γöé Γöéan outlined image of the slider tracks the Γöé
- Γöé Γöémovement of the mouse pointer, and the sliderΓöé
- Γöé Γöéjumps to the new location when the user Γöé
- Γöé Γöéreleases the mouse button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBS_HORZ ΓöéCreates a horizontal scroll bar. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBS_THUMBSIZE ΓöéCauses the SBCDATA structure to store Γöé
- Γöé Γöéinformation used to calculate the size of theΓöé
- Γöé Γöéscroll-bar slider. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBS_VERT ΓöéCreates a vertical scroll bar. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 14.1.1.2. Scroll-Bar Range and Position ΓòÉΓòÉΓòÉ
-
- Every scroll bar has a range and a slider position. The range specifies the
- minimum and maximum values for the slider position. As the user moves the
- slider in a scroll bar, the scroll bar reports the slider position as an
- integer in this range. If the slider position is the minimum value, the slider
- is at the top of a vertical scroll bar or at the left end of a horizontal
- scroll bar. If the slider position is the maximum value, the slider is at the
- bottom or right end of the vertical or horizontal scroll bar, respectively.
-
- An application can adjust the range to convenient integers by using the
- SBM_SETSCROLLBAR message (or initially, by using the SBCDATA structure). This
- makes it easy to translate the slider position into a value that corresponds to
- the data being scrolled. For example, an application attempting to display 100
- lines of text in a window that can show only 20 lines at a time could set the
- vertical scroll-bar range from 1 through 100. If the slider were at position
- 0, the first line would be at the top of the window. If the slider were at
- position 100, the last line would be at the bottom of the window.
-
- To establish a useful relationship between the scroll-bar range and the data,
- an application must adjust the range whenever the data or the size of the
- window changes. This means the application should adjust the range as part of
- processing WM_SIZE messages.
-
- An application must move the slider in a scroll bar. Although the user
- requests scrolling in a scroll bar, the scroll bar does not update the slider
- position. Instead, it passes the request to the owner window, which scrolls
- the data and updates the slider position using the SBM_SETPOS message. The
- application controls the slider movement and can move the slider in the
- increments best suited for the data being scrolled.
-
- An application can retrieve the current slider position of a scroll bar by
- sending the SBM_QUERYPOS message to the scroll bar.
-
- If a scroll bar is a descendant of a frame window, its position relative to its
- parent can change when the position of the frame window changes. Frame windows
- draw scroll bars relative to the upper-left corner of the frame window (rather
- than the lower-left corner). The frame window can adjust the y coordinate of
- the scroll-bar position, which would be desirable if the scroll bar is a child
- of the frame window, but would be undesirable if the scroll bar is not a child
- window.
-
-
- ΓòÉΓòÉΓòÉ 14.1.2. Scroll-Bar Notification Messages ΓòÉΓòÉΓòÉ
-
- A scroll bar sends notification messages to its window whenever the user clicks
- the scroll bar. WM_VSCROLL and WM_HSCROLL are the notification messages for
- vertical and horizontal scroll bars, respectively. If the scroll bar is a
- frame control window, the frame window passes the message to its client window.
-
- Each notification message includes the scroll-bar identifier, scroll-bar
- command code corresponding to the action of the user, and, in some cases, the
- position of the slider. If an application creates a scroll bar as part of a
- frame control window, the scroll-bar identifier is the predefined constant
- FID_VERTSCROLL or FID_HORZSCROLL. Otherwise, it is the identifier given in the
- WinCreateWindow function.
-
- The scroll-bar command codes specify the action the user has taken. Operating
- system user-interface guidelines recommend certain responses for each action.
- The following figure illustrates the SBM_xxx messages your application can send
- to a scroll bar.
-
- Standard Window Scroll Bar and Command Codes
-
- Following is a list of the command codes; for each code, the user action is
- specified, followed by the application's response. In each case, a scrolling
- unit, appropriate for the given data, must be defined by the application. For
- example, for scrolling text vertically, the typical unit is a line.
-
- Scroll-Bar Command Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCommand Code ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_LINEUP ΓöéIndicates that the user clicked the Γöé
- Γöé Γöétop scroll arrow. Decrement the Γöé
- Γöé Γöéslider position by one, and scroll Γöé
- Γöé Γöétoward the top of the data by one Γöé
- Γöé Γöéunit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_LINEDOWN ΓöéIndicates that the user clicked the Γöé
- Γöé Γöébottom scroll arrow. Increment the Γöé
- Γöé Γöéslider position by one, and scroll Γöé
- Γöé Γöétoward the bottom of the data by oneΓöé
- Γöé Γöéunit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_LINELEFT ΓöéIndicates that the user clicked the Γöé
- Γöé Γöéleft scroll arrow. Decrement the Γöé
- Γöé Γöéslider position by one, and scroll Γöé
- Γöé Γöétoward the left end of the data by Γöé
- Γöé Γöéone unit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_LINERIGHT ΓöéIndicates that the user clicked the Γöé
- Γöé Γöéright scroll arrow. Increment the Γöé
- Γöé Γöéslider position by one, and scroll Γöé
- Γöé Γöétoward the right end of the data by Γöé
- Γöé Γöéone unit. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_PAGEUP ΓöéIndicates that the user clicked the Γöé
- Γöé Γöéscroll-bar background above the Γöé
- Γöé Γöéslider. Decrement the slider Γöé
- Γöé Γöéposition by the number of data unitsΓöé
- Γöé Γöéin the window, and scroll toward theΓöé
- Γöé Γöétop of the data by the same number Γöé
- Γöé Γöéof units. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_PAGEDOWN ΓöéIndicates that the user clicked the Γöé
- Γöé Γöéscroll-bar background below the Γöé
- Γöé Γöéslider. Increment the slider Γöé
- Γöé Γöéposition by the number of data unitsΓöé
- Γöé Γöéin the window, and scroll toward theΓöé
- Γöé Γöébottom of the data by the same Γöé
- Γöé Γöénumber of units. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_PAGELEFT ΓöéIndicates that the user clicked the Γöé
- Γöé Γöéscroll-bar background to the left ofΓöé
- Γöé Γöéthe slider. Decrement the slider Γöé
- Γöé Γöéposition by the number of data unitsΓöé
- Γöé Γöéin the window, and scroll toward theΓöé
- Γöé Γöéleft end of the data by the same Γöé
- Γöé Γöénumber of units. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_PAGERIGHT ΓöéIndicates that the user clicked the Γöé
- Γöé Γöéscroll-bar background to the right Γöé
- Γöé Γöéof the slider. Increment the slider Γöé
- Γöé Γöéposition by the number of data unitsΓöé
- Γöé Γöéin the window, and scroll toward theΓöé
- Γöé Γöéright end of the data by the same Γöé
- Γöé Γöénumber of units. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_SLIDERTRACK ΓöéIndicates that the user is dragging Γöé
- Γöé Γöéthe slider. Applications that draw Γöé
- Γöé Γöédata quickly can set the slider to Γöé
- Γöé Γöéthe position given in the message, Γöé
- Γöé Γöéand scroll the data by the same Γöé
- Γöé Γöénumber of units the slider has Γöé
- Γöé Γöémoved. Applications that cannot drawΓöé
- Γöé Γöédata quickly should wait for the Γöé
- Γöé ΓöéSB_SLIDERPOSITION code before movingΓöé
- Γöé Γöéthe slider and scrolling the data. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_SLIDERPOSITION ΓöéIndicates that the user released theΓöé
- Γöé Γöéslider after dragging it. Set the Γöé
- Γöé Γöéslider to the position given in the Γöé
- Γöé Γöémessage, and scroll the data by the Γöé
- Γöé Γöésame number of units the slider was Γöé
- Γöé Γöémoved. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSB_ENDSCROLL ΓöéIndicates that the user released theΓöé
- Γöé Γöémouse after holding it on an arrow Γöé
- Γöé Γöéor in the scroll-bar background. No Γöé
- Γöé Γöéresponse is necessary. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- If the command code is SB_SLIDERTRACK or SB_SLIDERPOSITION, indicating that the
- user is moving the scroll-bar slider, the notification message also contains
- the current position of the slider.
-
- The owner window can send a message to the scroll bar to read or reset the
- current value and range of the scroll bar. To reflect any changes in the state
- of the scroll bar, the owner window also can adjust the data the scroll bar
- controls.
-
- An application can use the WinEnableWindow function to disable a scroll bar. A
- disabled scroll bar ignores the actions of the user, sending out no
- notification messages when the user tries to manipulate it. If an application
- has no data to scroll, or if all data fits in the client window, the
- application should disable the scroll bar.
-
-
- ΓòÉΓòÉΓòÉ 14.1.3. Scroll Bars and the Keyboard ΓòÉΓòÉΓòÉ
-
- When a scroll bar has the keyboard focus, it generates notification messages
- for the following keys:
-
- Scroll-bar Notification Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéKeys ΓöéResponse Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéUP ΓöéSB_LINEUP or SB_LINELEFT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLEFT ΓöéSB_LINEUP or SB_LINELEFT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDOWN ΓöéSB_LINEDOWN or SB_LINERIGHT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRIGHT ΓöéSB_LINEDOWN or SB_LINERIGHT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéPGUP ΓöéSB_PAGEUP or SB_PAGELEFT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéPGDN ΓöéSB_PAGEDOWN or SB_PAGERIGHT Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- If an application uses scroll bars to scroll data but does not give the scroll
- bar the input focus, the window with the focus must process keyboard input.
- The window can generate scroll-bar notification messages or carry out the
- indicated scrolling. The following table shows the responses to keys that a
- window must process:
-
- Focus Window Message Responses to Keys
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéKey ΓöéResponse Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéUP ΓöéSB_LINEUP Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDOWN ΓöéSB_LINEDOWN Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéPGUP ΓöéSB_PAGEUP Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéPGDN ΓöéSB_PAGEDOWN Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCTRL+HOME ΓöéSB_SLIDERTRACK, with the slider set Γöé
- Γöé Γöéto the minimum position Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCTRL+END ΓöéSB_SLIDERTRACK, with the slider set Γöé
- Γöé Γöéto the maximum position Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéLEFT ΓöéSB_LINELEFT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRIGHT ΓöéSB_LINERIGHT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCTRL+PGUP ΓöéSB_PAGELEFT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCTRL+PGDN ΓöéSB_PAGERIGHT Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéHOME ΓöéSB_SLIDERTRACK, with the slider set Γöé
- Γöé Γöéto the minimum position Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéEND ΓöéSB_SLIDERTRACK, with the slider set Γöé
- Γöé Γöéto the maximum position Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- For vertical scroll bars that are part of list boxes, the following table shows
- the responses to keys:
-
- List Box Responses to Keys
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéKey ΓöéCommand Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCTRL+UP ΓöéSB_SLIDERTRACK, with the Γöé
- Γöé Γöéslider set to the minimum Γöé
- Γöé Γöéposition Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCTRL+DOWN ΓöéSB_SLIDERTRACK, with the Γöé
- Γöé Γöéslider set to the maximum Γöé
- Γöé Γöéposition Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéF7 ΓöéSB_PAGEUP Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéF8 ΓöéSB_PAGEDOWN Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 14.2. Using Scroll Bars ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Create scroll bars.
- o Retrieve a scroll-bar handle.
- o Initialize, adjust, and read the scroll-bar range and position.
-
-
- ΓòÉΓòÉΓòÉ 14.2.1. Creating Scroll Bars ΓòÉΓòÉΓòÉ
-
- When creating a frame window, you can add scroll bars by specifying the
- FCF_HORZSCROLL flag, FCF_VERTSCROLL flag, or both flags in the
- WinCreateStdWindow function. This adds horizontal, vertical, or both (as
- specified) scroll bars to the frame window. The frame window owns the scroll
- bars and passes notification messages from the scroll bars to the client
- window.
-
- The following code fragment adds scroll bars to a frame window:
-
-
- /* Set flags for a main window with scroll bars. */
- ULONG ulFrameControlFlags =
- FCF_STANDARD | FCF_HORZSCROLL | FCF_VERTSCROLL;
-
- /* Create the window. */
- hwndFrame = WinCreateStdWindow(HWND_DESKTOP,
- WS_VISIBLE,
- &ulFrameControlFlags,
- szClientClass,
- szFrameTitle,
- 0,
- (HMODULE) NULL,
- 0,
- &hwndClient);
-
- Scroll bars created this way have the window identifier FID_HORZSCROLL or
- FID_VERTSCROLL. To determine the size and position of the scroll bars, the
- frame window uses the standard size specified by the system values SV_CXVSCROLL
- and SV_CYHSCROLL. The position always is defined by the right and bottom edges
- of the frame window.
-
- Another way to create scroll bars is using the WinCreateWindow function. This
- method is most commonly used for stand-alone scroll bars. Creating scroll bars
- this way lets you set the size and position of the scroll bars. You also can
- specify which window should receive notification messages.
-
- The following code fragment creates a stand-alone scroll bar:
-
- #define ID_SCROLL_BAR 1
-
- HWND hwndScroll,hwndClient;
- hwndScroll = WinCreateWindow(
- hwndClient, /* Scroll-bar parent window */
- WC_SCROLLBAR, /* Preregistered scroll-bar class */
- (PSZ) NULL, /* No window title */
- SBS_VERT | WS_VISIBLE, /* Vertical style and visible */
- 10, 10, /* Position & Size
- */ 20, 100, /* Size */
- hwndClient, /* Owner */
- HWND_TOP, /* Z-order position */
- ID_SCROLL_BAR, /* Scroll-bar identifier */
- NULL, /* No class-specific data */
- NULL); /* No presentation parameters */
-
-
- ΓòÉΓòÉΓòÉ 14.2.2. Retrieving a Scroll-Bar Handle ΓòÉΓòÉΓòÉ
-
- If you use the WinCreateStdWindow function to create a scroll bar as a child of
- the frame window, you must be able to retrieve the scroll-bar handle. One way
- to do this is to use the WinWindowFromID function, the frame-window handle, and
- a predefined identifier (such as FID_HORZSCROLL or FID_VERTSCROLL), as shown in
- the following code fragment:
-
- HWND hwndFrame,hwndHorzScroll,hwndVertScroll;
-
- hwndHorzScroll = WinWindowFromID(hwndFrame, FID_HORZSCROLL);
- hwndVertScroll = WinWindowFromID(hwndFrame, FID_VERTSCROLL);
-
- If the standard frame window includes a client window, you can use that handle
- to access the scroll bars. The idea is to get the frame-window handle first;
- then, the scroll-bar handle.
-
-
- HWND hwndScroll,hwndClient;
-
- /* Get a handle to the horizontal scroll bar. */
- hwndScroll = WinWindowFromID(
- WinQueryWindow(hwndClient, QW_PARENT),
- FID_HORZSCROLL);
-
-
- ΓòÉΓòÉΓòÉ 14.2.3. Using the Scroll-Bar Range and Position ΓòÉΓòÉΓòÉ
-
- You can initialize the current value and range of a scroll bar to non-default
- values by sending the SBCDATA structure with class-specific data for a call to
- WinCreateWindow:
-
- #define ID_SCROLL_BAR 1
-
- SBCDATA sbcd;
- HWND hwndScroll,hwndClient;
-
- /* Set up scroll-bar control data. */
- sbcd.posFirst = 200;
- sbcd.posLast = 400;
- sbcd.posThumb = 300;
-
- /* Create the scroll bar. */
- hwndScroll = WinCreateWindow(hwndClient,
- WC_SCROLLBAR,
- (PSZ) NULL,
- SBS_VERT | WS_VISIBLE,
- 10, 10,
- 20, 100,
- hwndClient,
- HWND_TOP,
- ID_SCROLL_BAR,
- &sbcd, /* Class-specific data */
- NULL);
-
- You can adjust a scroll-bar value and range by sending it an SBM_SETSCROLLBAR
- message:
-
- /* Set the scroll-bar value and range. */
-
- WinSendMsg(hwndScroll, SBM_SETSCROLLBAR,
- (MPARAM)300,
- MPFROM2SHORT(200, 400));
-
- You can read a scroll-bar value by sending it an SBM_QUERYPOS message:
-
- USHORT usSliderPos;
-
- /* Read the scroll-bar value. */
- usSliderPos = (USHORT) WinSendMsg(hwndScroll,
- SBM_QUERYPOS, (MPARAM) NULL, (MPARAM) NULL);
-
- Similarly, you can set a scroll-bar value by sending an SBM_SETPOS message:
-
- /* Set the vertical scroll-bar value. */
- WinSendMsg(hwndScroll, SBM_SETPOS, (MPARAM)300, (MPARAM) NULL);
-
- You can read a scroll-bar range by sending it an SBM_QUERYRANGE message:
-
- MRESULT mr;
- USHORT usMinimum, usMaximum;
-
- /* Read the vertical scroll-bar range. */
- mr = WinSendMsg(hwndScroll, SBM_QUERYRANGE, (MPARAM) NULL, (MPARAM) NULL);
-
- usMinimum = SHORT1FROMMR(mr); /* minimum in the low word */
- usMaximum = SHORT2FROMMR(mr); /* maximum in the high word */
-
-
- ΓòÉΓòÉΓòÉ 14.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the operating system structure and messages used with scroll
- bars.
-
- Scroll-Bar Structure
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBCDATA ΓöéScroll-bar control data structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Sent to a Scroll Bar
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBM_QUERYPOS ΓöéReturns the slider position. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBM_QUERYRANGE ΓöéReturns the scroll bar range. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBM_SETPOS ΓöéSets the position of the slider. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBM_SETSCROLLBAR ΓöéSets the scroll-bar range and sliderΓöé
- Γöé Γöépositions. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSBM_SETTHUMBSIZE ΓöéSets the scroll bar slider size. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Messages Sent from a Scroll Bar to Its Owner Window
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HSCROLL ΓöéOccurs when a horizontal scroll bar Γöé
- Γöé Γöécontrol has a significant event to Γöé
- Γöé Γöénotify to its owner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé Γöéconversion of DBCS characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe scroll bar control window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the scroll bar control Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_VSCROLL ΓöéOccurs when a vertical scroll bar Γöé
- Γöé Γöécontrol has a significant event to Γöé
- Γöé Γöénotify to its owner. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 15. Spin Button Controls ΓòÉΓòÉΓòÉ
-
- A spin button control (WC_SPINBUTTON window class) is a visual component that
- gives users quick access to a finite set of data by letting them select from a
- scrollable ring of choices. Since the user can see only one item at a time, a
- spin button should be used only with data that is intuitively related, such as
- a list of the months of the year, or an alphabetic list of cities or states.
- This chapter explains when and how to use spin buttons in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 15.1. About Spin Buttons ΓòÉΓòÉΓòÉ
-
- A spin button consists of at least one spin field that is a single-line entry
- (SLE) field, and up and down arrows that are stacked on top of one another.
- These arrows are positioned to the right of the SLE field. The following figure
- shows an example.
-
- Example of a Spin Button
-
- You can create multi-field spin buttons for those applications in which users
- must select more than one value. For example, in setting a date, the spin
- button control can provide individual fields for setting the month, day, and
- year. The first spin field in the spin button could contain a list of months;
- the second, a list of numbers; and the third, a list of years.
-
- The application uses a multi-field spin button by creating one master component
- that contains a spin field and the spin arrows, and servant components that
- contain only spin fields. The spin buttons are created at component
- initialization. The servant components are passed a handle to the master
- component in a message. When a servant spin field has the focus, it is spun by
- the arrows in the master component.
-
- The list of values in a spin button entry field can be an array of data or a
- list of consecutive integers, defined by an upper and a lower limit.
-
-
- ΓòÉΓòÉΓòÉ 15.2. Creating a Spin Button ΓòÉΓòÉΓòÉ
-
- A spin button is created as a public window class by using the WinCreateWindow
- function, with a class style of WC_SPINBUTTON and a window style of WS_VISIBLE.
- These are joined with any of the spin button style flags by using a logical OR
- (|). The spin button style flags let you specify:
-
- o Character input restrictions (none, numeric, read-only)
- o Presentation of the data in the spin field (left-justified, right-justified,
- centered)
- o Presence or absence of a border around the spin field
- o Spin speed
- o Zero-padding of numeric spin fields.
-
- The placement and width of the spin button component are specified as
- parameters in the WinCreateWindow function.
-
- The upper and lower limits of numeric fields, the value array pointer for
- arrays of strings, and the initial value in the spin field are all set by
- messages sent from the application to the component.
-
- You can destroy the spin button component window using the WinDestroyWindow
- function when finished. The component handle that was returned when the spin
- button was created is the input parameter to the WinDestroyWindow function.
-
- The following figure is an example of how to create a spin button.
-
-
- Sample Code for Creating a Spin Button
-
- ULONG ulSpinStyle; /* Spin Button style */
- HWND hwndSpin; /* Spin Button window handle */
-
- /**********************************************************************/
- /* Set the SPBS_* style flags. */
- /**********************************************************************/
- ulSpinStyle = SPBS_MASTER | /* Spinbtn has its own buttons, */
- SPBS_NUMERICONLY | /* .. and it only holds numbers */
- SPBS_JUSTRIGHT | /* .. that are right justified, */
- SPBS_FASTSPIN; /* .. and it spins faster as */
- /* the arrows are held down */
-
- /**********************************************************************/
- /* Create the Spin Button control window. The handle of the window */
- /* is returned in hwndSpin. */
- /**********************************************************************/
- hwndSpin = WinCreateWindow (
- hwndClient, /* Parent window handle */
- WC_SPINBUTTON, /* Spin Button window class name */
- (PSZ)NULL, /* No window text */
- ulSpinStyle, /* Spin Button styles variable */
-
- (LONG)10, /* X coordinate */
- (LONG)10, /* Y coordinate */
- (LONG)150, /* Window width */
- (LONG)50, /* Window height */
- hwndClient, /* Owner window handle */
- HWND_TOP, /* Sibling window handle */
- ID_SPINBUTTON, /* Spin Button control window ID */
- (PVOID)NULL /* No control data structure */
- (PVOID)NULL); /* No presentation parameters */
-
- /**********************************************************************/
- /* Set the limits of the Spin Button control, since it has a style */
- /* of SPBS_NUMERICONLY. */
- /**********************************************************************/
- WinSendMsg (hwndSpin, /* Spin Button window handle */
- SPBM_SETLIMITS, /* Set limits message */
- (MPARAM)1000, /* Spin Button maximum setting */
- (MPARAM)0); /* Spin Button minimum setting */
-
- /**********************************************************************/
- /* Set the initial value of the Spin Button. */
- /**********************************************************************/
- WinSendMsg (hwndSpin, /* Spin Button window handle */
- SPBM_SETCURRENTVALUE, /* Set current value message. */
- (MPARAM)100, /* Spin Button initial value */
- (MPARAM)NULL); /* Reserved value */
-
- /**********************************************************************/
- /* Because all items have been set, make the control visible. */
- /**********************************************************************/
- WinShowWindow (hwndSpin, /* Spin Button window handle */
- TRUE); /* Make the window visible. */
-
-
- ΓòÉΓòÉΓòÉ 15.3. Graphical User Interface Support for Spin Buttons ΓòÉΓòÉΓòÉ
-
- Users can interact with the spin button using either the keyboard or a pointing
- device, such as a mouse, as follows:
-
- o Using the select button (button 1) on the pointing device, users first give
- focus to the spin field they want to change, and then click on either the Up
- Arrow or Down Arrow until the value they want is displayed in the spin field.
-
- o Using a keyboard, users press the:
-
- - Up Arrow and Down Arrow keys to see the choices
-
- - Left Arrow and Right Arrow keys to move the cursor left and right within a
- spin field
-
- - Home and End keys to move the cursor to the first and last characters in a
- spin field
-
- - Tab and Back Tab (Shift+Tab) keys to move the input focus from one field
- to another in multi-field spin buttons.
-
- Users can view the values in a spin field one at a time, or they can rapidly
- scroll a list by keeping either the Up or Down Arrow keys pressed. When a spin
- button is not read-only, users can advance quickly to the value they want to
- set in a spin field by typing over the value currently displayed.
-
-
- ΓòÉΓòÉΓòÉ 15.4. Summary ΓòÉΓòÉΓòÉ
-
- Following are tables that describe the OS/2 spin button control notification
- codes, notification message, and window messages:
-
- Spin Button Control Notification Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBN_CHANGE ΓöéSent when the contents of the spin Γöé
- Γöé Γöéfield change. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBN_DOWNARROW ΓöéSent when the Down Arrow button is Γöé
- Γöé Γöéclicked on or the Down Arrow key is Γöé
- Γöé Γöépressed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBN_ENDSPIN ΓöéSent when the user releases the Γöé
- Γöé Γöéselect button or one of the arrow Γöé
- Γöé Γöékeys while spinning a button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBN_KILLFOCUS ΓöéSent when the spin field loses the Γöé
- Γöé Γöéfocus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBN_SETFOCUS ΓöéSent when the spin field is Γöé
- Γöé Γöéselected. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBN_UPARROW ΓöéSent when the Up Arrow button is Γöé
- Γöé Γöéclicked on or the Up Arrow key is Γöé
- Γöé Γöépressed. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Spin Button Control Notification Message
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when the spin button control has a Γöé
- Γöé Γöésignificant event to notify to its owner. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Spin Button Control Window Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_OVERRIDESETLIMITS ΓöéCauses the component to set orΓöé
- Γöé Γöéreset numeric limits. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_QUERYLIMITS ΓöéEnables an application to Γöé
- Γöé Γöéquery the limits of a numeric Γöé
- Γöé Γöéspin field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_QUERYVALUE ΓöéCauses the component to show Γöé
- Γöé Γöéthe value in the spin field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_SETARRAY ΓöéCauses the component to set orΓöé
- Γöé Γöéreset the array of data. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_SETCURRENTVALUE ΓöéCauses the component to set orΓöé
- Γöé Γöéreset the current numeric Γöé
- Γöé Γöévalue or array index. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_SETLIMITS ΓöéCauses the component to set orΓöé
- Γöé Γöéreset numeric limits. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_SETMASTER ΓöéCauses the component to Γöé
- Γöé Γöéidentify its master. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_SETTEXTLIMIT ΓöéSets the maximum number of Γöé
- Γöé Γöécharacters allowed in a spin Γöé
- Γöé Γöéfield. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_SPINDOWN ΓöéCauses the component to show Γöé
- Γöé Γöéthe previous value (spin Γöé
- Γöé Γöébackward). Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSPBM_SPINUP ΓöéCauses the component to show Γöé
- Γöé Γöéthe next value (spin forward).Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 16. Static Controls ΓòÉΓòÉΓòÉ
-
- A static control is a simple text field, bit map, or icon that an application
- can use to label, enclose, or separate other control windows. This chapter
- describes how to create and use static controls in a PM application.
-
-
- ΓòÉΓòÉΓòÉ 16.1. About Static Controls ΓòÉΓòÉΓòÉ
-
- Unlike the other types of control windows, a static control does not accept
- user input nor send notification messages to its owner. The primary advantage
- of a static control is that it provides a label or graphic that requires little
- attention from an application. At most, an application might change the text
- or position of a static control.
-
-
- ΓòÉΓòÉΓòÉ 16.1.1. Keyboard Focus ΓòÉΓòÉΓòÉ
-
- A static control never accepts the keyboard focus. When a static control
- receives a WM_SETFOCUS message, or when a user clicks the static control, the
- system advances the focus to the next sibling window that is not a static
- control. If the control has no siblings, the system gives the focus to the
- owner of the static control.
-
-
- ΓòÉΓòÉΓòÉ 16.1.2. Static-Control Handle ΓòÉΓòÉΓòÉ
-
- Every static control is associated with a 32-bit data field. A static control
- with the SS_BITMAP or SS_ICON style uses this field to store the handle of the
- bit map or icon that it displays. An application can obtain that handle by
- sending the SM_QUERYHANDLE message to the control. An application can replace
- the bit map or icon by sending the SM_SETHANDLE message to the control,
- specifying a valid icon or bit map handle. Changing the handle causes the
- system to redraw the control.
-
- For a non-icon or non-bit map static control, the data field is available for
- application-defined data and has no effect on the appearance of the control.
-
- An application can retrieve the data field of a static-control window by
- calling WinWindowFromID, using the handle of the owner and the window
- identifier of the static control. The static-control window identifier is
- specified in either the dialog-window template or the WinCreateWindow function.
-
-
- ΓòÉΓòÉΓòÉ 16.1.3. Static-Control Styles ΓòÉΓòÉΓòÉ
-
- A static control has style bits that determine whether the control displays
- text, draws a simple box containing text, displays an icon or a bit map, or
- shows a framed or unframed colored box. Applications can specify a combination
- of the following styles for a static control:
-
- Static-Control Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_BITMAP ΓöéDraws a bit map. The bit map resource must beΓöé
- Γöé Γöéprovided in the resource-definition file. To Γöé
- Γöé Γöéinclude the bit map in a dialog window, the Γöé
- Γöé Γöéresource identifier must be specified in the Γöé
- Γöé Γöétext parameter of the CONTROL statement in Γöé
- Γöé Γöéthe resource definition file. To include the Γöé
- Γöé Γöébit map in a non-dialog window, the ASCII Γöé
- Γöé Γöérepresentation of the identifier must be Γöé
- Γöé Γöéspecified in the pszName parameter of the Γöé
- Γöé ΓöéWinCreateWindow function. That is, the first Γöé
- Γöé Γöébyte of the pszName parameter must be the Γöé
- Γöé Γöécross-hatch character (#), and the remaining Γöé
- Γöé Γöétext must be the ASCII representation of the Γöé
- Γöé Γöéidentifier (for example, #125). Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_BKGNDFRAME ΓöéCreates a box whose frame has the background Γöé
- Γöé Γöécolor. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_BKGNDRECT ΓöéCreates a rectangle filled with the Γöé
- Γöé Γöébackground color. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_FGNDFRAME ΓöéCreates a box whose frame has the foreground Γöé
- Γöé Γöécolor. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_FGNDRECT ΓöéCreates a rectangle filled with the Γöé
- Γöé Γöéforeground color. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_GROUPBOX ΓöéCreates a box whose upper-right corner Γöé
- Γöé Γöécontains control text. This style is useful Γöé
- Γöé Γöéfor enclosing groups of radio buttons or Γöé
- Γöé Γöécheck boxes in a box. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_HALFTONEFΓöéCreates a box whose frame has halftone Γöé
- Γöé Γöéshading. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_HALFTONERECTΓöéCreates a box filled with halftone shading. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_ICON ΓöéDraws an icon. The resource identifier for Γöé
- Γöé Γöéthe icon resource is determined the same way Γöé
- Γöé Γöéas the SS_BITMAP style. The icon resource Γöé
- Γöé Γöémust be in the resource-definition file. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_SYSICON ΓöéDraws a system-pointer icon. The resource Γöé
- Γöé Γöéidentifier for the system-pointer resource isΓöé
- Γöé Γöédetermined the same way as the SS_BITMAP Γöé
- Γöé Γöéstyle. To display this system pointer, the Γöé
- Γöé Γöésystem calls WinQuerySysPointer with the Γöé
- Γöé Γöéspecified identifier. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSS_TEXT ΓöéCreates a box with formatted text. An Γöé
- Γöé Γöéapplication can combine various formatting Γöé
- Γöé Γöéoptions with this style to produce formatted Γöé
- Γöé Γöétext in the boundaries of the control. The Γöé
- Γöé Γöéformatting flags are the same as those used Γöé
- Γöé Γöéfor the WinDrawText function. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 16.1.4. Default Static-Control Performance ΓòÉΓòÉΓòÉ
-
- The messages specifically handled by the predefined static-control class
- (WC_STATIC) are as follows:
-
- Messages Handled by WC_STATIC Class
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSM_SETHANDLE ΓöéSets the handle associated Γöé
- Γöé Γöéwith the static control and Γöé
- Γöé Γöéinvalidates the control Γöé
- Γöé Γöéwindow, forcing it to be Γöé
- Γöé Γöéredrawn. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSM_QUERYHANDLE ΓöéReturns the handle associated Γöé
- Γöé Γöéwith the static-control Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ADJUSTWINDOWPOS ΓöéAdjusts the SWP structure so Γöé
- Γöé Γöéthat the new window size Γöé
- Γöé Γöématches the bit map, icon, or Γöé
- Γöé Γöésystem-pointer dimensions Γöé
- Γöé Γöéassociated with the static Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéSets the text for a Γöé
- Γöé Γöéstatic-text control. Loads theΓöé
- Γöé Γöébit map or icon resource for Γöé
- Γöé Γöéthe bit map or icon static Γöé
- Γöé Γöécontrol. Returns TRUE if the Γöé
- Γöé Γöéresource cannot be loaded. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéFrees the text for a Γöé
- Γöé Γöéstatic-text control. Destroys Γöé
- Γöé Γöéthe bit map or icon for a bit Γöé
- Γöé Γöémap or icon static control. Γöé
- Γöé ΓöéThe icon for a system-pointer Γöé
- Γöé Γöéstatic control is not Γöé
- Γöé Γöédestroyed because it belongs Γöé
- Γöé Γöéto the system. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_ENABLE ΓöéInvalidates the entire Γöé
- Γöé Γöéstatic-control window, forcingΓöé
- Γöé Γöéit to be redrawn. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HITTEST ΓöéReturns the value Γöé
- Γöé ΓöéHT_TRANSPARENT for the Γöé
- Γöé Γöéfollowing static-control Γöé
- Γöé Γöéstyles: BKGNDFRAME Γöé
- Γöé ΓöéSS_BKGNDRECT Γöé
- Γöé ΓöéSS_FGNDFRAME Γöé
- Γöé ΓöéSS_FGNDRECT Γöé
- Γöé ΓöéSS_GROUPBOX Γöé
- Γöé ΓöéSS_HALFTONEFRAME Γöé
- Γöé ΓöéSS_HALFTONERECT. Γöé
- Γöé ΓöéFor other styles, this messageΓöé
- Γöé Γöéreturns the result of the Γöé
- Γöé ΓöéWinDefWindowProc function. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MATCHMNEMONIC ΓöéReturns TRUE if the mnemonic Γöé
- Γöé Γöépassed in the mp1 parameter Γöé
- Γöé Γöématches the mnemonic in the Γöé
- Γöé Γöécontrol-window text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MOUSEMOVE ΓöéSets the mouse pointer to the Γöé
- Γöé Γöéarrow pointer and returns Γöé
- Γöé ΓöéTRUE. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéDraws the static control basedΓöé
- Γöé Γöéon its style attributes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYDLGCODE ΓöéReturns the predefined Γöé
- Γöé Γöéconstant DLGC_STATIC. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéReturns the requested window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETFOCUS ΓöéSets the focus to the next Γöé
- Γöé Γöésibling window that can acceptΓöé
- Γöé Γöéthe focus; or if no such Γöé
- Γöé Γöésibling exists, sets the focusΓöé
- Γöé Γöéto the parent window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéAllows the text to be set Γöé
- Γöé Γöé(static-text controls only). Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 16.2. Using Static Controls ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Include a static control in a dialog window.
- o Include a static control in a client window.
-
-
- ΓòÉΓòÉΓòÉ 16.2.1. Including a Static Control in a Dialog Window ΓòÉΓòÉΓòÉ
-
- To include a static control in a dialog window, you must define the control in
- a dialog-window template in a resource-definition file. The following
- resource-definition file creates a dialog window that contains a static-text
- control and three static-icon controls:
-
- DLGTEMPLATE IDD_TOOLDLG LOADONCALL MOVEABLE DISCARDABLE
- BEGIN
- DIALOG "", IDD_TOOLDLG, 114, 53, 161, 127, FS_NOBYTEALIGN |
- FS_DLGBORDER | WS_VISIBLE | WS_SAVEBITS
- BEGIN
- CTEXT "Select a tool", IDS_TEXT, 49, 110, 56, 8,
- SS_TEXT | DT_CENTER | DT_TOP | WS_GROUP | WS_VISIBLE
- AUTORADIOBUTTON "Paintbrush", IDB_BRUSH, 63, 87, 61, 10,
- WS_TABSTOP | WS_GROUP | WS_VISIBLE
- AUTORADIOBUTTON "Scissors", IDB_SCISSORS, 63, 64, 60, 10,
- WS_TABSTOP | WS_VISIBLE
- AUTORADIOBUTTON "Eraser", IDB_ERASER, 65, 39, 43, 10,
- WS_TABSTOP | WS_VISIBLE
- ICON IDI_BRUSH, IDI_BRUSHICON, 33, 84, 22, 16,
- WS_GROUP | WS_VISIBLE
- ICON IDI_SCISSORS, IDI_SCISSORSICON, 33, 60, 22, 16,
- WS_GROUP | WS_VISIBLE
- ICON IDI_ERASER, IDI_ERASERICON, 33, 36, 22, 16,
- WS_GROUP | WS_VISIBLE
- PUSHBUTTON "OK", DID_OK, 10, 12, 38, 13, WS_TABSTOP |
- WS_GROUP | WS_VISIBLE
- PUSHBUTTON "Cancel", DID_CANCEL, 59, 12, 38, 13,
- BS_DEFAULT | WS_TABSTOP | WS_GROUP | WS_VISIBLE
- PUSHBUTTON "Help", IDB_HELP, 111, 13, 38, 13,
- BS_HELP | WS_TABSTOP | WS_GROUP | WS_VISIBLE
- END
- END
-
- ICON IDI_BRUSH brush.ico
- ICON IDI_SCISSORS scissr.ico
- ICON IDI_ERASER eraser.ico
-
-
- ΓòÉΓòÉΓòÉ 16.2.2. Including a Static Control in a Client Window ΓòÉΓòÉΓòÉ
-
- An application can include a static control in a non-dialog window by calling
- WinCreateWindow with the window class WC_STATIC. The flStyle parameter to
- WinCreateWindow defines the appearance of the control.
-
- The following code fragment creates a static text control whose size and
- position are based on the size of the client window and the metrics for the
- current font:
-
- #define ID_TITLE 5
-
- HWND hwnd,hwndStatic,hwndClient;
- HPS hps;
- RECTL rcl;
- FONTMETRICS fm;
- ULONG ulTitleLen;
- CHAR szTitle[] = "Static Text Controls";
-
- /* Obtain the size of the client window. */
- WinQueryWindowRect(hwnd, &rcl);
-
- /* Obtain a presentation space handle and the metrics for
- * the current font. */
- hps = WinBeginPaint (hwnd, (HPS) NULL, (PRECTL) NULL);
- GpiQueryFontMetrics(hps, sizeof(FONTMETRICS), &fm);
-
- /* Obtain the size of the static-control text string. */
- ulTitleLen = (ULONG) strlen(szTitle);
- /* Create the static control. Base the size and position
- * on the size of the client window and the metrics of the
- * current font. */
-
- hwndStatic = WinCreateWindow(
- hwndClient, /* Parent window */
- WC_STATIC, /* Window class */
- szTitle, /* Window text */
- WS_VISIBLE | /* Make it visible */
- SS_TEXT | /* Static-text control */
- DT_VCENTER | /* Center text vertically */
- DT_CENTER, /* Center text horizontally */
- ((rcl.xRight / 2) -
- (ulTitleLen / 2) * fm.lEmInc),/* x position */
- rcl.yTop - fm.lEmHeight * 2, /* y position */
- fm.lEmInc * ulTitleLen, /* Width */
- fm.lEmHeight * 2, /* Height */
- hwndClient, /* Owner window */
- HWND_TOP, /* Top of z-order */
- ID_TITLE, /* Window identifier */
- NULL, /* Control data */
- NULL); /* Presentation parameters */
-
- WinEndPaint(hps);
-
- If your application creates a static control with the SS_ICON or SS_BITMAP
- style, make sure that the resource identifier specified in the pszName
- parameter corresponds to an icon or a bit map resource in the
- resource-definition file. If there is no resource, the application cannot
- create the static control.
-
-
- ΓòÉΓòÉΓòÉ 16.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the operating system functions and messages used with static
- controls:
-
- Static-Control Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQuerySysPointer ΓöéReturns the system pointer handle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowPos ΓöéAllows the general positioning of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowText ΓöéSets the window text for a specifiedΓöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWindowFromID ΓöéReturns the handle of the child Γöé
- Γöé Γöéwindow with the specified identity. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Static-Control Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSM_QUERYHANDLE ΓöéReturns the icon or bit map handle Γöé
- Γöé Γöéof a static control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSM_SETHANDLE ΓöéSets the icon or bit map handle of aΓöé
- Γöé Γöéstatic control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_MATCHMNEMONIC ΓöéSent by the dialog box to a control Γöé
- Γöé Γöéwindow to determine whether a typed Γöé
- Γöé Γöécharacter matches a mnemonic in its Γöé
- Γöé Γöéwindow text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé Γöéconversion of DBCS characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe static control window procedure Γöé
- Γöé Γöéwindow parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the static control window Γöé
- Γöé Γöéprocedure window parameters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 17. Title-Bar Controls ΓòÉΓòÉΓòÉ
-
- A title-bar is one of several control windows that comprise a standard frame
- window, giving the frame window its distinctive look and performance
- capabilities. This chapter describes how to create and use title-bar control
- windows in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 17.1. About Title Bars ΓòÉΓòÉΓòÉ
-
- The title bar in a standard frame window performs the following four functions:
-
- o Displays the title of the window across the top of the frame window.
-
- o Changes its highlighted appearance to show whether the frame window is
- active. (Ordinarily, the topmost window on the screen is the active window.)
-
- o Responds to the actions of the user-for example, dragging the frame window to
- a new location on the screen.
-
- o Flashes (as a result of the WinFlashWindow function) to get the attention of
- the user.
-
- Title Bar in a Standard Frame Window
-
- Once the frame controls are in place in the frame window, an application
- typically ignores them, because the system handles frame controls. In some
- cases, however, an application can take control of the title bar by sending
- messages to the title-bar control window.
-
-
- ΓòÉΓòÉΓòÉ 17.1.1. Default Title-Bar Behavior ΓòÉΓòÉΓòÉ
-
- A title-bar control window sends messages to its owner (the frame window) when
- the control receives user input. Following are the messages that the title-bar
- control processes. Each message is described in terms of how the title-bar
- control responds to that message.
-
- Messages Processed by Title-Bar Control
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTBM_QUERYHILITE ΓöéReturns the highlighted state of theΓöé
- Γöé Γöétitle bar. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTBM_SETHILITE ΓöéSets the highlighted state of the Γöé
- Γöé Γöétitle bar, repainting the title bar Γöé
- Γöé Γöéif the state is changing. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéRestores the title bar if the owner Γöé
- Γöé Γöéwindow is minimized or maximized. Γöé
- Γöé ΓöéIf the window is neither minimized Γöé
- Γöé Γöénor maximized, this message Γöé
- Γöé Γöémaximizes the window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéSends the WM_TRACKFRAME message to Γöé
- Γöé Γöéthe owner window to start the Γöé
- Γöé Γöétracking operation for the frame Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéSets the text for the title bar. Γöé
- Γöé ΓöéReturns FALSE if the text is alreadyΓöé
- Γöé Γöéset. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéFrees the window text for the title Γöé
- Γöé Γöébar. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HITTEST ΓöéAlways returns HT_NORMAL, so that Γöé
- Γöé Γöéthe title bar does not beep when it Γöé
- Γöé Γöéis disabled. (It is disabled when Γöé
- Γöé Γöéthe frame window is maximized.) Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéDraws the title bar. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYDLGCODE ΓöéReturns the predefined constant Γöé
- Γöé ΓöéDLGC_STATIC. The user cannot use theΓöé
- Γöé ΓöéTab key to move to the title bar in Γöé
- Γöé Γöéa dialog window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéReturns the requested window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéSets the specified window Γöé
- Γöé Γöéparameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_WINDOWPOSCHANGED ΓöéReturns FALSE. Processes this Γöé
- Γöé Γöémessage to prevent the Γöé
- Γöé ΓöéWinDefWindowProc function from Γöé
- Γöé Γöésending the size and show messages. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 17.2. Using Title-Bar Controls ΓòÉΓòÉΓòÉ
-
- This section explains how to:
-
- o Include a title bar in a frame window.
- o Alter the dragging action of a title bar.
-
-
- ΓòÉΓòÉΓòÉ 17.2.1. Including a Title Bar in a Frame Window ΓòÉΓòÉΓòÉ
-
- An application can include a title bar in a standard frame window by specifying
- the FCF_TITLEBAR flag in the WinCreateStdWindow function.
-
- The following code fragment shows how to create a standard frame window with a
- title bar, minimize and maximize (window-sizing) buttons, size border, system
- menu, and an application menu.
-
- #define ID_MENU_RESOURCE 101
-
- HWND hwndFrame,hwndClient;
- UCHAR szClassName[255];
-
- ULONG flControlStyle = FCF_TITLEBAR | FCF_MINMAX | FCF_SIZEBORDER |
- FCF_SYSMENU | FCF_MENU;
-
- hwndFrame = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE | FS_ACCELTABLE,
- &flControlStyle, szClassName, "",
- 0, (HMODULE) NULL, ID_MENU_RESOURCE,
- &hwndClient);
-
- #define ID_MENU_RESOURCE 101
-
- HWND hwndFrame,hwndClient;
- UCHAR szClassName[255];
-
- ULONG flControlStyle = FCF_TITLEBAR | FCF_MINMAX | FCF_SIZEBORDER |
- FCF_SYSMENU | FCF_MENU;
-
- hwndFrame = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE | FS_ACCELTABLE,
- &flControlStyle, szClassName, "",
- 0, (HMODULE) NULL, ID_MENU_RESOURCE,
- &hwndClient);
-
- To get the window handle of a title-bar control, an application calls
- WinWindowFromID, specifying the frame-window handle and a constant identifying
- the title-bar control, as shown in the following code fragment:
-
-
- hwndTitleBar = WinWindowFromID(hwndFrame, FID_TITLEBAR);
-
- To set the text of a title bar, an application can use the WinSetWindowText
- function. The frame window passes the new text to the title-bar control in a
- WM_SETWINDOWPARAMS message.
-
-
- ΓòÉΓòÉΓòÉ 17.2.2. Altering Dragging Action ΓòÉΓòÉΓòÉ
-
- When the user clicks the title bar, the title-bar control sends a WM_TRACKFRAME
- message to its owner (the frame window). When the frame window receives the
- WM_TRACKFRAME message, the frame sends a WM_QUERYTRACKINFO message to itself to
- fill in a TRACKINFO structure that defines the tracking parameters and
- boundaries. To modify the default behavior, an application must subclass the
- frame window, intercept the WM_QUERYTRACKINFO message, and modify the TRACKINFO
- structure. If the application returns TRUE for the WM_QUERYTRACKINFO message,
- the tracking operation proceeds according to the information in the TRACKINFO
- structure. If the application returns FALSE, no tracking occurs.
-
-
- ΓòÉΓòÉΓòÉ 17.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions, structures, and messages used with title-bar
- controls.
-
- Title-Bar Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateStdWindow ΓöéCreates a standard window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinFlashWindow ΓöéStarts or stops the flashing of a Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetWindowText ΓöéSets the window text for a specifiedΓöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinWindowFromID ΓöéReturns the handle of the child Γöé
- Γöé Γöéwindow with the specified identity. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Title-Bar Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSWP ΓöéSet window position structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTRACKINFO ΓöéTracking information structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Title-Bar Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTBM_QUERYHILITE ΓöéReturns the highlighting state of a Γöé
- Γöé Γöétitle-bar control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTBM_SETHILITE ΓöéUsed to highlight or unhighlight a Γöé
- Γöé Γöétitle-bar control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DBLCLK ΓöéOccurs when the user presses button Γöé
- Γöé Γöé1 of the pointing device twice. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_BUTTON1DOWN ΓöéOccurs when the user presses pointerΓöé
- Γöé Γöébutton 1. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CREATE ΓöéOccurs when an application requests Γöé
- Γöé Γöéthe creation of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DESTROY ΓöéOccurs when an application requests Γöé
- Γöé Γöéthe destruction of a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_HITTEST ΓöéSent to determine which window is Γöé
- Γöé Γöéassociated with an input from the Γöé
- Γöé Γöépointing device. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PAINT ΓöéOccurs when a window needs Γöé
- Γöé Γöérepainting. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYCONVERTPOS ΓöéSent by an application to determine Γöé
- Γöé Γöéwhether it is appropriate to begin Γöé
- Γöé Γöéconversion of DBCS characters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYDLGCODE ΓöéSent by the dialog manager to Γöé
- Γöé Γöéidentify the type of control, to Γöé
- Γöé Γöédetermine what kinds of messages theΓöé
- Γöé Γöécontrol understands, and to Γöé
- Γöé Γöédetermine whether an input message Γöé
- Γöé Γöécan be processed by the dialog Γöé
- Γöé Γöémanager or passed down to the Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe title-bar control window Γöé
- Γöé Γöéprocedure window parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the title-bar control windowΓöé
- Γöé Γöéprocedure window parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TRACKFRAME ΓöéSent to a window whenever it is to Γöé
- Γöé Γöébe moved or sized. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_WINDOWPOSCHANGED ΓöéSent to the window procedure of the Γöé
- Γöé Γöéwindow whose position is changed. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 18. Container Controls ΓòÉΓòÉΓòÉ
-
- A container control (WC_CONTAINER window class) is a visual component that
- holds objects. It provides a powerful and flexible component for easily
- developing products that conform to the Common User Access (CUA) user interface
- guidelines. This chapter describes the container control component and how to
- use it in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 18.1. About Container Controls ΓòÉΓòÉΓòÉ
-
- A container can display objects in various formats and views. Generally
- speaking, each view displays different information about each object. If a
- container's data is too large for the window's client area (hereinafter
- referred to as work area in accordance with CUA guidelines), scrolling
- mechanisms are enabled. 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.
-
- Containers are an integral component of the CUA user interface. For a complete
- description of CUA containers, refer to the SAA CUA Guide to User Interface
- Design and the SAA CUA Advanced Interface Design Reference.
-
-
- ΓòÉΓòÉΓòÉ 18.1.1. Container Control Functions ΓòÉΓòÉΓòÉ
-
- The container control implements the following functions:
-
- o Multiple types of views of a container's contents, such as:
-
- - Icon view
- - Name view
- - Text view
- - Tree view
- - Details view.
-
- o Switching between container views quickly and easily
-
- o Sharing records among multiple containers in the same process
-
- o Displaying each view with a different font
-
- o Directly editing container control text in all views, including blank text
- fields
-
- o A split bar for vertically splitting the details view into two parts so that
- a user can widen one part to see more information
-
- o Supporting various data types, such as:
-
- - Icons or bit maps for the icon, name, tree, and details views. In the
- details view, this includes the ability to use icons or bit maps in column
- headings as well as in the columns themselves.
-
- - Text that is supported in the following situations:
-
- o For container titles in all views
- o Beneath icons or bit maps in the icon view
- o To the right of icons or bit maps in the name and tree views
- o For any column or column heading in the details view
- o For container items in the text view.
-
- - Date, time, and number format, for container items in the details view.
-
- o Direct manipulation
-
- o Selection types, such as:
-
- - Single selection
- - Extended selection
- - Multiple selection.
-
- o Selection techniques, such as:
-
- - Marquee selection
- - Two-swipe selections, such as:
-
- o Touch swipe
- o Range swipe.
-
- - First-letter selection.
-
- o Selection mechanisms, such as:
-
- - Any pointing device
- - Keyboard.
-
- o Multiple forms of emphasis:
-
- - In-use emphasis
- - Selected-state emphasis
- - Target emphasis.
-
- o Ownerdraw, which enables an application to draw the container items instead
- of the container control's drawing them. In the details view, this can be
- done for each column.
-
- o Sorting and filtering container items
-
- o Arranging container items in the icon view, such as:
-
- - Automatic reposition mode that, when set, repositions container items as a
- result of inserting, removing, sorting, or filtering items, or changing
- window or font size
-
- - Arrange message mode that arranges overlapping icons or bit maps so that
- they no longer overlap.
-
- o Scrolling a container's work area, such as:
-
- - When the current size of a container's work area is not large enough for
- all the container items to be visible
-
- - Dynamic scrolling to provide visible feedback, showing the movement of the
- container items relative to the position of the scroll box.
-
- o Data caching:
-
- - To efficiently remove items from, and insert items in, a container as they
- scroll in and out of view.
-
- o An option to optimize memory usage.
-
-
- ΓòÉΓòÉΓòÉ 18.1.2. Container Control Basics ΓòÉΓòÉΓòÉ
-
- This section contains basic information about the container control that you
- need to understand before reading the remainder of the chapter. This important
- information is presented in the following order:
-
- o Creating a container
- o Understanding container items
- o Allocating memory for container records and columns
- o Understanding container views
- o Changing a container view.
-
-
- ΓòÉΓòÉΓòÉ 18.1.2.1. Creating a Container ΓòÉΓòÉΓòÉ
-
- You create a container by using the WC_CONTAINER window class name in the
- ClassName parameter of the WinCreateWindow function. The following figure shows
- the creation of the container. The styles specified in the ulCnrStyles variable
- (the CCS_* values) specifies that the container is to be created with the
- automatic positioning of container items and extended selection.
-
-
- Sample Code for Creating a Container
-
- HWND hwndCnr; /* Container window handle */
- ULONG ulCnrStyles; /* Container window styles */
-
- /**********************************************************************/
- /* Set CCS_* flags to customize the */
- /* container. */
- /**********************************************************************/
- ulCnrStyles =
- CCS_AUTOPOSITION | /* Auto position */
- CCS_ EXTENDSEL; /* Extended selection */
-
- /**********************************************************************/
- /* Create the container control window. */
- /**********************************************************************/
- hwndCnr =
- WinCreateWindow(
- ClientHwnd, /* Parent window handle */
- WC_CONTAINER, /* Container class name */
-
- NULL, /* No window text */
- ulCnrStyles, /* Container styles */
- (LONG)10, /* X coordinate */
- (LONG)10, /* Y coordinate */
- (LONG)300, /* Window width */
- (LONG)200, /* Window height */
-
- ClientHwnd, /* Owner window handle */
- HWND_TOP, /* Sibling window handle */
- CONTAINER_ID, /* Container window ID */
- NULL, /* No control data */
- NULL); /* No presentation parameters */
-
- /**********************************************************************/
- /* Make the container control visible. */
- /**********************************************************************/
- WinShowWindow(
- hwndCnr, /* Container window handle */
- TRUE); /* Make the window visible */
-
- The container is created with a default set of control data, which can be
- changed using the CM_SETCNRINFO message. Refer to the OS/2 2.0 Programming
- Reference for a list of the default control data for the CNRINFO data
- structure.
-
-
- ΓòÉΓòÉΓòÉ 18.1.2.2. Understanding Container Items ΓòÉΓòÉΓòÉ
-
- Container items can be anything that 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 and MINIRECORDCORE data structures.
- Both the application and the container have access to the data stored in these
- records. Refer to the OS/2 2.0 Programming Reference for more information
- about the RECORDCORE and MINIRECORDCORE data structures.
-
- The application is responsible for allocating memory for each record by using
- the CM_ALLOCRECORD message. See Allocating Memory for Container Records and
- Allocating Memory for Container Columns for more information.
-
- 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. See Understanding Container Views for descriptions of the
- container views.
-
- Types of Container Views for Displaying Types of Data
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéView Types ΓöéData Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéIcon ΓöéIcons or bit maps with text strings beneath. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéName ΓöéIcons or bit maps with text strings to the Γöé
- Γöé Γöéright. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéText ΓöéText strings. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTree ΓöéIcons or bit maps, and text strings. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDetails ΓöéIcons or bit maps, text strings, numbers, Γöé
- Γöé Γöétimes, and dates. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 18.1.2.3. Allocating Memory for Container Records ΓòÉΓòÉΓòÉ
-
- Your application is required to allocate memory for a container record by using
- the CM_ALLOCRECORD message, which also enables you to allocate memory for
- additional application data. The sample code in the following figure shows how
- to allocate memory for one record. A pointer to the record is returned.
-
-
- Sample Code for Allocating Memory for Container Records
-
- HWND hwndCnr; /* Container window handle */
- PRECORDCORE pRecord; /* Pointer to RECORDCORE structure */
- ULONG nRecords = 1; /* 1 record to be allocated */
-
- pRecord =
- (PRECORDCORE)WinSendMsg(
- hwndCnr, /* Container window handle */
- CM_ALLOCRECORD, /* Message for allocating the record */
- (MPARAM)NULL, /* No additional memory */
- (MPARAM)nRecords); /* Number of records to be allocated */
-
- Your application also can use the CM_ALLOCRECORD message to allocate memory for
- more than one container record. The application can request n container
- records with the nRecords parameter. If n is greater than one, the pRecord
- parameter returns a pointer to the first record in a linked list of n records.
- Refer to the OS/2 2.0 Programming Reference for a description of the
- CM_ALLOCRECORD message and the RECORDCORE data structure.
-
-
- ΓòÉΓòÉΓòÉ 18.1.2.4. Allocating Memory for Container Columns ΓòÉΓòÉΓòÉ
-
- In addition to allocating memory for records, an application also must allocate
- memory for columns of data if the details view is used. In the details view, a
- container's data is displayed in columns, each of which is described in a
- FIELDINFO data structure.
-
- Memory is allocated for FIELDINFO data structures using the
- CM_ALLOCDETAILFIELDINFO message. Unlike the CM_ALLOCRECORD message, the
- CM_ALLOCDETAILFIELDINFO message does not allow the application to allocate
- memory for additional application data. However, the pUserData field of the
- FIELDINFO data structure can be used to store a pointer to the
- application-allocated data.
-
- Multiple FIELDINFO data structures can be allocated with the nFieldInfo
- parameter of the CM_ALLOCDETAILFIELDINFO message. See Details View for a
- description of the details view. Refer to the OS/2 2.0 Programming Reference
- for descriptions of the FIELDINFO data structure and the
- CM_ALLOCDETAILFIELDINFO message.
-
-
- ΓòÉΓòÉΓòÉ 18.1.3. Understanding Container Views ΓòÉΓòÉΓòÉ
-
- When a user opens a container, the contents of that container are displayed in
- a window. A container window can present various views of its contents. Each
- view can provide different information about its container items. The
- container control provides the following views:
-
- Views of a Container's Contents
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéType of View ΓöéContents Displayed Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéIcon view ΓöéDisplays either icons or bit maps, with text Γöé
- Γöé Γöébeneath the icons or bit maps, to represent Γöé
- Γöé Γöécontainer items. These are called icon/text Γöé
- Γöé Γöéor bit-map/text pairs. Each icon/text or Γöé
- Γöé Γöébit-map/text pair represents one container Γöé
- Γöé Γöéitem. This is the default view. See Icon Γöé
- Γöé ΓöéView for a description of the icon view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéName view ΓöéDisplays either icons or bit maps, with text Γöé
- Γöé Γöéto the right of the icons or bit maps, to Γöé
- Γöé Γöérepresent container items. These are called Γöé
- Γöé Γöéicon/text or bit-map/text pairs. Each Γöé
- Γöé Γöéicon/text or bit-map/text pair represents oneΓöé
- Γöé Γöécontainer item. See Name View for a Γöé
- Γöé Γöédescription of the name view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéText view ΓöéDisplays a simple text list to represent Γöé
- Γöé Γöécontainer items. See Text View for a Γöé
- Γöé Γöédescription of the text view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTree view ΓöéDisplays a hierarchical view of the containerΓöé
- Γöé Γöéitems. Three types of tree views are Γöé
- Γöé Γöéavailable: tree text, tree icon, and tree Γöé
- Γöé Γöéname. See Tree View for a description of theΓöé
- Γöé Γöétree view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDetails view ΓöéDisplays detailed information about each Γöé
- Γöé Γöécontainer item. The same type of data is Γöé
- Γöé Γöédisplayed for each container item, arranged Γöé
- Γöé Γöéin columns. The data in each column can Γöé
- Γöé Γöéconsist of an icon or bit map, text, numbers,Γöé
- Γöé Γöédates, or times. See Details View for a Γöé
- Γöé Γöédescription of the details view. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The container control does not support both icons and bit maps in the same
- view. To specify whether icons or bit maps are used, an application can set
- either the CA_DRAWICON attribute or CA_DRAWBITMAP attribute, respectively, in
- the flWindowAttr field. The default is the CA_DRAWICON attribute. The size of
- the icon or bit map can be specified in the slBitmapOrIcon field. flWindowAttr
- and slBitmapOrIcon are fields of the CNRINFO data structure. Refer to the OS/2
- 2.0 Programming Reference for a description of the CNRINFO data structure.
-
- If a text string is not specified for a view in a place where a text string
- could be used, a blank space is used as a placeholder. For example, if a text
- string is not placed beneath an icon in the icon view, a blank space is
- inserted just as though the text string was there. If this blank space is not
- a read-only field, the user can put text in the space by editing it directly.
- See Direct Editing of Text in a Container for more information about editing
- text directly in a container control.
-
-
- ΓòÉΓòÉΓòÉ 18.1.4. Icon View ΓòÉΓòÉΓòÉ
-
- The icon view (CV_ICON attribute) displays icon/text pairs or bit-map/text
- pairs to represent container items; this is the default. CV_ICON is an
- attribute of the CNRINFO data structure's flWindowAttr field.
-
- In the icon view, icon/text pairs and bit-map/text pairs are icons and bit
- maps, respectively, with one or more lines of text displayed below each icon or
- bit map. Each line can contain one or more text characters, which are centered
- below the icon or bit map. The container control does not limit the number of
- lines or the number of characters in each line.
-
- Generally, the icon or bit map contains an image that depicts the type of
- container item that it represents. For example, an icon or bit map that
- represents a bar chart might contain an image of a bar chart.
-
- In the icon view, container items are positioned according to x- and
- y-coordinate positions. These are called workspace coordinates. You can
- supply these coordinates for each container item by using the ptlIcon field of
- the RECORDCORE data structure. See Positioning Container Items for information
- about using workspace coordinates to position container items. Refer to the
- OS/2 2.0 Programming Reference for a description of the RECORDCORE data
- structure. The following figure provides an example of the icon view with
- various x- and y-coordinates specified in the ptlIcon field.
-
- Icon View with Items Positioned at Workspace Coordinates
-
- If you do not specify x- and y-coordinate positions, the container control
- positions the icons or bit maps at (0,0). However, your application can
- arrange the icons or bit maps either by sending the CM_ARRANGE message or by
- setting the CCS_AUTOPOSITION style bit when creating a container. With both of
- these methods, the container items are arranged in rows, and any coordinates
- specified in the ptlIcon field are ignored.
-
- The container items fill the topmost row until the width of the work area is
- reached. The container items then wrap to form another row immediately below
- the filled row. This process is repeated until all the container items are
- positioned in rows. Default spacing is implemented according to the guidelines
- for the CUA user interface. The following figure shows an example of the
- container after the CM_ARRANGE message was sent, or if the container was
- created with the CCS_AUTOPOSITION style bit set.
-
- Icon View When Items Are Arranged or Automatically Positioned
-
- If the CCS_AUTOPOSITION style bit is set and the container is displaying the
- icon view, container items are arranged automatically without the CM_ARRANGE
- message being sent when:
-
- o The window size changes
- o Container items are inserted, removed, sorted, invalidated, or filtered
- o The font or font size 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.
-
- If the CM_ARRANGE message is issued and the container control is not currently
- displaying the icon view, the container items are still arranged logically.
- Nothing changes in the current view; the arrangement of the container items is
- not visible until the user switches to the icon view.
-
-
- ΓòÉΓòÉΓòÉ 18.1.5. Name View ΓòÉΓòÉΓòÉ
-
- The name view (CV_NAME attribute) displays icon/text or bit-map/text pairs to
- represent container items. CV_NAME is an attribute of the CNRINFO data
- structure's flWindowAttr field.
-
- In the name view, icon/text pairs and bit-map/text pairs are icons and bit
- maps, respectively, with one or more lines of text displayed to the right of
- each icon or bit map. Each line can contain one or more text characters, which
- are left-justified. The container control does not limit the number of lines
- or the number of characters in each line.
-
- The container control offers the option of flowing or not flowing the container
- items in the name view. To flow container items means to dynamically arrange
- them in columns.
-
-
- ΓòÉΓòÉΓòÉ 18.1.5.1. Non-Flowed Name View ΓòÉΓòÉΓòÉ
-
- If the container items are not flowed, the icon/text or bit-map/text pairs are
- placed in a single column in the leftmost portion of the work area, as in the
- following figure.
-
- Non-Flowed Name View
-
-
- ΓòÉΓòÉΓòÉ 18.1.5.2. Flowed Name View ΓòÉΓòÉΓòÉ
-
- If the container items are flowed (CV_NAME | CV_FLOW), the container appears,
- as shown in the following figure. In this case, the container items fill the
- leftmost column until the depth of the work area is reached. The container
- items then wrap to form another column immediately to the right of the filled
- column. This process is repeated until all of the container items are
- positioned in columns.
-
- The width of each column is determined by the widest text string within the
- column. The depth of the work area is determined by the size of the window.
-
- Flowed Name View
-
-
- ΓòÉΓòÉΓòÉ 18.1.6. Text View ΓòÉΓòÉΓòÉ
-
- The text view (CV_TEXT attribute) displays one or more lines of text to
- represent container items. CV_TEXT is an attribute of the CNRINFO data
- structure's flWindowAttr field.
-
- Each line can contain one or more text characters, which are left-justified.
- The container control does not limit the number of lines or the number of
- characters in each line.
-
- The container control offers the option of flowing or not flowing the container
- items in the text view.
-
-
- ΓòÉΓòÉΓòÉ 18.1.6.1. Non-Flowed Text View ΓòÉΓòÉΓòÉ
-
- If the text strings are not flowed, the text for each container item is placed
- in a single column in the leftmost portion of the work area, as shown in the
- following figure.
-
- Non-Flowed Text View
-
-
- ΓòÉΓòÉΓòÉ 18.1.6.2. Flowed Text View ΓòÉΓòÉΓòÉ
-
- If the text strings are flowed (CV_TEXT | CV_FLOW), the container appears as
- shown in the following figure. In this case, the text strings fill the leftmost
- column until the depth of the work area is reached. The text strings then wrap
- to form another column immediately to the right of the filled column. This
- process is repeated until all the text strings are positioned in columns.
-
- The width of each column is determined by the widest text string within the
- column. The depth of the work area is determined by the size of the window.
-
- Flowed Text View
-
-
- ΓòÉΓòÉΓòÉ 18.1.7. Tree View ΓòÉΓòÉΓòÉ
-
- The tree view (CV_TREE attribute) displays container items arranged
- hierarchically. CV_TREE is an attribute of the CNRINFO data structure's
- flWindowAttr field.
-
- The leftmost items displayed in the tree view are at the root level and are the
- same items displayed in all the other container views. Items that contain
- other items are called parent items. The item or items that a parent item
- contains are called child items and can be displayed only in the tree view.
- Child items that contain other items serve a dual role: they are the children
- of their parent item, but they are parent items as well, with children of their
- own. For example, a parent item might be a book that contains individual child
- items for its chapters, or a folder that contains several reports. The
- chapters or reports, in turn, could be parent items that contain their own
- children, such as the major sections of a chapter or report.
-
- If the child item or items of a parent item are not displayed, the parent item
- can be expanded to display them as a new branch in the tree view. Once a
- parent item has been expanded, it can be collapsed to remove its child items
- from the display.
-
- You can use the cxTreeIndent and cxTreeLine fields of the CNRINFO data
- structure to specify the number of pels that a new branch is to be indented
- horizontally, and the width of the lines that are used to connect branches of
- the tree. These lines are displayed only if the CA_TREELINE attribute is
- specified in the flWindowAttr field.
-
- The tree view has three different types: tree icon view, tree text view, and
- tree name view. The following figure uses the tree icon view to provide
- examples of root level, parent, and child items that were defined in this
- section. The expanded and collapsed bit maps shown in this figure are defined
- in the following section.
-
- Sample Tree View Showing Root Level, Parent, and Child Items
-
-
- ΓòÉΓòÉΓòÉ 18.1.7.1. Tree Icon View and Tree Text View ΓòÉΓòÉΓòÉ
-
- The tree icon and tree text views are identical in every aspect except one:
- their appearance on the screen. Container items in the tree icon view
- (CV_TREE | CV_ICON) are displayed as either icon/text pairs or bit-map/text
- pairs. The items are drawn as icons or bit maps with one or more lines of text
- displayed to the right of each icon or bit map. The following figure provides
- an example of a tree icon view that uses the default expanded and collapsed bit
- maps.
-
- Tree Icon View
-
- Container items in the tree text view (CV_TREE | CV_TEXT) are displayed as text
- strings. In both views, the container control does not limit the number of
- lines of text or the number of characters in each line. The following figure
- provides an example of the tree text view, again showing the default expanded
- and collapsed bit maps.
-
- Tree Text View
-
- In the tree icon and tree text views, a parent item is expanded by selecting
- the collapsed icon/bit map, which is displayed to the left of the parent item.
-
- The collapsed icon/bit map should contain some visible indication that the item
- can be expanded. The default collapsed bit map that is provided by the
- container control uses a plus sign (+) to indicate that more items, the
- children of this parent, can be added to the view.
-
- When the child items of a parent item are displayed, the collapsed icon/bit map
- to the left of that parent item changes to an expanded icon/bit map. Just as
- the collapsed icon/bit map provides a visible indication that an item can be
- expanded, so should the expanded icon/bit map indicate that an item can be
- collapsed. The default expanded bit map provided by the container control uses
- a minus sign (-) to indicate that the child items of this parent can be
- subtracted from the view. If any of the child items have children of their
- own, a collapsed or expanded icon/bit map is displayed to their immediate left
- as well.
-
- To display your own collapsed and expanded icons or bit maps, specify their
- handles by using the hptrCollapsed and hptrExpanded fields of the CNRINFO data
- structure for icons, and the hbmCollapsed and hbmExpanded fields for bit maps.
- Also, you can use the slTreeBitmapOrIcon field to specify the size, in pels, of
- these collapsed and expanded icons and bit maps. Refer to the description of
- the CNRINFO data structure in the OS/2 2.0 Programming Reference for more
- information.
-
-
- ΓòÉΓòÉΓòÉ 18.1.8. Tree Name View ΓòÉΓòÉΓòÉ
-
- Container items in the tree name view (CV_TREE | CV_NAME) are displayed as
- either icon/text pairs or bit-map/text pairs. Similar to the tree icon view,
- the items are drawn as icons or bit maps with one or more lines of text
- displayed to the right of each icon or bit map. The container control does not
- limit the number of lines or the number of characters in each line of text.
-
- Unlike the tree icon view, however, separate collapsed and expanded icons/bit
- maps are not used. Instead, if an item is a parent, the icon or bit map that
- represents that item contains the same type of visible indication that is
- placed in a separate icon/bit map in the tree icon view to show that an item
- can be collapsed or expanded. In this way, the icon or bit map that represents
- the parent item can serve a dual purpose, and thus preserve space on the
- screen, an important consideration if the text strings used to describe items
- become too long.
-
- The container control does not provide default icons or bit maps for the tree
- name view. To display your own collapsed and expanded icons or bit maps,
- specify their handles using the hptrCollapsed and hptrExpanded fields of the
- TREEITEMDESC data structure for icons, and the hbmCollapsed and hbmExpanded
- fields for bit maps. Also, you can use the slBitmapOrIcon field of the CNRINFO
- data structure to specify the size, in pels, of these collapsed and expanded
- icons and bit maps. Refer to the description of the TREEITEMDESC and CNRINFO
- data structures in the OS/2 2.0 Programming Reference for more information
- about these data structures and the following figure for an example of the tree
- name view.
-
- Tree Name View
-
-
- ΓòÉΓòÉΓòÉ 18.1.9. Details View ΓòÉΓòÉΓòÉ
-
- The details view (CV_DETAIL attribute) of the container control can display the
- following data types to represent container items: icons or bit maps, text,
- numbers, dates, and times. CV_DETAIL is an attribute of the CNRINFO data
- structure's flWindowAttr field.
-
- The data is arranged in columns, which can have headings. Each column can
- contain data that belongs to only one of the valid data types. Column headings
- can contain text, icons, or bit maps.
-
- The width of each column can be explicitly specified in the cxWidth field of
- the FIELDINFO data structure. If a column width is not specified, it is
- determined by the widest entry in the column. Refer to the OS/2 2.0
- Programming Reference for a description of the FIELDINFO data structure.
-
- Columns can be inserted or removed dynamically. All of the columns in a given
- row represent a single container item; selecting the data portion of a row
- selects the entire row, not just the individual column.
-
- Details view column headings and data can be top- or bottom-justified or
- vertically centered, as well as left- or right-justified or horizontally
- centered. In addition, horizontal separator lines can be specified between the
- column headings and the data; vertical separator lines can be placed between
- columns. In the example in the following figure, Container Items, the icon,
- Description, and Item Size are the column headings.
-
- Ownerdraw is supported for each column.
-
- Details View See Drawing Container Items and Painting Backgrounds for more
- information about ownerdraw.
-
- Split Bar Support for the Details View
- A split bar enables the application to split the container window vertically
- between two column boundaries. This function is available only in the details
- view.
-
- The two portions of the work area on either side of the split bar appear
- side-by-side. They scroll in unison vertically, but they scroll independently
- horizontally.
-
- The application is responsible for specifying the position of the split bar,
- which is defined with the xVertSplitbar field. Also, the rightmost column of
- the left split window is specified with the pFieldInfoLast field.
- xVertSplitbar and pFieldInfoLast are fields of the CNRINFO data structure.
- Refer to the OS/2 2.0 Programming Reference for a description of the CNRINFO
- data structure.
-
- The left split window cannot be empty if there is data in the right window.
- The right split window is not required to have data. However, because data
- cannot be scrolled from the right split window into the left split window, or
- from left to right, the split bar loses much of its usefulness if the right
- split window is empty.
-
- The user can drag the vertical split bar within the limits of the window. As
- the user drags the split bar to the left, the right split window becomes wider;
- and as the split bar is dragged to the right, the left split window becomes
- wider.
-
- Each container control can have one vertical split bar. Horizontal split bars
- are not supported.
-
- The following figure shows a split bar between the Description column and the
- Date Created column.
-
- Details View with Split Bar
-
-
- ΓòÉΓòÉΓòÉ 18.1.10. Changing a Container View ΓòÉΓòÉΓòÉ
-
- The sample code in the following figure shows how to use the CM_SETCNRINFO
- message to change from the current view of a container (name, details, or text)
- to the icon view.
-
-
- Sample Code for Changing a Container View
-
- CNRINFO cnrInfo;
-
- /**********************************************************************/
- /* Set the attribute field to the icon view. */
- /**********************************************************************/
- cnrInfo.flWindowAttr = CV_ICON;
-
- /**********************************************************************/
- /* Change the view from the current view to the icon view. */
- /**********************************************************************/
- WinSendMsg(
- hwndCnr, /* Container window handle */
- CM_SETCNRINFO, /* Container message for setting */
- MPFROMP(&cnrInfo), /* Container control data */
- MPFROMLONG(
- CMA_FLWINDOWATTR)); /* Message attribute that sets */
- /* container window attributes */
-
- Refer to the OS/2 2.0 Programming Reference for a complete description of the
- CM_SETCNRINFO message.
-
-
- ΓòÉΓòÉΓòÉ 18.2. Using a Container ΓòÉΓòÉΓòÉ
-
- You need the following information to use a container control in your
- application after it is created:
-
- o Inserting container records
- o Removing container records
- o Setting the container control focus.
-
-
- ΓòÉΓòÉΓòÉ 18.2.1. Inserting Container Records ΓòÉΓòÉΓòÉ
-
- After the memory is allocated, you can insert one or more container records by
- using the CM_INSERTRECORD message. This message enables you to provide two
- pointers. The first pointer points to the record or records that are to be
- inserted, which is specified in the pRecord parameter. When you are inserting
- multiple records, use this parameter to specify a pointer to a linked list of
- records.
-
- The second pointer points to a RECORDINSERT data structure, which specifies
- information the container needs for inserting records.
-
- One of the elements of information that this data structure contains is the
- order in which the record or records are to be inserted, which is specified in
- the pRecordOrder field. In this field you have two options. The first option
- is to specify a pointer to a container record. The record or records being
- inserted will be placed immediately after that record. In this case, the
- pRecordParent field is ignored.
-
- The second option is to specify whether the record or records being inserted
- are to be placed at the beginning or end of a list of records. This is done by
- specifying either the CMA_FIRST or CMA_END attributes, respectively. If you
- choose this option, the list of records used depends on the value of the
- pRecordParent field.
-
- If CMA_FIRST or CMA_END is specified and the value of the pRecordParent field
- is NULL, the inserted record or records are placed at the beginning or end,
- respectively, of the root level records. However, if CMA_FIRST or CMA_END is
- specified and pRecordParent contains a pointer to a parent item record, the
- records are inserted at the beginning or end, respectively, of the list of
- child item records that this parent record contains. See Tree View for more
- information about root level, parent, and child items.
-
- The RECORDINSERT structure also lets you specify the z-order position of the
- record or records being inserted. The CMA_TOP and CMA_BOTTOM attributes of the
- zOrder field place the record at the top or bottom, respectively, relative to
- the other records in the z-order list. This field applies to the icon view
- only.
-
- To specify the number of records that are being inserted, use the
- cRecordsInsert field. The value of this field must be greater than 0.
-
- The last field in the RECORDINSERT structure is flInvalidateRecord, which
- enables you to control whether the record or records are displayed
- automatically when they are inserted. If you specify TRUE in this field, the
- display is updated automatically. However, if you specify FALSE, the
- application must send the CM_INVALIDATERECORD message after the record or
- records are inserted to update the display.
-
- Where items are positioned in a container depends on the view the user has
- specified. If the icon view is specified and the CCS_AUTOPOSITION style bit is
- not set, the x- and y-coordinates for each record, which are stored in the
- ptlIcon field of the RECORDCORE and MINIRECORDCORE data structures, determine
- its position. Records displayed in the name view, text view, tree view, and
- details view are positioned as previously described in this section.
-
- Note: Records inserted into a list of child record items can be displayed in
- the tree view only. These records will be visible only if the parent
- record item to which these child record items belong is expanded.
-
- The following figure provides sample code that inserts a record into a
- container.
-
-
- SampleCodeforInsertingaRecordintoaContainer
-
- typedef struct _USERRECORD {
- RECORDCORE RecordCore; /* RECORDCORE structure */
- PSZ pszFile; /* Text string for the details view */
- /* column */
- CDATE Date; /* Date for details view column */
- } USERRECORD, *PUSERRECORD; /* User-defined record declaration */
-
- HWND hwndCnr; /* Container window handle */
- PUSERRECORD pUserRecord; /* Pointer to user-defined data */
- /* structure */
- ULONG nRecords = 1; /* Number of records */
- ULONG cbRecordData; /* Number of bytes of additional */
- /* memory */
- RECORDINSERT recordInsert; /* RECORDINSERT structure */
- HPS hps; /* Handle to a presentation space */
- HMODULE hmodIcons; /* Module handle for resources */
-
- hps = WinGetPS (hwndCnr);
- DosLoadModule ("Container Tester", 16, "ICONS", &hmodIcons);
-
- /**********************************************************************/
- /* Allocate memory for USERRECORD */
- /**********************************************************************/
- cbRecordData = (ULONG)(sizeof(USERRECORD) - sizeof(RECORDCORE));
-
- pUserRecord = (PUSERRECORD)WinSendMsg(
- hwndCnr,
- CM_ALLOCRECORD,
- MPFROMLONG(cbRecordData),
- (MPARAM)nRecords);
-
- /**********************************************************************/
- /* Allocate memory for text strings, as application requires. */
- /**********************************************************************/
-
- /**********************************************************************/
- /* Initialize text strings. */
- /**********************************************************************/
- strcpy (pUserRecord->RecordCore.pszText, "Text View");
- strcpy (pUserRecord->RecordCore.pszName, "Name View");
- strcpy (pUserRecord->RecordCore.pszIcon, "Icon View");
- strcpy (pUserRecord->RecordCore.pszTree, "Tree View");
- strcpy (pUserRecord->pszFile, "File Name");
-
- /**********************************************************************/
- /* Initialize date. */
- /**********************************************************************/
- pUserRecord->Date.day = 5;
- pUserRecord->Date.month = 2;
- pUserRecord->Date.year = 91;
-
- /**********************************************************************/
- /* Initialize attributes, icon, and bit-map pointers. */
- /**********************************************************************/
- pUserRecord->RecordCore.hptrIcon = WinLoadPointer(HWND_DESKTOP,
- hmodIcons,
- 5000);
-
- pUserRecord->RecordCore.hbmBitmap = GpiLoadBitmap(hps,
- hmodIcons,
- 8000,
- 0L, 0L);
-
- /**********************************************************************/
- /* Initialize the record position for the icon view. */
- /**********************************************************************/
- pUserRecord->RecordCore.ptlIcon.x = 100;
- pUserRecord->RecordCore.ptlIcon.y = 200;
-
- /**********************************************************************/
- /* Initialize CM_INSERTRECORD data structure. */
- /**********************************************************************/
- recordInsert.pRecordOrder = (PRECORDCORE)CMA_FIRST;
- recordInsert.zOrder = (ULONG)CMA_TOP;
- recordInsert.cRecordsInsert = nRecords;
- recordInsert.fInvalidateRecord = TRUE;
- recordInsert.pRecordParent = NULL;
-
- /**********************************************************************/
- /* Insert record. */
- /**********************************************************************/
- WinSendMsg(hwndCnr,
- CM_INSERTRECORD,
- MPFROMP(pUserRecord),
- MPFROMP(&recordInsert));
-
- /**********************************************************************/
- /* Clean up. */
- /**********************************************************************/
- DosFreeModule(hmodIcons);
- WinReleasePS(hps);
-
-
- ΓòÉΓòÉΓòÉ 18.2.2. Removing Container Records ΓòÉΓòÉΓòÉ
-
- The CM_REMOVERECORD message can be used to remove one or more container records
- from the container control. The application must set the pointers to each
- record in an array to be removed.
-
- If the fRemoveRecord parameter of this message includes the CMA_FREE attribute,
- the records are removed and the memory is freed. If this attribute is not set,
- the records are removed from the list of items in the container, and the
- application must use the CM_FREERECORD message to free the memory. The default
- is to not free the memory.
-
- If the fRemoveRecord parameter includes the CMA_INVALIDATERECORD attribute, the
- container is invalidated after the records are removed. The default is to not
- invalidate the container. The CMA_INVALIDATERECORD attribute can be used with
- the CMA_FREE attribute, separated by a logical OR operator (|), to free the
- record's memory and invalidate the container.
-
- The sample code in the following figure removes all records from a container
- and frees the memory associated with those records. It is the application's
- responsibility to free all application-allocated memory that is associated with
- the removed container records. The container is invalidated and repainted.
-
-
- Sample Code for Removing Container Records
-
- USHORT cNumRecord; /* Number of records to be removed */
- USHORT fRemoveRecord; /* Container message attributes */
-
- /**********************************************************************/
- /* Zero means remove all records. */
- /**********************************************************************/
- cNumRecord = 0;
-
- /**********************************************************************/
- /* Specify attributes to invalidate the container and free the memory */
- /**********************************************************************/
- fRemoveRecord =
- CMA_INVALIDATERECORD | CMA_FREE;
-
- /**********************************************************************/
- /* Remove the records. */
- /**********************************************************************/
- WinSendMsg(hwndCnr, /* Container window handle */
- CM_REMOVERECORD, /* Container message for removing */
- /* records */
- NULL, /* NULL PRECORDARRAY */
- MPFROM2SHORT(
- cNumRecord, /* Number of records */
- fRemoveRecord)); /* Memory invalidation flags */
-
-
- ΓòÉΓòÉΓòÉ 18.2.3. Setting the Container Control Focus ΓòÉΓòÉΓòÉ
-
- The application must set the focus of the container control by using the
- WinSetFocus function.
-
-
- ΓòÉΓòÉΓòÉ 18.3. Graphical User Interface Support ΓòÉΓòÉΓòÉ
-
- The following describes the container control support for graphical user
- interfaces (GUIs). Except where noted, this support conforms to the guidelines
- in the SAA CUA Advanced Interface Design Reference. The GUI support provided
- by the container control consists of:
-
- o Scrolling
- o Selecting container items
- o Providing emphasis
- o Using direct manipulation
- o Specifying space between container items.
-
-
- ΓòÉΓòÉΓòÉ 18.3.1. Scrolling ΓòÉΓòÉΓòÉ
-
- The container control automatically provides 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 work area.
-
- If all container items are visible in the work area, the scroll bars are either
- removed or disabled, depending on the view and how the items are positioned, as
- follows:
-
- o If container items are displayed in the icon or tree view, and one or more
- items are not visible in the work area, a horizontal scroll bar, vertical
- scroll bar, or both, are provided, depending on the position of the items
- outside of the work area. If container items are positioned to the right or
- left of the work area, a horizontal scroll bar is provided; if container
- items are positioned below or above the work area, a vertical scroll bar is
- provided.
-
- Scroll bars are not provided if all the container items are visible in the
- work area. Scroll bars are removed from the container window if either of
- the following occurs:
-
- - Container items positioned outside the work area are moved into the work
- area
-
- - The size of the container window is increased so that container items
- formerly not visible become visible.
-
- o If container items are displayed in non-flowed text and non-flowed name
- views, a vertical scroll bar is provided; this scroll bar is disabled if all
- the container items are visible in the work area. A horizontal scroll bar is
- used in these views only when the work area is too narrow to allow the widest
- container item to be seen in its entirety. If the user changes the window
- size to allow the entire widest container item to be seen, the horizontal
- scroll bar is removed.
-
- o If container items are displayed in flowed text and flowed name views, a
- horizontal scroll bar is provided; this scroll bar is disabled if all the
- container items are visible in the work area. A vertical scroll bar is used
- in these views only when the work area is too short to allow the tallest
- container item to be seen in its entirety. If the user changes the window
- size to allow the entire tallest container item or items to be seen, the
- vertical scroll bar is removed.
-
- o If container items are displayed in the details view, both horizontal and
- vertical scroll bars are provided. These scroll bars are disabled if all the
- container items are visible in the work area.
-
- Note: A details view that is split has two horizontal scroll bars, one for
- each portion of the split window.
-
-
- ΓòÉΓòÉΓòÉ 18.3.2. Dynamic Scrolling ΓòÉΓòÉΓòÉ
-
- The container control supports dynamic scrolling, which enables the user to
- drag the scroll box in the scroll bar and get immediate visible feedback on
- where the scrolling will stop when the scroll box is dropped. If the scrolling
- range is greater than 32KB pels, dynamic scrolling is disabled.
-
-
- ΓòÉΓòÉΓòÉ 18.3.3. Selecting Container Items ΓòÉΓòÉΓòÉ
-
- Except during direct manipulation and direct editing of text in a container, a
- user must select a container item before performing an action on it. The
- container control provides several selection types, along with selection
- techniques to implement those types. The container control also supports two
- selection mechanisms: any pointing device, such as a mouse, and the keyboard.
-
-
- ΓòÉΓòÉΓòÉ 18.3.3.1. Selection Types ΓòÉΓòÉΓòÉ
-
- The container control supports the following selection types:
-
- o Single selection
-
- Single selection enables a user to select only one container item at a time.
- This is the default selection type for all views and is the only selection
- type supported for the tree view.
-
- o Extended selection
-
- Extended selection enables a user to select one or more container items, in
- any combination. The CUA-defined keyboard augmentation keys are implemented
- for extended selection. When used with a pointing device, these keys enable
- a user to select discontiguous sets of container items. Extended selection
- is valid for all views except the tree view.
-
- o Multiple selection
-
- Multiple selection enables a user to select none, some, or all of the
- container items. Multiple selection is valid for all views except the tree
- view.
-
- Only one of these selection types can be used for each container. The
- selection type for a container is defined when the container is created.
-
- These selection types conform to the guidelines in the SAA CUA Advanced
- Interface Design Reference. Refer to that book for detailed information.
-
-
- ΓòÉΓòÉΓòÉ 18.3.3.2. Selection Techniques ΓòÉΓòÉΓòÉ
-
- Depending on the type of view and the type of selection, a user can select
- container items using the following selection techniques:
-
- o Marquee selection
-
- Marquee selection is supported only in the icon view and is only valid with
- the extended and multiple selection types. This selection technique enables
- a user to begin selection from an anchor point that is established by moving
- the pointer to white space in the container and pressing, but not releasing,
- the select button on the pointing device. As the user presses the select
- button and drags the pointer, a tracking rectangle is drawn between the
- anchor point and the current pointer position. All items whose icons or bit
- maps are entirely within the tracking rectangle are dynamically selected.
-
- o Swipe selection
-
- Swipe selection is valid only with the extended and multiple selection types.
- The container control implements two techniques for swipe selection: touch
- swipe and range swipe.
-
- - Touch swipe
-
- Touch swipe selection is implemented in the icon view. With this
- selection technique, the pointer must pass over some portion of a
- container item while the user is pressing the select button for that item
- to be selected.
-
- - Range swipe
-
- In views other than the icon and tree views, range swipe selection is
- available. With this method, the user presses the select button while
- moving the pointer. However, the pointer does not have to pass directly
- over a container item for that item to be selected. Aside from pressing
- the select button and moving the pointer, the only other requirement for
- selection is that the container item must be within a range of items that
- is being selected. The range begins at the pointer's position when the
- user presses the select button; it ends at the pointer's position when the
- user releases the select button. Refer to the SAA CUA Advanced Interface
- Design Reference for complete information on touch swipe and range swipe
- selection.
-
- o First-letter selection
-
- For the icon, name, text, and tree views, first letter selection occurs when
- a character key is pressed, and the first container item whose text begins
- with that character is displayed with selected-state emphasis. The same is
- true for the details view, except that all the columns for a record are
- searched for a matching character before the next record is searched. The
- effect of first letter selection on other selected container items depends on
- the chosen selection type (single, multiple, or extended).
-
- All these selection techniques conform to the descriptions in the SAA CUA Guide
- to User Interface Design.
-
- Note: If more than one container window is open, selecting a container item in
- one window has no effect on the selections in any other window.
-
-
- ΓòÉΓòÉΓòÉ 18.3.3.3. Selection Mechanisms ΓòÉΓòÉΓòÉ
-
- The SAA CUA Guide to User Interface Design defines mouse button 1, the select
- button, to be used for selecting container items and mouse button 2, the drag
- button, to be used for dragging and dropping container items during direct
- manipulation. These definitions also apply to the same buttons on any other
- pointing device.
-
- In addition, a user can press a keyboard key while pressing a mouse button;
- this is called keyboard augmentation. The only instance of keyboard
- augmentation defined specifically for the container control is pressing the Alt
- key with the select button, which starts direct editing of text in a container.
- Refer to the SAA CUA Advanced Interface Design Reference for a complete list of
- the keys that are defined in the CUA guidelines for keyboard augmentation.
-
- In addition, the container control supports two keyboard cursors that can be
- moved by using keyboard navigation keys:
-
- o The selection cursor, a dotted black box drawn around a container item, which
- represents the current position for the purpose of keyboard navigation.
-
- o The text cursor, a vertical line that shows the user where text can be
- inserted or deleted when container text is being edited directly.
-
- Keyboard navigation consists of the use of the Up, Down, Left, and Right Arrow
- keys, the Home key, the End key, the PgUp (page up) key, and the PgDn (page
- down) key. If container items are not visible within the work area, navigation
- with these keys causes the items to scroll into view if the user is not editing
- container text directly. Refer to the SAA CUA Guide to User Interface Design
- for a description of the keyboard interface model.
-
-
- ΓòÉΓòÉΓòÉ 18.3.4. Providing Emphasis ΓòÉΓòÉΓòÉ
-
- The container control supports various types of emphasis. Emphasis is applied
- as described in the SAA CUA Guide to User Interface Design. Refer to that book
- for complete information about the use of emphasis. The following list
- describes forms of emphasis that have a distinct visible representation in the
- container control:
-
- o Selected-state emphasis
-
- When a container item is selected, the entire container item receives
- selected-state emphasis, which means that selected-state emphasis is applied
- to icon/text or bit-map/text pairs in the icon, name, tree icon, and tree
- name views; text strings in the text and tree text views; and an entire row
- that represents a container item in the details view. The following figure
- illustrates selected-state and unavailable-state emphasis; the emphasis on
- the choice in the pull-down menu indicates that the choice is unavailable.
-
- Selected-State and Unavailable-State Emphasis
-
- The color for selected-state emphasis can be changed by using the control
- panel, or the WinSetPresParam function, which results in a
- WM_PRESPARAMCHANGED message being sent to the container. See the
- WinSetPresParam function and WM_PRESPARAMCHANGED (in Container Controls)
- message in the OS/2 2.0 Programming Reference for more information.
-
- o In-use emphasis
-
- Cross-hatching behind an icon or bit map indicates in-use emphasis. In-use
- emphasis is not applied to container items in the text view, tree text view,
- or details view when it contains text only. However, the details view often
- includes icons or bit maps in one column of each record, usually the leftmost
- column. In this situation, specify the column that contains the icons or bit
- maps so that in-use emphasis can be applied to them. This column can be set
- by using the pFieldInfoObject field of the CNRINFO data structure.
-
- o Target emphasis
-
- Target emphasis is used during direct manipulation. When a user drags one
- container item over another, the item beneath the dragged item displays
- target emphasis. Two forms of target emphasis (visible feedback) are
- available: a black line and a black border. These forms of emphasis indicate
- the target, where the container item will be dropped if the user releases the
- drag button. The CA_ORDEREDTARGETEMPH and CA_MIXEDTARGETEMPH attributes of
- the CNRINFO data structure's flWindowAttr field determine the form of
- emphasis applied for the text, name, and details views, as follows:
-
- - If the CA_ORDEREDTARGETEMPH attribute is set:
-
- o The CN_DRAGAFTER notification code is sent when a container item is
- being dragged.
-
- o A black line is drawn between container items to show the current
- target position.
-
- - If the CA_MIXEDTARGETEMPH attribute is set:
-
- o The CN_DRAGAFTER and CN_DRAGOVER notification codes are sent when a
- container item is being dragged. The notification code sent depends on
- the position of the pointer relative to the item it is positioned over.
-
- o A black line is drawn if the pointer is positioned such that the item
- being dragged will be inserted between two target items.
-
- o A black border is drawn around either the entire target item for the
- text and details views or the icon or bit map for the name view if the
- pointer is positioned such that the item being dragged will be dropped
- on the target item.
-
- - If the CA_ORDEREDTARGETEMPH and CA_MIXEDTARGETEMPH attributes are not set:
-
- o The CN_DRAGOVER notification code is sent when a container item is
- being dragged.
-
- o A black border is drawn around the entire target item for the text and
- details views, and around the icon or bit map only for the name view.
-
- For the icon and tree view, the CA_ORDEREDTARGETEMPH and CA_MIXEDTARGETEMPH
- attributes are ignored, so target emphasis is applied as follows:
-
- - The CN_DRAGOVER notification code is sent when a container item is
- dragged.
-
- - A black border is drawn around the target, as follows:
-
- o For the icon view, if the target is another container item, a black
- border is drawn around the icon or bit map that represents the
- container item, but not around the text string beneath it. If the
- target is white space, a black border is drawn around the outer edge of
- the entire work area.
-
- o For the tree icon and tree name views, a black border is drawn around
- the icon or bit map that represents the container item, but not around
- the text string to the right of it.
-
- o For the tree text view, a black border is drawn around the entire
- target item.
-
-
- ΓòÉΓòÉΓòÉ 18.3.5. Using Direct Manipulation ΓòÉΓòÉΓòÉ
-
- Direct manipulation is a protocol that enables the user to drag a container
- item within its current window or from one window to another. The user can
- drop the container item either on white space in a window or on another item.
-
- Direct manipulation can be performed with all views of the container control.
- An API is provided so that the application is notified if an item is dropped on
- another item in the container and if an item is dragged from the container.
-
- The user can drag any container item, whether or not it is selected. If the
- user presses the drag button when the pointer is over a selected container
- item, the application drags all selected items. See Selection Techniques for
- information about the selection techniques.
-
- If the user presses the drag button when the pointer is over a container item
- that is not selected, the application drags only the item that the pointer is
- over.
-
- The container control fully supports direct manipulation. Refer to the SAA CUA
- Guide to User Interface Design for more information about the effects of direct
- manipulation.
-
-
- ΓòÉΓòÉΓòÉ 18.3.6. Specifying Space between Container Items ΓòÉΓòÉΓòÉ
-
- You can specify the amount of vertical space, in pels, to allow between
- container items by using the cyLineSpacing field of the CNRINFO data structure.
- If you do not specify how much vertical space can be used, the container
- control sets the space between the items using a default value. For the tree
- view, you can specify the horizontal distance between the levels by using the
- cxTreeIndent field of the CNRINFO data structure. If this value is less than
- 0, a default is used.
-
-
- ΓòÉΓòÉΓòÉ 18.4. Enhancing Container Control Performance ΓòÉΓòÉΓòÉ
-
- The following offers information about fine-tuning a container to enhance its
- performance and effectiveness:
-
- o Positioning container items
- o Specifying deltas for large amounts of data
- o Direct editing of text in a container
- o Specifying container titles
- o Specifying fonts and colors
- o Drawing container items and painting backgrounds
- o Filtering container items
- o Optimizing container memory usage
- o Sharing records among multiple containers.
-
-
- ΓòÉΓòÉΓòÉ 18.4.1. Positioning Container Items ΓòÉΓòÉΓòÉ
-
- Container items are positioned in the icon view according to workspace
- coordinates.
-
- The workspace is a two-dimensional Cartesian coordinate system. The user can
- see a portion of the workspace in the work area, which is the scrollable
- viewing area of the container that is defined by the size of the container
- window. The work area is logically scrollable within the workspace.
-
- The following figure shows the x- and y-axes of the workspace with a container
- window and its work area superimposed. (This figure is not drawn to scale.)
-
-
- ΓòÉΓòÉΓòÉ 18.4.1.1. Scrollable Workspace Areas ΓòÉΓòÉΓòÉ
-
- The following figure shows the scrollable area of the workspace, and thus the
- container.
-
- Workspace X- and Y-Axes
-
- This area is indicated by the solid black line that runs even with:
-
- o The top and bottom edges, respectively, of the topmost and bottommost
- container items
-
- o The left and right edges, respectively, of the leftmost and rightmost
- container items.
-
- The scrollable workspace area, then, is defined by the minimum and maximum x-
- and y-coordinates of the items in the container. That is, the work area of the
- container window can be scrolled only within the workspace and only as far as
- is necessary to see the topmost, bottommost, leftmost, and rightmost container
- items.
-
- The following figure further illustrates a bounded workspace. In this example,
- the topmost and bottommost container items limit the workspace.
-
- In the following figure, the work area has been scrolled so that all elements
- are not within the work area. The work area could be scrolled to the left so
- that it would include the leftmost element, or scrolled down and to the right
- to include the rightmost element, but it could not be scrolled any farther in
- either direction.
-
-
- ΓòÉΓòÉΓòÉ 18.4.1.2. Workspace and Work Area Origins ΓòÉΓòÉΓòÉ
-
- When the container is created, the work area and workspace share the same
- origin, (0,0), as represented in the previous figure. If the application
- requires that the work area and the workspace have different origins, the
- application can use the ptlOrigin field of the CNRINFO data structure and the
- CM_SETCNRINFO message to set the origin of the work area. The application
- could use the CM_QUERYCNRINFO and CM_SETCNRINFO messages to obtain the origin
- when the user ends the application, and reset it when the user restarts the
- application.
-
- Container items are located in reference to the workspace origin. There is a
- visual shift as the work area is scrolled; but because the work area moves over
- a fixed workspace, the coordinates of the container items do not change.
-
- Workspace Bounds
-
-
- ΓòÉΓòÉΓòÉ 18.4.2. Specifying Deltas for Large Amounts of Data ΓòÉΓòÉΓòÉ
-
- The container control can accommodate large amounts of data with an
- application-defined delta. The delta is an application-defined threshold, or
- number of container items, from either end of the list. The application is
- responsible for specifying the delta value in the CNRINFO data structure's
- cDelta field. It also is responsible for setting the delta value with the
- CMA_DELTA attribute of the CM_SETCNRINFO message's ulCnrInfoFl parameter. Refer
- to the OS/2 2.0 Programming Reference for description of CM_SETCNRINFO message.
-
- The container control monitors its place in the list of container items when
- the user is scrolling through it. When the user scrolls to the delta from
- either end of the list, the container control sends a CN_QUERYDELTA
- notification code to the application as a request for more container items in
- the list.
-
- The application is responsible for managing the records in the container. When
- the application receives the CN_QUERYDELTA notification code, the application
- is responsible for removing and inserting container records by using the
- CM_REMOVERECORD message and the CM_INSERTRECORD message respectively.
-
- Note:
-
- The delta concept is intended for applications with large amounts of data, or
- several thousand records. Applications with smaller amounts of data are not
- required to use the delta function. The default delta value is 0.
-
- The delta function is not available in the icon view because it is intended for
- data displayed in a linear format.
-
-
- ΓòÉΓòÉΓòÉ 18.4.3. Direct Editing of Text in a Container ΓòÉΓòÉΓòÉ
-
- Direct editing of text is supported for any text field in a container,
- including the container title, column headings, and container items. If a text
- field, such as the text field beneath an icon in the icon view, has no text and
- is not read-only, a user can place text in that field by editing the field
- directly. The font specified for the container by the application is used for
- the edited text.
-
- Direct editing is supported only for text data. Therefore, if the data type in
- the details view is other than CFA_STRING, a user cannot edit it. CFA_STRING
- is an attribute of the FIELDINFO data structure's flData field.
-
- You can prevent a user from editing any of the text in a container window by
- setting the CCS_READONLY style bit when a container is created. If you do not
- set this style bit, the user can edit any of the text in a container window
- unless you set the following read-only attributes: CA_TITLEREADONLY,
- CRA_RECORDREADONLY, CFA_FIREADONLY, and CFA_FITITLEREADONLY. If a read-only
- attribute is set, a user's attempts to edit container text directly are
- ignored. See the description of the CCS_READONLY style bit in the OS/2 2.0
- Programming Reference for more information about these attributes.
-
- A user can edit container text directly by doing either of the following:
-
- o Moving the pointer to an editable text field, holding down the Alt key, and
- clicking the select button
- o Sending a CM_OPENEDIT message to the container control.
-
- The application can assign a key or menu choice to this message so that the
- keyboard can be used to edit container text directly.
-
- The container control responds by using the WM_CONTROL message to send the
- CN_BEGINEDIT notification code to the application. A window that contains a
- multiple-line entry (MLE) field opens to show that container text can be edited
- directly.
-
- The editing actions supported by MLEs, such as Cut, Copy, and Paste, are also
- supported by the container control. These actions can be performed using
- system-defined shortcut keys. The actions and shortcut keys are defined in the
- SAA CUA Advanced Interface Design Reference.
-
- If the user enters a text string that is longer than the text field, the text
- string scrolls. Also, if multiple lines of text are wanted, a user can press
- the Enter key and type on the following line whenever another line is needed.
-
- A user can end the direct editing of container text and save the changes by
- doing either of the following:
-
- o Moving the pointer outside the MLE and pressing the select button
- o Sending a CM_CLOSEEDIT message to the container control.
-
- The application can assign a key or menu choice to this message so that the
- keyboard can be used to end the direct editing of container text.
-
- The container responds by sending the WM_CONTROL message to the application
- again, but this time with the CN_REALLOCPSZ notification code. The application
- can allocate more memory on receipt of the CN_REALLOCPSZ notification code, if
- necessary. If the application returns TRUE, the container control copies the
- new text to the application's text string. If the application returns FALSE,
- the text change in the MLE is disregarded. The container then sends the
- WM_CONTROL message to the application again, this time with the CN_ENDEDIT
- notification code. The MLE field is removed from the screen, leaving only the
- text string.
-
- A user can end the direct editing of container text without saving any changes
- to the text in numerous ways, including the following:
-
- o Pressing the Esc key
- o Dragging the container item that is being edited
- o Pressing the Alt key and the select button before the direct editing of
- container text has ended
- o Scrolling the container window.
-
- The CN_ENDEDIT notification code is sent to the application in each of these
- cases.
-
-
- ΓòÉΓòÉΓòÉ 18.4.4. Specifying Container Titles ΓòÉΓòÉΓòÉ
-
- The container control can have a non-scrollable title that consists of one or
- more lines of text. The container control does not limit the number of lines
- or the number of characters in each line. If specified, this title is the
- first line or lines of the container control. The text of the title is
- determined by the application and can be used to identify the container or to
- contain status information. The following figure shows an example of a
- container title.
-
- Non-Flowed Text View with Container Title
-
- The CA_CONTAINERTITLE attribute must be set to include a title in a container
- window. The default is no container title.
-
- Split Details View with Container Title
-
- If you do not want the user to be able to edit the container title directly,
- you can set the CA_TITLEREADONLY attribute. The default is that the container
- title can be edited. See Direct Editing of Text in a Container for more
- information about editing container text directly.
-
- The CA_TITLESEPARATOR attribute must be set in order to include a separator
- line in a container window. The default is no separator line.
-
- The container titles in both figures are centered. This is the default.
- However, the CA_TITLECENTER, CA_TITLELEFT, or CA_TITLERIGHT attribute can be
- used to specify whether a container title is to be centered, left-justified, or
- right-justified, respectively.
-
- All the container attributes described here are attributes of the CNRINFO data
- structure's flWindowAttr field.
-
-
- ΓòÉΓòÉΓòÉ 18.4.5. Specifying Fonts and Colors ΓòÉΓòÉΓòÉ
-
- A different font can be specified for each view. The same font is used for the
- text within each view. Text color can be configured from the system control
- panel. The application can override the system-defined font and colors by
- using the WinSetPresParam function.
-
- The font and color can be changed for the text in all views. However, font and
- color cannot be changed for text in individual columns in the details view.
- Therefore, all text in the details view, including the container title,
- columns, and column headings, has the same font and color.
-
-
- ΓòÉΓòÉΓòÉ 18.4.6. Drawing Container Items and Painting Backgrounds ΓòÉΓòÉΓòÉ
-
- The container control enables your application to paint the container's
- background, draw the container items, or both. If the CA_OWNERPAINTBACKGROUND
- attribute is set, the container control sends the CM_PAINTBACKGROUND message to
- itself. Your application can control background painting by subclassing the
- container control and intercepting the CM_PAINTBACKGROUND message.
- CA_OWNERPAINTBACKGROUND is an attribute of the CNRINFO data structure's
- flWindowAttr field.
-
- To support ownerdraw, the drawing of container items by the application, the
- container control provides the CA_OWNERDRAW attribute of the CNRINFO data
- structure's flWindowAttr field. If this attribute is set and the application
- processes the WM_DRAWITEM window message, the application is responsible for
- drawing each container item, including the types of emphasis.
-
- In addition, the container control supports ownerdraw for each column in the
- details view. This support is indicated by the CFA_OWNER attribute, which is
- specified in the FIELDINFO data structure's flData field.
-
- If the CA_OWNERDRAW attribute or CFA_OWNER attribute is set, the container
- control sends the application a WM_DRAWITEM message with a pointer to an
- OWNERITEM data structure as the owneritem parameter. Refer to the OS/2 2.0
- Programming Reference for a description of the OWNERITEM data structure fields
- as they apply to the container control.
-
-
- ΓòÉΓòÉΓòÉ 18.4.7. Filtering Container Items ΓòÉΓòÉΓòÉ
-
- If the CRA_FILTERED attribute is set for a container item, that item is not
- displayed. Therefore, filtering can be used to hide container items.
- CRA_FILTERED is an attribute of the RECORDCORE data structure's flRecordAttr
- field.
-
-
- ΓòÉΓòÉΓòÉ 18.4.8. Optimizing Container Memory Usage ΓòÉΓòÉΓòÉ
-
- The container control provides an option to enable you to develop applications
- that minimize the amount of memory used for each container record. This is
- done by specifying the CCS_MINIRECORDCORE style bit when the container is
- created, which causes a smaller version of the RECORDCORE data structure,
- MINIRECORDCORE, to be used. The following table shows the differences between
- these two data structures.
-
- Differences between RECORDCORE and MINIRECORDCORE
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéRECORDCORE ΓöéMINIRECORDCORE Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéUp to eight image handles can ΓöéOnly one image handle can be Γöé
- Γöébe specified for each record. Γöéspecified for each record. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- Γöé ΓöéNote: This image must be an Γöé
- Γöé Γöéicon. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéUp to four text strings can beΓöéOnly one text string can be Γöé
- Γöéspecified for each record. Γöéspecified for each record. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 18.4.8.1. Allocating Memory for Container Records When Using MINIRECORDCORE ΓòÉΓòÉΓòÉ
-
- The sample code in the following figure shows how to allocate memory for one
- container record when the MINIRECORDCORE data structure is used. A pointer to
- the MINIRECORDCORE structure is returned.
-
-
- Sample Code for Allocating Memory for Smaller Container Records
-
- HWND hwndCnr; /* Container window handle */
- PRECORDCORE pRecord; /* Pointer to RECORDCORE structure */
- ULONG nRecords = 1; /* 1 record to be allocated */
-
- pRecord =
- (PMINIRECORDCORE)WinSendMsg(
- hwndCnr, /* Container window handle */
- CM_ALLOCRECORD, /* Message for allocating the record */
- NULL, /* No additional memory */
- (MPARAM)nRecords); /* Number of records to be allocated */
-
-
- ΓòÉΓòÉΓòÉ 18.4.8.2. Sharing Records Among Multiple Containers ΓòÉΓòÉΓòÉ
-
- The container control enables the application to share records that are
- allocated among multiple containers in the same process. That is, records can
- be allocated once and then inserted into many containers in the same process.
- Only one copy of each record is in memory, but the container provides the
- flexibility for the records to appear as though they are independent of one
- another.
-
- When a record is inserted into the container, the flRecordAttr and ptlIcon
- fields of the record structure are saved internally. The values in these
- fields cause the record attributes for all views and the icon position for the
- icon view to be associated with the specific container into which the record is
- inserted. If the same record is inserted into multiple containers, the
- attributes and icon location of each record are maintained separately. The
- application uses the CM_QUERYRECORDINFO message to retrieve the current values
- of these two fields for a particular record in a specific container.
-
-
- ΓòÉΓòÉΓòÉ 18.4.8.3. Invalidating Records Shared by Multiple Containers ΓòÉΓòÉΓòÉ
-
- When a record is invalidated by an application, the flRecordAttr and ptlIcon
- fields are saved internally, just as when a record is inserted. Therefore, use
- the CM_QUERYRECORDINFO message to acquire the current data for each record that
- is being invalidated. After querying the current data, you can change any of
- this data before invalidating its record.
-
-
- ΓòÉΓòÉΓòÉ 18.4.8.4. Freeing Records Shared by Multiple Containers ΓòÉΓòÉΓòÉ
-
- When an application attempts to free a record in an open container, the record
- is freed only if it is not being used in any other open container. The methods
- of freeing records in an open container are to use the CM_FREERECORD message,
- or use the CM_REMOVERECORD message and specify the CMA_FREE attribute.
-
-
- ΓòÉΓòÉΓòÉ 18.5. Summary ΓòÉΓòÉΓòÉ
-
- Following are tables that describe the OS/2 container control structures,
- notification codes, notification messages, and window messages:
-
- Container Control Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCDATE ΓöéContains date information for a dataΓöé
- Γöé Γöéelement in the details view of the Γöé
- Γöé Γöécontainer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCNRDRAGINFO ΓöéContains information about a direct Γöé
- Γöé Γöémanipulation event occurring over Γöé
- Γöé Γöéthe container. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCNRDRAGINIT ΓöéContains information about a direct Γöé
- Γöé Γöémanipulation event that was Γöé
- Γöé Γöéinitiated in a container. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCNRDRAWITEMINFO ΓöéContains information about the item Γöé
- Γöé Γöébeing drawn in the container. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCNREDITDATA ΓöéContains information about the Γöé
- Γöé Γöédirect editing of container text. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCNRINFO ΓöéContains information about the Γöé
- Γöé Γöécontainer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCTIME ΓöéContains time information for a dataΓöé
- Γöé Γöéelement in the details view of the Γöé
- Γöé Γöécontainer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFIELDINFO ΓöéContains information about column Γöé
- Γöé Γöédata in the details view of the Γöé
- Γöé Γöécontainer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFIELDINFOINSERT ΓöéContains information about the Γöé
- Γöé ΓöéFIELDINFO structure or structures Γöé
- Γöé Γöéthat are being inserted into the Γöé
- Γöé Γöécontainer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéMINIRECORDCORE ΓöéContains information for container Γöé
- Γöé Γöérecords that are smaller than those Γöé
- Γöé Γöédefined by the RECORDCORE structure.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéNOTIFYDELTA ΓöéContains information about the Γöé
- Γöé Γöéplacement of delta information for Γöé
- Γöé Γöéthe container. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéNOTIFYRECORDEMPHASIS ΓöéContains information about the Γöé
- Γöé Γöéemphasis applied to a container Γöé
- Γöé Γöérecord. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéNOTIFYRECORDENTER ΓöéContains information about the inputΓöé
- Γöé Γöédevice being used with the Γöé
- Γöé Γöécontainer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéNOTIFYSCROLL ΓöéContains information about scrollingΓöé
- Γöé Γöéthe container window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéOWNERBACKGROUND ΓöéContains information about painting Γöé
- Γöé Γöéthe container window's background. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéQUERYRECFROMRECT ΓöéContains information about a Γöé
- Γöé Γöécontainer record that is bounded by Γöé
- Γöé Γöéa specified rectangle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéQUERYRECORDRECT ΓöéContains information about the Γöé
- Γöé Γöérectangle that bounds a specified Γöé
- Γöé Γöécontainer record. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRECORDCORE ΓöéContains information for container Γöé
- Γöé Γöérecords. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéRECORDINSERT ΓöéContains information about the Γöé
- Γöé ΓöéRECORDCORE structure or structures Γöé
- Γöé Γöéthat are being inserted into the Γöé
- Γöé Γöécontainer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSEARCHSTRING ΓöéContains information about the Γöé
- Γöé Γöécontainer text string that is the Γöé
- Γöé Γöéobject of the search. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTREEITEMDESC ΓöéContains icons and bit maps used to Γöé
- Γöé Γöérepresent the state of an expanded Γöé
- Γöé Γöéor collapsed parent item in the treeΓöé
- Γöé Γöéname view. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Container Control Notification Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_BEGINEDIT ΓöéSent when container text is about toΓöé
- Γöé Γöébe edited. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_COLLAPSETREE ΓöéSent when a parent item is collapsedΓöé
- Γöé Γöéin the tree view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_CONTEXTMENU ΓöéSent when the container receives a Γöé
- Γöé ΓöéWM_CONTEXTMENU message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_DRAGAFTER ΓöéSent when the container receives a Γöé
- Γöé ΓöéDM_DRAGOVER message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_DRAGLEAVE ΓöéSent when the container receives a Γöé
- Γöé ΓöéDM_DRAGLEAVE message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_DRAGOVER ΓöéSent when the container receives a Γöé
- Γöé ΓöéDM_DRAGOVER message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_DROP ΓöéSent when the container receives a Γöé
- Γöé ΓöéDM_DROP message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_DROPHELP ΓöéSent when the container receives a Γöé
- Γöé ΓöéDM_DROPHELP message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_EMPHASIS ΓöéSent when the attributes of a Γöé
- Γöé Γöécontainer record change. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_ENDEDIT ΓöéSent when direct editing of the Γöé
- Γöé Γöécontainer text ends. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_ENTER ΓöéSent either when the Enter key is Γöé
- Γöé Γöépressed while the container window Γöé
- Γöé Γöéhas the focus, or when the select Γöé
- Γöé Γöébutton is double-clicked while the Γöé
- Γöé Γöépointer is over the container Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_EXPANDTREE ΓöéSent when the container expands a Γöé
- Γöé Γöéparent item in the tree view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_HELP ΓöéSent when the container receives a Γöé
- Γöé ΓöéWM_HELP message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_INITDRAG ΓöéSent when the drag button is pressedΓöé
- Γöé Γöéand the pointer is moved while over Γöé
- Γöé Γöéthe container control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_KILLFOCUS ΓöéSent when the container is losing Γöé
- Γöé Γöéthe focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_QUERYDELTA ΓöéSent to query for more data when theΓöé
- Γöé Γöéuser scrolls to a preset delta Γöé
- Γöé Γöévalue. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_REALLOCPSZ ΓöéSent when container text is edited Γöé
- Γöé Γöé(before CN_ENDEDIT is sent). Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_SCROLL ΓöéSent when the container window Γöé
- Γöé Γöéscrolls. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCN_SETFOCUS ΓöéSent when the container receives theΓöé
- Γöé Γöéfocus. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Container Control Notification Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when the container control Γöé
- Γöé Γöéhas a significant event to notify toΓöé
- Γöé Γöéits owner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to the container control's Γöé
- Γöé Γöéowner window when the pointing Γöé
- Γöé Γöédevice pointer moves over the Γöé
- Γöé Γöécontainer window, allowing the ownerΓöé
- Γöé Γöéto set the pointing device pointer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DRAWITEM ΓöéSent to the owner of the container Γöé
- Γöé Γöécontrol each time an item is to be Γöé
- Γöé Γöédrawn. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Container Control Window Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_ALLOCDETAILFIELDINFO ΓöéAllocates memory for one or Γöé
- Γöé Γöémore FIELDINFO structures. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_ALLOCRECORD ΓöéAllocates memory for one or Γöé
- Γöé Γöémore RECORDCORE structures. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_ARRANGE ΓöéArranges the container recordsΓöé
- Γöé Γöéin the icon view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_CLOSEEDIT ΓöéCloses the window containing Γöé
- Γöé Γöéthe multiple-line entry (MLE) Γöé
- Γöé Γöéfield used to edit container Γöé
- Γöé Γöétext directly. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_COLLAPSETREE ΓöéCauses one parent item in the Γöé
- Γöé Γöétree view to be collapsed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_ERASERECORD ΓöéErases the source record from Γöé
- Γöé Γöéthe current view when a move Γöé
- Γöé Γöéoccurs as a result of direct Γöé
- Γöé Γöémanipulation. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_EXPANDTREE ΓöéCauses one parent item in the Γöé
- Γöé Γöétree view to be expanded. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_FILTER ΓöéFilters the contents of a Γöé
- Γöé Γöécontainer so that a subset of Γöé
- Γöé Γöéthe container items can be Γöé
- Γöé Γöéviewed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_FREEDETAILFIELDINFO ΓöéFrees the memory associated Γöé
- Γöé Γöéwith one or more FIELDINFO Γöé
- Γöé Γöéstructures. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_FREERECORD ΓöéFrees the memory associated Γöé
- Γöé Γöéwith one or more RECORDCORE Γöé
- Γöé Γöéstructures. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_HORZSCROLLSPLITWINDOW ΓöéScrolls a split window in the Γöé
- Γöé Γöésplit details view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_INSERTDETAILFIELDINFO ΓöéInserts one or more FIELDINFO Γöé
- Γöé Γöéstructures into a container Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_INSERTRECORD ΓöéInserts one or more RECORDCOREΓöé
- Γöé Γöéstructures into a container Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_INVALIDATEDETAILFIELDINFO ΓöéNotifies the container controlΓöé
- Γöé Γöéthat any or all FIELDINFO Γöé
- Γöé Γöéstructures are not valid and Γöé
- Γöé Γöéthat the view must be Γöé
- Γöé Γöérefreshed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_INVALIDATERECORD ΓöéNotifies the container controlΓöé
- Γöé Γöéthat any or all RECORDCORE Γöé
- Γöé Γöéstructures are not valid and Γöé
- Γöé Γöémust be refreshed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_OPENEDIT ΓöéOpens the window that containsΓöé
- Γöé Γöéthe multiple-line entry (MLE) Γöé
- Γöé Γöéfield used to edit container Γöé
- Γöé Γöétext directly. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_PAINTBACKGROUND ΓöéInforms an application when a Γöé
- Γöé Γöécontainer's background is Γöé
- Γöé Γöépainted if the Γöé
- Γöé ΓöéCA_OWNERPAINTBACKGROUND Γöé
- Γöé Γöéattribute of the CNRINFO data Γöé
- Γöé Γöéstructure is specified. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYCNRINFO ΓöéReturns the container's Γöé
- Γöé ΓöéCNRINFO structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYDETAILFIELDINFO ΓöéReturns a pointer to the Γöé
- Γöé Γöérequested FIELDINFO structure.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYDRAGIMAGE ΓöéReturns a handle to the icon Γöé
- Γöé Γöéor bit map for the record in Γöé
- Γöé Γöéthe current view. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYRECORD ΓöéReturns a pointer to the Γöé
- Γöé Γöérequested RECORDCORE Γöé
- Γöé Γöéstructure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYRECORDEMPHASIS ΓöéQueries for a container recordΓöé
- Γöé Γöéwith the specified emphasis Γöé
- Γöé Γöéattributes. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYRECORDFROMRECT ΓöéQueries for a container recordΓöé
- Γöé Γöéthat is bounded by the Γöé
- Γöé Γöéspecified rectangle. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYRECORDINFO ΓöéUpdates the specified records Γöé
- Γöé Γöéwith the current information Γöé
- Γöé Γöéfor the container. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYRECORDRECT ΓöéReturns the rectangle of the Γöé
- Γöé Γöéspecified container record, Γöé
- Γöé Γöérelative to the container Γöé
- Γöé Γöéwindow origin. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_QUERYVIEWPORTRECT ΓöéReturns a rectangle that Γöé
- Γöé Γöécontains the coordinates of Γöé
- Γöé Γöéthe container's work area. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_REMOVEDETAILFIELDINFO ΓöéRemoves one, multiple, or all Γöé
- Γöé ΓöéFIELDINFO structures from the Γöé
- Γöé Γöécontainer control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_REMOVERECORD ΓöéRemoves one, multiple, or all Γöé
- Γöé ΓöéRECORDCORE structures from theΓöé
- Γöé Γöécontainer control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_SCROLLWINDOW ΓöéScrolls an entire container Γöé
- Γöé Γöéwindow. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_SEARCHSTRING ΓöéReturns the pointer to a Γöé
- Γöé Γöécontainer record whose text Γöé
- Γöé Γöématches the string. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_SETCNRINFO ΓöéSets or changes the data for Γöé
- Γöé Γöéthe container control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_SETRECORDEMPHASIS ΓöéSets the emphasis attributes Γöé
- Γöé Γöéof the specified container Γöé
- Γöé Γöérecord. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéCM_SORTRECORD ΓöéSorts the container records inΓöé
- Γöé Γöéthe container control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PRESPARAMCHANGED ΓöéSent when a presentation Γöé
- Γöé Γöéparameter is set or removed Γöé
- Γöé Γöédynamically from a window Γöé
- Γöé Γöéinstance. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 19. Notebook Controls ΓòÉΓòÉΓòÉ
-
- A notebook control (WC_NOTEBOOK window class) is a visual component that
- organizes information on individual pages so that a user can find and display
- that information quickly and easily. This chapter explains how to use notebook
- controls in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 19.1. About Notebook Controls ΓòÉΓòÉΓòÉ
-
- This notebook control component simulates a real notebook, but improves on it
- by overcoming a notebook's natural limitations. A user can select and display
- pages by using a pointing device or the keyboard.
-
- Notebook Example
-
- The notebook can be customized to meet varying application requirements, while
- providing a user interface component that can be used easily to develop
- products that conform to the Common User Access (CUA) user interface
- guidelines. The application can specify different colors, sizes, and
- orientations for its notebooks, but the underlying function of the control
- remains the same. For a complete description of CUA notebooks, refer to the
- SAA CUA Guide to User Interface Design and the SAA CUA Advanced Interface
- Design Reference.
-
-
- ΓòÉΓòÉΓòÉ 19.1.1. Notebook Creation ΓòÉΓòÉΓòÉ
-
- You create a notebook by using the WC_NOTEBOOK window class name in the
- ClassName parameter of the WinCreateWindow function. The following figure shows
- the creation of the notebook. The style set in the ulNotebookStyles variable
- (the BKS_* values) specifies that the notebook is to be created with a solid
- binding and the back pages intersecting at the bottom right corner, major tabs
- placed on the right edge, tab type square, tab text centered, and status text
- left-justified. These are the default settings and are given here only to show
- how notebook styles are set.
-
-
- Sample Code for Creating a Notebook
-
- HWND hwndNotebook; /* Notebook window handle */
- ULONG ulNotebookStyles; /* Notebook window styles */
- HMODULE hmod; /* Notebook DLL module handle */
-
- /**********************************************************************/
- /* Set the BKS_style flags to customize the notebook. */
- /**********************************************************************/
- ulNotebookStyles =
- BKS_SOLIDBIND | /* Use solid binding. */
- BKS_BACKPAGESBR | /* Set back pages to intersect at the */
- /* bottom right corner. */
- BKS_MAJORTABRIGHT | /* Position major tabs on right side. */
- BKS_SQUARETABS | /* Make the tabs square. */
- BKS_TABTEXTCENTER | /* Center tab text. */
- BKS_STATUSTEXTLEFT; /* Align status line text left. */
-
- /**********************************************************************/
- /* Create the notebook control window. */
- /**********************************************************************/
- hwndNotebook =
- WinCreateWindow(
- hwndParent, /* Parent window handle */
- WC_NOTEBOOK, /* Notebook window class */
- NULL, /* No window text */
- ulNotebookStyles, /* Notebook window styles */
-
- x, y, cx, xy /* Origin and size */
- hwndOwner, /* Owner window handle */
- HWND_TOP, /* Sibling window handle */
- ID_BOOK, /* Notebook window ID */
- NULL, /* No control data */
- NULL; /* No presentation parameters */
-
- /**********************************************************************/
- /* Make the notebook control visible. */
- /**********************************************************************/
- WinShowWindow(
- hwndNotebook, /* Notebook window handle */
- TRUE); /* Make the window visible. */
-
-
- ΓòÉΓòÉΓòÉ 19.1.2. Understanding the Default Notebook Style ΓòÉΓòÉΓòÉ
-
- As specified in the preceding sample code, the following figure shows how the
- default notebook control looks when it is created.
-
- Default Notebook Style
-
- The notebook control resembles a real notebook in its general appearance. For
- example, as the previous figure shows, the notebook has a binding that, along
- with recessed pages on the right and bottom edges, gives the notebook a
- three-dimensional appearance. The default binding is solid and is placed on
- the left side. This binding is used if no style bit is specified or if the
- BKS_SOLIDBIND style bit is specified.
-
- In the bottom right corner of the notebook in the previous figure are the page
- buttons. These buttons are for bringing one page of the notebook into view at a
- time. They are a standard component that is automatically provided with every
- notebook. However, the application can change the default width and height of
- the page buttons by using the BKM_SETDIMENSIONS message.
-
- Selecting the forward page button (the arrow pointing to the right) causes the
- next page to be displayed; while selecting the backward page button (the arrow
- pointing to the left) causes the previous page to be displayed. In the previous
- figure, the page buttons are displayed with unavailable-state emphasis because
- no pages have been inserted in the notebook yet. Therefore, in this example,
- selecting either page button would not bring a page into view.
-
- To the left of the page buttons in the default notebook style setting is the
- status line, which enables the application to provide information to the user
- about the page currently displayed. The notebook does not supply any default
- text for the status line. The application is responsible for associating a
- text string with the status line of each page on which a text string is to be
- displayed. The procedure for associating a text string with a status line is
- described in Inserting Notebook Pages. Text displayed in the status line is
- left-justified by default. This setting is specified by the BKS_STATUSTEXTLEFT
- style bit. See Notebook Control Styles for information about other style bits
- that can be set for the notebook.
-
- The page buttons always are located in the corner where the recessed edges of
- the notebook intersect. These recessed edges are called the back pages. The
- default notebook's back pages intersect in the bottom right corner, which means
- the recessed pages are on the bottom and right edges. This setting is specified
- by the BKS_BACKPAGESBR style bit.
-
- The back pages are important because their intersection determines where the
- major tabs can be placed, which in turn determines the placement of the binding
- and the minor tabs. Major and minor tabs are used to organize related pages
- into sections; minor tabs define subsections within major tab sections. The
- content of each section has a common theme, which is represented to the user by
- a tabbed divider, similar to a tabbed page in a notebook.
-
- In the figure, the BKS_MAJORTABRIGHT style bit specifies that major tabs, if
- used, are to be placed on the right side of the notebook. This is the default
- major tab placement when the back pages intersect at the bottom right corner of
- the notebook. The binding is located on the left, because it is always located
- on the opposite side of the notebook from the major tabs.
-
- The default notebook has no major tabs, even though the BKS_MAJORTABRIGHT style
- bit was specified, because major tab attributes, if desired, can be specified
- only at the time a page is inserted in the notebook. This is done by
- specifying the BKA_MAJOR attribute in the BKM_INSERTPAGE message.
-
- Similarly, minor tabs are specified using the BKA_MINOR attribute. Minor tabs
- always are placed perpendicular to the major tabs, based on the intersection of
- the back pages and the major tab placement. Only one major or minor tab
- attribute can be specified for each notebook page. Minor tabs are displayed
- only if the associated major tab page is selected or if the notebook has no
- major tab pages. The following figure is an example of a notebook for which
- both major and minor tab attributes were specified.
-
- Default Style and Placement of Major and Minor Tabs
-
- The default shape of the tabs used on notebook divider pages is square. This
- setting is specified by the BKS_SQUARETABS style bit. As with the page
- buttons, the application can change the default width and height of the major
- and minor tabs by using the BKM_SETDIMENSIONS message.
-
- A notebook tab can contain either text or a bit map. Text is placed on a tab
- by using the BKM_TABTEXTCENTER style bit. A bit map is placed on a tab by
- using the BKM_SETTABBITMAP message. A bit map cannot be positioned on a tab
- because the bit map stretches to fill the rectangular area of the tab;
- therefore, no style bit is used.
-
- The following paragraphs provide details about changing notebook style
- settings, along with additional information about the effect of the back pages
- intersection on notebook style.
-
-
- ΓòÉΓòÉΓòÉ 19.1.3. Notebook Control Styles ΓòÉΓòÉΓòÉ
-
- The notebook control provides style bits so that your application can specify
- or change the default style settings described in Understanding the Default
- Notebook Style. One style bit from each of the following groups can be
- specified:
-
- o Type of binding
-
- BKS_SOLIDBIND Solid (default).
- BKS_SPIRALBIND Spiral.
-
- o Intersection of back pages
-
- BKS_BACKPAGESBR Bottom right corner (default).
- BKS_BACKPAGESBL Bottom left corner.
- BKS_BACKPAGESTR Top right corner.
- BKS_BACKPAGESTL Top left corner.
-
- o Location of major tabs
-
- BKS_MAJORTABRIGHT Right edge (default).
- BKS_MAJORTABLEFT Left edge.
- BKS_MAJORTABTOP Top edge.
- BKS_MAJORTABBOTTOM Bottom edge.
-
- o Shape of tabs
-
- BKS_SQUARETABS Square (default).
- BKS_ROUNDEDTABS Rounded.
- BKS_POLYGONTABS Polygonal.
-
- o Alignment of text associated with tabs
-
- BKS_TABTEXTCENTER Centered (default).
- BKS_TABTEXTLEFT Left-justified.
- BKS_TABTEXTRIGHT Right-justified.
-
- o Alignment of status line text.
-
- BKS_STATUSTEXTLEFT Left-justified (default).
- BKS_STATUSTEXTRIGHT Right-justified.
- BKS_STATUSTEXTCENTER Centered.
-
- If you specify more than one style bit, you must use an OR operator (|) to
- combine them. See the OS/2 2.0 Programming Reference for definitions of the
- notebook style bits.
-
- Two styles are provided for the notebook binding: solid and spiral. The
- notebook is displayed with a solid binding by default, but the application can
- specify BKS_SPIRALBIND to display a spiral binding.
-
- The most important of the style bits are those that determine the corner at
- which the back pages intersect and those that indicate the side where the major
- tabs are to be placed. For example, if the application specifies the back
- pages intersection at the bottom right corner (BKS_BACKPAGESBR, the default),
- the major tabs can be placed on either the bottom edge (BKS_MAJORTABBOTTOM) or
- the right edge (BKS_MAJORTABRIGHT) of the notebook.
-
- In this situation, if the application specifies that major tabs are to be
- placed on the left or top edges of the notebook, the notebook control places
- them on the right edge anyway-the default placement for back pages intersecting
- at the bottom right corner.
-
- The placement of the minor tabs and binding depends entirely on the placement
- of the back pages and major tabs respectively. The binding always is located
- on the side of the notebook opposite the side where the major tabs are. The
- minor tabs always are located on the recessed page side that has no major tabs.
- The following table describes the available notebook window style settings.
-
- Notebook Window Style Settings
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéBack Pages ΓöéMajor Tabs ΓöéMinor Tabs ΓöéBinding Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBottom right (default)ΓöéBottom ΓöéRight ΓöéTop Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBottom right (default)ΓöéRight (default) ΓöéBottom ΓöéLeft Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBottom left ΓöéBottom (default) ΓöéLeft ΓöéTop Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBottom left ΓöéLeft ΓöéBottom ΓöéRight Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTop right ΓöéTop (default) ΓöéRight ΓöéBottom Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTop right ΓöéRight ΓöéTop ΓöéLeft Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTop left ΓöéTop ΓöéLeft ΓöéBottom Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéTop left ΓöéLeft (default) ΓöéTop ΓöéRight Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- The shape of the tabs can be square, rounded, or polygonal. The tab text can
- be drawn left-justified, right justified, or centered. Once set, these styles
- apply to the major and minor tabs for all the pages in the notebook. Text is
- associated with a tab page by using the BKM_SETTABTEXT message. Notebook tab
- text is centered by default or by specifying the BKS_TABTEXTCENTER style when
- creating the notebook window.
-
- The application can associate status line text with each inserted notebook
- page. The status text is drawn left-justified by default, but also can be
- drawn centered or right-justified. The same status text justification applies
- to all pages in the notebook. The location of the back pages intersection and
- the major tabs has no effect on the specification of the tab shape and status
- line position. These style bits can be set for the entire notebook.
-
- The following figure shows some sample code for setting the notebook style to
- spiral binding, back pages that intersect at the bottom left corner, major tabs
- on the bottom edge, rounded tabs, tab text left justified, and status line text
- centered.
-
-
- Sample Code for Changing the Notebook Style
-
- /**********************************************************************/
- /* Query for the existing notebook window style settings */
- /**********************************************************************/
- ulNotebookStyles = WinQueryWindowULong(
- hwndNotebook, /* Notebook window handle */
- QWL_STYLE ); /* Set notebook style */
-
- /**********************************************************************/
- /* Reset notebook window style flags, leaving window flags unchanged. */
- /**********************************************************************/
- ulNotebookStyles &= 0xFFFF0000;
-
- /**********************************************************************/
- /* Set up the new notebook window style flags */
- /**********************************************************************/
- ulNotebookStyles |=
- BKS_SPIRALBIND | /* Use spiral binding. */
- BKS_BACKPAGESBL | /* Set back pages to intersect at the */
- /* bottom left corner. */
- BKS_MAJORTABBOTTOM | /* Position major tabs on bottom edge. */
- BKS_ROUNDEDTABS | /* Make tabs rounded. */
- BKS_TABTEXTLEFT | /* Make tab text left justified. */
- BKS_STATUSTEXTCENTER; /* Center status text. */
-
- /**********************************************************************/
- /* Set the new notebook style. */
- /**********************************************************************/
- WinSetWindowULong(
- hwndNotebook, /* Notebook window handle */
- QWL_STYLE, /* Window style */
- ulNotebookStyles); /* Set notebook style. */
- /**********************************************************************/
- /* Invalidate to force a repaint. */
- /**********************************************************************/
- WinInvalidateRectl(
- hwndNotebook, /* Notebook window handle */
- NULL, /* Invalidate entire window, */
- TRUE); /* including children. */
-
- The following figure shows how the notebook appears when these style bits are
- set. This figure assumes that pages have been inserted in the notebook with
- major and minor tab attributes.
-
- Notebook with Style Settings Changed
-
-
- ΓòÉΓòÉΓòÉ 19.2. Working with Notebook Pages and Windows ΓòÉΓòÉΓòÉ
-
- The following sections tell you how to insert information in, create and
- associate windows for, and remove information from a notebook.
-
-
- ΓòÉΓòÉΓòÉ 19.2.1. Inserting Notebook Pages ΓòÉΓòÉΓòÉ
-
- After a notebook is created, pages can be inserted in the notebook by using the
- BKM_INSERTPAGE message. BKM_INSERTPAGE provides several attributes that can
- affect the inserted pages. When inserting pages into either a new notebook or
- an existing one, carefully consider how the user will expect those pages to be
- organized.
-
- The two attributes that have the most impact on how notebook pages are
- organized are BKA_MAJOR and BKA_MINOR, which specify major and minor tabs
- respectively. Major tab pages define the beginning of major sections in the
- notebook, while minor tab pages define the beginning of subsections within a
- major section. Major sections should begin with a page that has a BKA_MAJOR
- attribute. Within major sections, information can be organized into minor
- sections, each of which should begin with a page that has a BKA_MINOR
- attribute.
-
- For an existing notebook, the underlying hierarchy, if one exists, must be
- observed when inserting new pages, to provide efficient organization and
- navigation of the information in the notebook. For example, if the notebook
- has minor sections but no major sections, you could confuse the user if you
- inserted a page with a major tab attribute between related minor sections or at
- the end of the notebook.
-
- If you insert pages without specifying tab attributes, those pages become part
- of the section in which they are inserted. For example, if page 7 of your
- notebook has a minor tab, and you insert a new page 8 without specifying a tab
- attribute, page 8 becomes part of the section that begins with the minor tab on
- page 7.
-
- Since tab pages are not mandatory, the application can create a notebook that
- contains no major or minor tab pages. That style would be similar to that of a
- composition notebook.
-
- Another group of attributes that can affect the organization of pages being
- inserted into a notebook consists of BKA_LAST, BKA_FIRST, BKA_NEXT, and
- BKA_PREV. These attributes cause pages to be inserted at the end, at the
- beginning, after a specified page, and before a specified page of a notebook,
- respectively.
-
- Each page has an optional status line that can be used to display information
- for the user. To include this status line, the application must specify the
- BKA_STATUSTEXTON attribute when inserting the page. If the application inserts
- the page without specifying this attribute, the status line is not available
- for that page.
-
- To display text on the status line of the specified page, the application must
- use the BKM_SETSTATUSLINETEXT message to associate a text string with the page.
- A separate message must be sent for each page that is to display status line
- text. If the application does not send a BKM_SETSTATUSLINETEXT message for a
- page, no text is displayed in the status line of that page. The application
- can send this message to the notebook at any time to change the status line
- text. The status line can be cleared by setting the text to NULL.
-
- The following figure shows how to insert a page in a notebook, where the
- inserted page has a major tab attribute, the status line is available, and the
- page is inserted after the last page in the notebook. This sample code also
- shows how to associate a text string with the status line of the inserted page.
-
-
- Sample Code for Inserting a Notebook Page
-
- HWND hwndNotebook; /* Notebook window handle */
- ULONG ulPageId; /* Page identifier */
-
- /**********************************************************************/
- /* Insert a new page into a notebook */
- /**********************************************************************/
- ulPageId = (ULONG) WinSendMsg(
- hwndNotebook, /* Notebook window handle */
- BKM_INSERTPAGE, /* Message for inserting a page */
- (MPARAM)NULL, /* NULL for page ID */
-
- MPFROM2SHORT(
- BKA_MAJOR | /* Insert page with a major tab */
- /* attribute */
- BKA_STATUSTEXTON), /* Make status line text visible */
- BKA_LAST)); /* Insert this page at end of notebook */
-
- /**********************************************************************/
- /* Set the status line text. */
- /**********************************************************************/
- WinSendMsg(
- hwndNotebook, /* Notebook window handle */
- BKM_SETSTATUSLINETEXT, /* Message for setting status line */
- /* text */
- (MPARAM)ulPageId, /* ID of page to receive status line */
- /* text */
- MPFROMP("Page 1 of 2"); /* Text string to put on status line */
-
-
- ΓòÉΓòÉΓòÉ 19.2.2. Associating Application Page Windows with Notebook Pages ΓòÉΓòÉΓòÉ
-
- After a page is inserted into a notebook, you must facilitate the display of
- information for this page when it is brought to the top of the book. The
- notebook provides a top page area in which the application can display windows
- or dialogs for the topmost page. For each inserted page, the application must
- associate the handle of a window or dialog that is to be invalidated when the
- page is brought to the top of the book. The application can associate the same
- handle with different pages if desired.
-
- The application must send a BKM_SETPAGEWINDOWHWND message to the notebook order
- to associate the application page window or dialog handle with the notebook
- page being inserted. Once done, the notebook invalidates this window or dialog
- whenever the notebook page is brought to the top of the book. If no
- application page window handle is specified for an inserted page, no
- invalidation can be done by the notebook for that page. However, the
- application will receive a BKN_PAGESELECTED notification code when a new page
- is brought to the top of the notebook, at which time the application can
- invalidate the page.
-
-
- ΓòÉΓòÉΓòÉ 19.2.2.1. Associating a Window or Dialog with a Notebook Page ΓòÉΓòÉΓòÉ
-
- The following sections describe how to associate either a window handle or a
- dialog handle with an inserted page.
-
-
- ΓòÉΓòÉΓòÉ 19.2.2.1.1. Associating a Window with a Notebook Page ΓòÉΓòÉΓòÉ
-
-
- A calendar example is used to show how a page can be implemented as a window.
- The following figure shows a calendar that is divided into four years (major
- tabs). Within each year are months (minor tabs,) grouped into quarters. The
- top page has a window associated with it. The window paint processing displays
- the days for the currently selected month and year.
-
- Calendar Inserted into an Application Page Window
-
- The sample code in the following figure shows how the window procedure for the
- calendar is registered with the application. Also, it shows how the window is
- created and associated with the notebook page. The example ends by showing the
- window procedure for the associated window.
-
-
- SampleCodeforAssociatingaWindowwithaNotebookPage
-
- /********************************************************************/
- /* Registration of window procedure for calendar. */
- /********************************************************************/
- WinRegisterClass(hab, /* Register a page window class */
- "Calendar Page", /* Class name */
- PageWndProc, /* Window procedure */
- CS_SIZEREDRAW, /* Class style */
- 0); /* No extra bytes reserved */
-
- /********************************************************************/
- /* Create the window. */
- /********************************************************************/
- hwndPage = WinCreateWindow(hwndNotebook, /* Parent */
- "Calendar Page", /* Class */
- NULL, /* Title text */
- 0L, /* Style */
- 0, 0, 0, 0, /* Origin and size */
-
- hwndNotebook, /* Owner */
- HWND_TOP, /* Z-order */
- ID_WIN_CALENDAR_PAGE, /* ID */
- NULL, /* Control data */
- NULL); /* Pres params */
-
- /********************************************************************/
- /* Associate window with the inserted notebook page. */
- /********************************************************************/
- WinSendMsg(hwndBook,
- BKM_SETPAGEWINDOWHWND,
- MPFROMLONG(ulPageId),
- MPFROMHWND(hwndPage));
-
- /********************************************************************/
- /* Window procedure. */
- /********************************************************************/
- MRESULT EXPENTRY PageWndProc(HWND hwnd,USHORT msg,MPARAM mp1,
- MPARAM mp2)
- {
-
- HPS hps;
-
- switch (msg)
- {
-
- /******************************************************************/
- /* WM_CREATE is sent when the window is created. */
- /******************************************************************/
- case WM_CREATE :
- /****************************************************************/
- /* Place window initialization code here */
- /****************************************************************/
- break;
-
- case WM_PAINT :
- /****************************************************************/
- /* Draw the calendar for the current selected year and month */
- /****************************************************************/
- hps = WinBeginPaint(hwnd, NULL, NULL);
- drawMonthCalendar(hps, windowSize, currDate.year, currDate.month);
- WinEndPaint(hps);
- break;
-
-
- default:
- return (WinDefWindowProc(hwnd, msg, mp1, mp2));
- break;
- }
-
- return (FALSE);
- }
-
-
- ΓòÉΓòÉΓòÉ 19.2.2.1.2. Associating a Dialog with a Notebook Page ΓòÉΓòÉΓòÉ
-
-
- To illustrate the notebook implemented as a dialog, a properties notebook is
- used. In this example, the various objects whose properties can be changed or
- updated are displayed as major tabs. Included are sections that represent a
- folder, a printer, and a display. The printer object is currently selected.
- Within the printer object, the user can choose to "View" or "Update" the
- printer settings. The topmost page is a printer dialog from which the user can
- update the printer name, type, and device information.
-
- Dialog Used As an Application Page Window
-
- The sample code in the following figure shows how the printer dialog is created
- and associated with a notebook page. The example ends by showing the dialog
- procedure for the associated dialog.
-
-
- Sample Code for Associating a Dialog with a Notebook Page
-
- SEL sel = NULL;
- PDLGTEMPLATE pDlgt;
-
- /******************************************************************/
- /* Create a dialog. */
- /******************************************************************/
- DosGetResource(NULL,RT_DIALOG,ID_DLG_PRINTDRV,&sel);
- pDlgt = MAKEP(sel,0);
- hwndPage = WinCreateDlg(HWND_DESKTOP, /* Parent window handle */
- hwndBook, /* Owner window handle */
- fnwpPrint, /* Dialog procedure */
- /* address */
- pDlgt, /* Dialog structure */
- /* address */
- NULL); /* Application data */
-
- /********************************************************************/
- /* Associate dialog with the inserted notebook page. */
- /********************************************************************/
- WinSendMsg(hwndBook,
- BKM_SETPAGEWINDOWHWND,
- MPFROMLONG(ulPageId),
- MPFROMHWND(hwndPage));
-
- /********************************************************************/
- /* Dialog procedure */
- /********************************************************************/
- MRESULT EXPENTRY fnwpPrint(HWND hwndDlg, USHORT msg, MPARAM mp1,
- MPARAM mp2)
- {
- switch (msg)
- {
- case WM_INITDLG:
-
- /**************************************************************/
- /* Place dialog initialization code here. */
- /**************************************************************/
- break;
-
- case WM_COMMAND:
- return ((MRESULT) FALSE);
- break;
-
- default:
- return WinDefDlgProc (hwndDlg,msg,mp1,mp2);
- }
- return WinDefDlgProc (hwndDlg,msg,mp1,mp2);
- }
-
-
- ΓòÉΓòÉΓòÉ 19.2.3. Deleting Notebook Pages ΓòÉΓòÉΓòÉ
-
- The BKM_DELETEPAGE message is used to delete one or more pages from the
- notebook. The application can delete one page (BKA_SINGLE attribute), all
- pages within a major or minor tab section (BKA_TAB attribute), or all of the
- pages in the notebook (BKA_ALL attribute). The default, if no attributes are
- specified, is to delete no pages. The following example shows how the
- BKM_QUERYPAGEID message is used to get the ID of the top page and how the
- BKM_DELETEPAGE message is then used to delete that page.
-
-
- Sample Code for Deleting a Notebook Page
-
- /**********************************************************************/
- /* Set the range of pages to be deleted. */
- /**********************************************************************/
- usDeleteFlag = BKA_SINGLE /* Set attribute to delete a single */
- /* page. */
-
- /**********************************************************************/
- /* Get the ID of the notebook's top page. */
- /**********************************************************************/
- ulPageId = (ULONG) WinSendMsg(
- hwndNotebook, /* Notebook window handle */
- BKM_QUERYPAGEID, /* Message to query a page ID */
- NULL, /* NULL for page ID */
- (MPARAM)BKA_TOP); /* Get ID of top page */
-
- /**********************************************************************/
- /* Delete the notebook's top page. */
- /**********************************************************************/
- WinSendMsg(
- hwndNotebook, /* Notebook window handle */
- BKM_DELETEPAGE, /* Message to delete the page */
- MPFROMLONG(ulPageId), /* ID of page to be deleted */
- (MPARAM)usDeleteFlag); /* Range of pages to be deleted */
-
-
- ΓòÉΓòÉΓòÉ 19.3. Graphical User Interface Support ΓòÉΓòÉΓòÉ
-
- The following describes the support for graphical user interfaces (GUIs)
- provided by the notebook control. Except where noted, this support conforms to
- the guidelines in the SAA CUA Advanced Interface Design Reference.
-
- The GUI support provided by the notebook control consists of:
-
- o Notebook navigation techniques
- o Tailoring notebook colors.
-
-
- ΓòÉΓòÉΓòÉ 19.3.1. Notebook Navigation Techniques ΓòÉΓòÉΓòÉ
-
- The notebook control supports the use of a pointing device and the keyboard for
- displaying notebook pages and tabs, and for moving the selection cursor from
- the notebook tabs to the application window and the other way around. The
- following describes this support.
-
- Note: If more than one notebook window is open, displaying a page or tab in
- one notebook window has no effect on the pages or tabs displayed in any
- other notebook window.
-
-
- ΓòÉΓòÉΓòÉ 19.3.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
-
- A user can use a pointing device to display notebook pages or tabs by selecting
- the notebook components described in the following list. The SAA CUA Advanced
- Guide to User Interface Design defines mouse button 1 (the select button) to be
- used for selecting these components. This definition also applies to the same
- button on any other pointing device a user might have.
-
- o Selecting tabs using a pointing device
-
- A tab can be selected to bring a page that has a major or minor tab attribute
- to the top of the notebook. The selection cursor, a dotted outline, is drawn
- inside the tab's border to indicate the selected tab. In addition, the
- selected tab is given the same background color as the notebook page area.
- The color of the other tabs is specified in the BKM_SETNOTEBOOKCOLORS
- message. This helps the user distinguish the selected tab from the other
- tabs if different colors are used.
-
- Since all the tabs are mutually exclusive, only one of them can be selected
- at a time. Therefore, the only type of selection supported by the notebook
- control is single selection. This selection type conforms to the guidelines
- in the SAA CUA Advanced Interface Design Reference. Refer to that book for
- detailed information about single selection.
-
- If the user moves the pointing device to a place in the notebook page window
- that can accept a cursor, such as an entry field, check box, or radio button,
- and presses the select button, the selection cursor is removed from the tab
- it is on and is displayed in the notebook page window. the selection cursor
- never can be displayed both on a tab and in the notebook page window at the
- same time.
-
- o Selecting page buttons using a pointing device
-
- A forward or backward page button can be selected to display the next or
- previous page, respectively, one at a time. The arrow pointing to the right
- is the forward page button, and the arrow pointing to the left is the
- backward page button. When the selection of a page button brings a page that
- has a major or minor tab to the top of the notebook, the selection cursor is
- drawn inside that tab's border.
-
- o Selecting tab scroll buttons using a pointing device
-
- A user can decrease the size of a notebook window so that some of the
- available notebook tabs cannot be displayed. When this happens, the notebook
- control automatically draws tab scroll buttons at the corners of the notebook
- side or sides to notify the user that more tabs are available.
-
- Tab scroll buttons have another purpose: to give the user the means to scroll
- into view, one at a time, the tabs that are not displayed. The user does
- this by selecting a forward or backward tab scroll button, which causes the
- next tab to scroll into view, but does not change the location of the
- selection cursor. Once the tab is in view, the user can display that tab's
- page by selecting the tab.
-
- A maximum of four tab scroll buttons can be displayed: two for the major tab
- side and two for the minor tab side. The following figure is an example of a
- notebook with two of its tab scroll buttons displayed on the bottom left and
- bottom right corners of the minor tab side.
-
- Notebook with Tab Scroll Buttons Displayed
-
- In this example, only three minor tabs are displayed because the notebook is
- not wide enough to display more. Here, the user can display a previous minor
- tab by selecting the backward tab scroll button or a following minor by
- selecting the forward tab scroll button.
-
- When the first tab in the notebook is displayed, the backward tab scroll
- button is deactivated. Unavailable-state emphasis is applied to it to show
- that no more tabs can be scrolled into view by using the backward tab scroll
- button. Unavailable-state emphasis is applied to the forward tab scroll
- button if the last tab in the notebook is displayed.
-
-
- ΓòÉΓòÉΓòÉ 19.3.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
-
-
- A user can display notebook pages and tabs by using the following keyboard
- selection techniques.
-
- o Selecting tabs using mnemonic selection
-
- One keyboard method of displaying notebook pages is mnemonic selection.
- Mnemonics are underlined characters in the text of a tab that cause the tab's
- page to be selected. Coding a tilde (~) before a text character in the
- BKM_SETTABTEXT message causes that character to be underlined and activates
- it as a mnemonic-selection character.
-
- A user performs mnemonic selection by pressing a character key that
- corresponds to an underlined character. When this happens, the tab that
- contains the underlined character is selected, and that tab's page is brought
- to the top of the notebook.
-
- Note: Mnemonic selection is not case sensitive, so the user can type the
- underscored letter in either uppercase or lowercase.
-
- o Selecting tabs using the keyboard
-
- Another method of displaying a notebook page is to use the Enter key or the
- spacebar to select a page with a major or minor tab. The selection cursor,
- described earlier in this section, indicates that a tab can be selected by
- using either of these keys. When selected, the tab's associated page is
- brought to the top of the notebook, and the selected tab is given the same
- background color as the notebook page area. The other tabs have their color
- specified in the BKM_SETNOTEBOKKCOLORS message. This helps the user
- distinguish the selected tab from the other tabs if different colors are
- used.
-
- o Moving the selection cursor from tab to tab using the keyboard
-
- The selection cursor can be moved from tab to tab by using the Up, Down,
- Left, and Right Arrow keys. Pressing either the Up or Right Arrow key moves
- the selection cursor up on a vertical row of tabs or to the right on a
- horizontal row of tabs. Pressing the Down or Left Arrow keys moves the
- selection cursor down on a vertical row of tabs or to the left on a
- horizontal row of tabs. The page associated with the tab to which the
- selection cursor is moved is not brought to the top of the notebook unless
- the user selects the tab.
-
- If the selection cursor is located on a tab that is not in view, pressing one
- of these keys moves the selection cursor and positions the tab the selection
- cursor is moved to in the center of the row of tabs.
-
- o Moving the selection cursor between tab positions and controls
-
- Pressing the Tab key moves the selection cursor to the next tab position or
- control. Pressing the Shift+Tab key combination moves the selection cursor
- to the previous tab position or control. Pressing Ctrl+Tab moves the
- selection cursor to the next control.
-
- o Displaying tabs using the keyboard
-
- When the tab scroll buttons are displayed, the Up, Down, Left, and Right
- Arrow keys can be used to scroll tabs into view. For example, suppose the
- back pages intersect at the bottom right corner and the selection cursor is
- on the last visible tab on the right side of the notebook. In this case,
- pressing either the Down or Right Arrow keys causes the next tab to scroll
- into view and moves the selection cursor to that tab. The page associated
- with the tab the selection cursor is moved to is not brought up to the top of
- the notebook unless the user selects the tab.
-
- o Turning notebook pages using the keyboard
-
- The PgUp and PgDn keys can be used to display the previous or next page,
- respectively, one page at a time. This is similar to using a pointing
- device's select button to select the page buttons. The difference is that,
- unlike the select button, the PgUp and PgDn keys are typematic, which means
- the notebook's pages keep turning while these keys are pressed.
-
- If the application's primary window has the focus, the PgUp and PgDn keys
- must be used in combination with the Alt key. The application sends a
- message to the notebook to turn to the previous or next page. The current
- top page is used as the page from which to turn.
-
- If the notebook window has the focus, the PgUp and PgDn keys can be used
- alone or in combination with the Alt key.
-
- o Switching the focus between the notebook window and the application's primary
- window
-
- The Alt+Up Arrow key combination switches the focus from the application's
- primary window to the notebook window. The Alt+Down Arrow key combination
- does the opposite, switching the focus from the notebook window to the
- application's primary window.
-
- If the selection cursor is not in view when the focus switches from the
- notebook window to the application's primary window, it will not be in view
- if the focus switches back to the notebook window. For example, the
- selection cursor may be located on a tab that the user scrolls out of view by
- selecting a tab scroll button. If the user then presses the Alt+Down key
- combination, the selection cursor appears in the application's primary
- window. If the user then presses the Alt+Up Arrow key combination, the
- selection cursor returns to its last location-the tab that was not in view.
-
- o Automatic scrolling to the first or last notebook page
-
- The Home key can be used to bring the first page of the notebook to the top.
- Conversely, the End key brings the last page to the top of the notebook.
-
- These selection techniques conform to the descriptions in the SAA CUA Advanced
- Guide to User Interface Design. Refer to that book for a complete description
- of the keyboard interface model.
-
-
- ΓòÉΓòÉΓòÉ 19.3.2. Tailoring Notebook Colors ΓòÉΓòÉΓòÉ
-
- The application can change the color of any part of the notebook. The colors
- of some parts can be changed by specifying a presentation parameter attribute
- or attributes in the WinSetPresParam function. Other colors can be changed by
- specifying a notebook attribute or attributes in the BKM_SETNOTEBOOKCOLORS
- message. The following sections define which parts of the notebook can have
- their colors changed by each of these two methods.
-
-
- ΓòÉΓòÉΓòÉ 19.3.2.1. Changing Colors Using WinSetPresParam ΓòÉΓòÉΓòÉ
-
- The WinSetPresParam function is used to change the color of the notebook
- outline and window background, the selection cursor, and the status line text.
- The following list shows the mapping between the various notebook parts and
- their associated presentation parameter attributes.
-
- Notebook outline PP_BORDERCOLOR or PP_BORDERCOLORINDEX. This color is set
- initially to SYSCLR_WINDOWFRAME.
-
- Notebook window background PP_BACKGROUNDCOLOR or PP_BACKGROUNDCOLORINDEX. This
- color is set initially to SYSCLR_FIELDBACKGROUND.
-
- Selection cursor PP_HILITEBACKGROUNDCOLOR or PP_HILITEBACKGROUNDCOLORINDEX.
- This color is set initially to SYSCLR_HILITEBACKGROUND.
-
- Status line text PP_FOREGROUNDCOLOR or PP_FOREGROUNDCOLORINDEX. This color is
- initially set to SYSCLR_WINDOWTEXT.
-
- If a presentation parameter attribute is set, all parts of the notebook that
- are mapped to this color are changed. The following figure shows how to change
- the color of the notebook outline.
-
-
- Sample Code for Changing the Color of the Notebook Outline
-
- usColorLen = 4; /* Set number of bytes to be passed in */
- /* usColorIdx for color index table */
- /* value. */
- ulColorIdx = 3; /* Set color index table value to be */
- /* assigned. */
-
- /**********************************************************************/
- /* Set the notebook outline color. */
- /**********************************************************************/
- WinSetPresParam(
- hwndNotebook, /* Notebook window handle */
- PP_BORDERCOLOR, /* Border color attribute */
- usColorLen, /* Number of bytes in color index */
- /* table value */
- &ulColorIdx); /* Color index table value */
-
-
- ΓòÉΓòÉΓòÉ 19.3.2.2. Changing Colors Using BKM_SETNOTEBOOKCOLORS ΓòÉΓòÉΓòÉ
-
- The BKM_SETNOTEBOOKCOLORS message is used to change the color of the major tab
- background and text, the minor tab background and text, and the notebook page
- background. The following list shows the mapping between the various notebook
- parts and their associated notebook attributes.
-
- Major tab background BKA_BACKGROUNDMAJORCOLORINDEX or BKA_BACKGROUNDMAJORCOLOR.
- This color is set initially to SYSCLR_PAGEBACKGROUND. The currently
- selected major tab will have the same background color as the page
- background.
-
- Major tab text BKA_FOREGROUNDMAJORCOLORINDEX or BKA_FOREGROUNDMAJORCOLOR. This
- color is set initially to SYSCLR_WINDOWTEXT.
-
- Minor tab background BKA_BACKGROUNDMINORCOLORINDEX or BKA_BACKGROUNDMINORCOLOR.
- This color is set initially to SYSCLR_PAGEBACKGROUND. The currently
- selected minor tab will have the same background color as the page
- background.
-
- Minor tab text BKA_FOREGROUNDMINORCOLORINDEX or BKA_FOREGROUNDMINORCOLOR. This
- color is set initially to SYSCLR_WINDOWTEXT.
-
- Notebook page background BKA_BACKGROUNDPAGECOLORINDEX or
- BKA_BACKGROUNDPAGECOLOR. This color is set initially to
- SYSCLR_PAGEBACKGROUND.
-
- If a notebook attribute is set, all parts of the notebook that are mapped to
- this color are changed. The following figure shows how to change the color of
- the major tab background.
-
-
- Sample Code for Changing the Color of the Major Tab Background
-
- ulColorIdx = SYSCLR_WINDOW; /* Color index value */
- ulColorRegion = BKA_BACKGROUNDMAJORCOLORINDEX; /* Major tab background*/
-
- WinSendMsg(hwndBook,
- BKM_SETNOTEBOOKCOLORS,
- MPFROMLONG(ulColorIdx),
- MPFROMLONG(ulColorRegion));
-
-
- ΓòÉΓòÉΓòÉ 19.4. Enhancing Notebook Control Performance and Effectiveness ΓòÉΓòÉΓòÉ
-
- This section provides the following information to enable you to fine-tune a
- notebook control:
-
- o How to dynamically resize and scroll
- o How to paint and position tabs
-
-
- ΓòÉΓòÉΓòÉ 19.4.1. Dynamic Resizing and Scrolling ΓòÉΓòÉΓòÉ
-
- The notebook control supports dynamic resizing by recalculating the size of the
- notebook's parts when either the user or the application changes the size of
- any of those parts. A BKN_NEWPAGESIZE notification code is sent from the
- notebook to the application whenever the notebook's size changes.
-
- The notebook handles the sizing and positioning of each application page window
- if the BKA_AUTOPAGESIZE attribute is specified for the inserted notebook page.
- Otherwise, the application must handle this when it receives the
- BKN_NEWPAGESIZE notification code from the notebook.
-
- If the size of the notebook window is decreased so that the page window is not
- large enough to display all the information the page contains, the information
- in the page window is clipped. If scroll bars are desired to enable the
- clipped information to be scrolled into view, they must be provided by the
- application.
-
- Tab scroll buttons are automatically displayed if the size of the notebook is
- decreased so that all the major or minor tabs cannot be displayed. For
- example, a notebook has major tabs on the right side, but the height of the
- notebook does not allow all the tabs to be displayed. In this case, tab scroll
- buttons are displayed on the upper- and lower-right corners of the notebook.
-
-
- ΓòÉΓòÉΓòÉ 19.4.2. Tab Painting and Positioning ΓòÉΓòÉΓòÉ
-
- The tab pages provide a method for organizing the information in a notebook so
- that the user easily can see and navigate to that information. As described in
- Notebook Control Styles, when a page is inserted with a major or minor tab
- attribute, the notebook displays a tab for that page, based on the orientation
- of the notebook. The contents of the tab can be painted either by the notebook
- control or the application.
-
- If the notebook control is to paint the tabs, the application must associate a
- text string or bit map with the page whose tab is to be drawn. This is done by
- sending the BKM_SETTABTEXT or BKS_SETTABBITMAP messages to the notebook control
- for the specified page. If neither of these messages is sent for an inserted
- page with a major or minor tab attribute, the application must draw the
- contents of the tab, through ownerdraw. The application receives a WM_DRAWITEM
- message whenever a tab page that has no text or bit map associated with it is
- to be drawn. The application can either draw the tab contents or return FALSE,
- in which case the notebook control fills the tab with the tab background color.
-
- Positioning Tabs in Relation to the Top Tab:
- There are seven page edges that define the back pages. The page attribute
- (BKA_MAJOR or BKS_MINOR) and the topmost page determine how the tabs are
- positioned. In most cases, the tabs must be drawn when their position changes.
- For example, this can happen when a page with a tab attribute is brought to the
- top of the notebook.
-
- The new top major or minor tab will appear attached to the top page. The other
- tabs will appear as described in the following list. This information is
- provided to help you understand the relationship between the top tab and the
- other tabs so that you can organize the information you put into a notebook
- appropriately. The application has no control over tab positioning.
-
- o When the top page is a major tab page:
-
- - Any major tabs prior to the top major tab are aligned on the last page of
- the notebook.
-
- - Any major tabs after the top major tab are incrementally cascaded from the
- topmost edge to the last page.
-
- - If the top major tab has minor tabs, no major tab is drawn on the page
- edge that immediately follows the top tab page. Instead, any major tabs
- that follow the top tab are incrementally cascaded beginning on the second
- page edge down from the top tab. This is done to account for the minor
- tabs that are positioned between the top major tab and the major tab that
- follows it on the perpendicular notebook edge.
-
- The minor tabs are all positioned on the third page edge from the top,
- thus giving the appearance of being between the top major tab and the next
- major tab.
-
- o When the top page is a minor tab page:
-
- - Any minor tabs prior to the top minor tab are positioned on the third page
- edge from the top of the notebook.
-
- - Any minor tabs after the top minor tab are incrementally cascaded up to
- the third page edge from the top.
-
-
- ΓòÉΓòÉΓòÉ 19.5. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 structures, notification codes, notification messages,
- and window messages used with the notebook control:
-
- Notebook Control Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBOOKTEXT ΓöéContains text strings for notebook Γöé
- Γöé Γöéstatus lines and tabs. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDELETENOTIFY ΓöéContains information about the page Γöé
- Γöé Γöébeing deleted from a notebook. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéPAGESELECTNOTIFY ΓöéContains information about the page Γöé
- Γöé Γöébeing selected in a notebook. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Notebook Control Notification Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKN_HELP ΓöéIndicates that the notebook control Γöé
- Γöé Γöéhas received a WM_HELP message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKN_NEWPAGESIZE ΓöéIndicates that the dimensions of theΓöé
- Γöé Γöénotebook page window have changed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKN_PAGEDELETED ΓöéIndicates that a page has been Γöé
- Γöé Γöédeleted from the notebook. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKN_PAGESELECTED ΓöéIndicates that a new page has been Γöé
- Γöé Γöébrought to the top of the notebook. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Notebook Control Notification Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when a control has a Γöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to the notebook control's ownerΓöé
- Γöé Γöéwindow when the pointing device Γöé
- Γöé Γöépointer moves over the notebook Γöé
- Γöé Γöécontrol window, enabling the owner Γöé
- Γöé Γöéto set the pointing device pointer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DRAWITEM ΓöéSent to the owner of the notebook Γöé
- Γöé Γöécontrol each time an item is to be Γöé
- Γöé Γöédrawn. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Notebook Control Window Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_CALCPAGERECT ΓöéCalculates a window rectangle Γöé
- Γöé Γöéfrom a notebook rectangle or aΓöé
- Γöé Γöénotebook rectangle from a Γöé
- Γöé Γöéwindow rectangle, depending onΓöé
- Γöé Γöéthe setting of the fPage Γöé
- Γöé Γöéparameter. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_DELETEPAGE ΓöéDeletes the specified page or Γöé
- Γöé Γöépages from the notebook data Γöé
- Γöé Γöélist. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_INSERTPAGE ΓöéInserts the specified page Γöé
- Γöé Γöéinto the notebook data list. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_INVALIDATETABS ΓöéRepaints all the tabs in the Γöé
- Γöé Γöénotebook. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYPAGECOUNT ΓöéQueries the number of pages. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYPAGEDATA ΓöéQueries the 4 bytes of Γöé
- Γöé Γöéapplication-reserved storage Γöé
- Γöé Γöéassociated with the specified Γöé
- Γöé Γöépage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYPAGEID ΓöéQueries the page identifier Γöé
- Γöé Γöéfor the specified page. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYPAGESTYLE ΓöéQueries the style that was setΓöé
- Γöé Γöéwhen the specified page was Γöé
- Γöé Γöéinserted. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYPAGEWINDOWHWND ΓöéQueries the notebook page Γöé
- Γöé Γöéwindow handle associated with Γöé
- Γöé Γöéthe specified page. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYSTATUSLINETEXT ΓöéQueries the status line text, Γöé
- Γöé Γöétext size, or both, for the Γöé
- Γöé Γöéspecified page. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYTABBITMAP ΓöéQueries the bit-map handle Γöé
- Γöé Γöéassociated with the specified Γöé
- Γöé Γöépage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_QUERYTABTEXT ΓöéQueries the text, text size, Γöé
- Γöé Γöéor both, for the specified Γöé
- Γöé Γöépage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_SETDIMENSIONS ΓöéSets the height and width for Γöé
- Γöé Γöéthe major tabs, minor tabs, orΓöé
- Γöé Γöépage buttons. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_SETNOTEBOOKCOLORS ΓöéSets the colors for the major Γöé
- Γöé Γöétab text and background, minorΓöé
- Γöé Γöétab text and background, and Γöé
- Γöé Γöénotebook page background. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_SETPAGEDATA ΓöéSets the 4 bytes of Γöé
- Γöé Γöéapplication-reserved storage Γöé
- Γöé Γöéassociated with the specific Γöé
- Γöé Γöépage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_SETPAGEWINDOWHWND ΓöéAssociates a notebook page Γöé
- Γöé Γöéwindow handle with the Γöé
- Γöé Γöéspecified notebook page. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_SETSTATUSLINETEXT ΓöéAssociates a text string with Γöé
- Γöé Γöéthe status line on the Γöé
- Γöé Γöéspecified page. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_SETTABBITMAP ΓöéAssociates a bit-map handle Γöé
- Γöé Γöéwith the specified page. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_SETTABTEXT ΓöéAssociates a text string with Γöé
- Γöé Γöéthe specified page. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéBKM_TURNTOPAGE ΓöéBrings the specified page to Γöé
- Γöé Γöéthe top of the notebook. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéOccurs when the user presses aΓöé
- Γöé Γöékey. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PRESPARAMCHANGED ΓöéOccurs when a presentation Γöé
- Γöé Γöéparameter is set or removed Γöé
- Γöé Γöédynamically from a window Γöé
- Γöé Γöéinstance. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SIZE ΓöéOccurs when the size of the Γöé
- Γöé Γöénotebook window changes. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 20. Slider Controls ΓòÉΓòÉΓòÉ
-
- A slider control (WC_SLIDER window class) is a visual component that enables a
- user to set, display, or modify a value by moving the slider arm along the
- slider shaft. This chapter explains how you can use slider controls in your PM
- applications.
-
-
- ΓòÉΓòÉΓòÉ 20.1. About Slider Controls ΓòÉΓòÉΓòÉ
-
- The following figure is an example of a slider used to set a decibel value.
-
- Sample Slider
-
- The slider arm shows the value currently set by its position on the slider
- shaft. The user selects slider values by changing the location of the slider
- arm.
-
- A tick mark indicates an incremental value in a slider scale. A detent,
- similar to a tick mark, also represents a value on the scale; however, a detent
- can be placed anywhere along the slider scale, instead of only in specific
- increments, and can be selected.
-
- Typically, sliders are used to easily set values that have familiar increments,
- such as feet, inches, degrees, decibels, and so forth. They also can be used
- for other purposes when immediate feedback is required, such as to blend colors
- or show a task's percentage of completion. For example, an application might
- let a user mix and match color shades by moving a slider arm, or a read-only
- slider could show how much of a task is complete by filling in the slider shaft
- as the task progresses. These are just a few examples of the many ways in
- which sliders can be used.
-
- The appearance of and user interaction for a slider is similar to that of a
- scroll bar. However, these two controls are not interchangeable because each
- has a unique purpose. A scroll bar scrolls information into view that is
- outside a window's work area, while the slider is used to set, display, or
- modify that information, whether it is in or out of the work area.
-
- The slider can be customized to meet varying application requirements, while
- providing a user interface component that can be used easily to develop
- products that conform to the Common User Access (CUA) user interface
- guidelines. The application can specify different scales, sizes, and
- orientations for its sliders, but the underlying function of the control
- remains the same. For a complete description of CUA sliders, refer to the SAA
- CUA Guide to User Interface Design and the SAA CUA Advanced Interface Design
- Reference.
-
-
- ΓòÉΓòÉΓòÉ 20.2. Creating a Slider ΓòÉΓòÉΓòÉ
-
- Before the slider is created, a temporary SLDCDATA data structure is allocated,
- and variables are specified for the slider control window handle and slider
- style. The SLDCDATA data structure is allocated so that the scale increments
- and spacing of the slider can be specified. Refer to the OS/2 Programming
- Reference for more information about the SLDCDATA data structure.
-
- The slider style variable enables the application to specify style bits, SLS_*
- values, that are used to customize the slider. Refer to the OS/2 Programming
- Reference for the definitions of these values.
-
- You create a slider by using the WC_SLIDER window class name in the ClassName
- parameter of the WinCreateWindow function call. The handle of the slider
- control window is returned in the slider window variable.
-
- After the slider is created, but before it is made visible, the application can
- set other slider control characteristics, such as:
-
- o Size and placement of tick marks
- o Text above one or more tick marks
- o One or more detents
- o Initial slider arm position.
-
- The settings in the preceding list are just a few that an application can
- specify and are the ones shown in the following sample code for creating a
- slider. Slider control messages are used to specify these settings. A
- detailed description of the messages is available in the OS/2 2.0 Programming
- Reference.
-
- The main components of the slider are labeled.
-
-
- Sample Code for Creating a Slider
-
- SLDCDATA sldcData; /* SLDCDATA data structure */
- CHAR szTickText[5]; /* Text strings variable */
- USHORT idx; /* Counter for setting text strings */
- HWND hwndSlider; /* Slider window handle */
- ULONG ulSliderStyle; /* Slider styles */
-
- /**********************************************************************/
- /* Initialize the parameters in the data structure. */
- /**********************************************************************/
- sldcData.cbSize = sizeof(SLDCDATA); /* Size of SLDCDATA structure */
- sldcData.usScale1Increments = 6; /* Number of increments */
- sldcData.usScale1Spacing = 0; /* Use 0 to have slider calculate */
- /* spacing */
-
- /**********************************************************************/
- /* Set the SLS_* style flags to the default values, plus slider */
- /* buttons right. */
- /**********************************************************************/
- ulSliderStyle = SLS_HORIZONTAL | /* Slider is horizontal */
- SLS_CENTER | /* Slider shaft centered in */
- /* slider window */
- SLS_HOMELEFT | /* Home position is left edge of */
- /* slider */
- SLS_PRIMARYSCALE1 | /* Scale is displayed above */
- /* slider shaft */
- SLS_BUTTONSRIGHT; /* Slider buttons at right end of */
- /* slider */
-
- /**********************************************************************/
- /* Create the slider control window. The handle of the window is */
- /* returned in hwndSlider. */
- /**********************************************************************/
- hwndSlider = WinCreateWindow(
- hwndClient, /* Parent window handle */
- WC_SLIDER, /* Slider window class name */
- (PSZ)NULL, /* No window text */
- ulSliderStyle, /* Slider styles variable */
- (SHORT)10, /* X coordinate */
- (SHORT)10, /* Y coordinate */
- (SHORT)150, /* Window width */
- (SHORT)80, /* Window height */
- hwndClient, /* Owner window handle */
- HWND_TOP, /* Sibling window handle */
- ID_SLIDER, /* Slider control window ID */
- &sldcData, /* Control data structure */
- (PVOID)NULL); /* No presentation parameters */
-
- /**********************************************************************/
- /* Set tick marks at several places on the slider shaft using the */
- /* primary scale. */
- /**********************************************************************/
- WinSendMsg(hwndSlider, /* Slider window handle */
- SLM_SETTICKSIZE, /* Message for setting tick mark size*/
- MPFROM2SHORT(
- SMA_SETALLTICKS, /* Attribute for setting all tick */
- /* marks to the same size */
- 6), /* Draw tick marks 6 pixels long */
- NULL); /* Reserved value */
-
- /**********************************************************************/
- /* Set text above the tick marks. */
- /**********************************************************************/
- for (idx = 0; idx <= 5; idx++) /* Count from 0 to 5 */
- {
- itoa( 10*idx, szTickText, 10 ); /* Set text at increments of 10 */
-
- WinSendMsg(hwndSlider, /* Slider window handle */
- SLM_SETSCALETEXT, /* Message for setting text on a */
- /* slider scale */
- MPFROMSHORT(idx), /* Text string counter */
- MPFROMPSZ(szTickText)); /* Text to put on slider scale */
- }
-
- /**********************************************************************/
- /* Set detents between two of the tick marks on the slider shaft. */
- /**********************************************************************/
- WinSendMsg(hwndSlider, /* Slider window handle */
- SLM_ADDDETENT, /* Message for adding detents to a */
- /* slider scale */
- MPFROMSHORT(5), /* Put a detent 5 pixels from home */
- NULL); /* Reserved value */
-
- WinSendMsg(hwndSlider, /* Slider window handle */
- SLM_ADDDETENT, /* Message for adding detents to a */
- /* slider scale */
- MPFROMSHORT(25), /* Put a detent 25 pixels from home */
- NULL); /* Reserved value */
-
- /**********************************************************************/
- /* Set the slider arm position to the 1st increment on the scale. */
- /**********************************************************************/
- WinSendMsg(hwndSlider, /* Slider window handle */
- SLM_SETSLIDERINFO, /* Message for setting slider */
- /* attributes */
- MPFROM2SHORT(
- SMA_SLIDERARMPOSITION, /* Modify slider arm position */
- SMA_INCREMENTVALUE), /* Use an increment value */
- MPFROMSHORT(1); /* Value to use is 1st */
- /* increment */
-
- /**********************************************************************/
- /* Since all items have been set, make the control visible. */
- /**********************************************************************/
- WinShowWindow(hwndSlider, /* Slider window handle */
- TRUE); /* Make the window visible */
-
-
- ΓòÉΓòÉΓòÉ 20.3. Retrieving Data for Selected Slider Values ΓòÉΓòÉΓòÉ
-
- To retrieve data represented by a slider value, specify a variable for the
- current position of the slider arm. Then, use the SLM_QUERYSLIDERINFO message
- to retrieve information about the current slider arm position in increment
- coordinates. The code fragment in the following figure shows how to retrieve
- data for a selected slider value.
-
-
- Retrieving a Slider Value
-
- ULONG ulValue; /* Variable in which to store current */
- /* slider arm position */
-
- /**********************************************************************/
- /* Get the information about the current slider arm position in */
- /* incremental coordinates. */
- /**********************************************************************/
- ulValue = (ULONG)WinSendMsg(
- hwndSlider, /* Slider window handle */
- SLM_QUERYSLIDERINFO, /* Message for querying slider */
- /* attributes */
- MPFROM2SHORT(
- SMA_SLIDERARMPOSITION, /* Get increment at which slider arm */
- SMA_INCREMENTVALUE), /* is located */
- NULL); /* Reserved value */
-
-
- ΓòÉΓòÉΓòÉ 20.4. Graphical User Interface Support for Sliders ΓòÉΓòÉΓòÉ
-
- This section describes the support the slider control provides for graphical
- user interfaces (GUIs). Except where noted, this support conforms to the
- guidelines in the SAA CUA Advanced Interface Design Reference.
-
- Since slider values all are mutually exclusive, only one of them can be
- selected at a time. Therefore, the only type of selection supported by the
- slider control is single selection.
-
- Note: If more than one slider window is open, selecting values in one slider
- window has no effect on the values selected in any other slider window.
- A black square is drawn in the center of the slider arm to show which
- slider control window has the focus.
-
- An initial value is selected when the slider control first is displayed. If
- the application does not provide the initial selection, using the
- SLM_SETSLIDERINFO message to position the slider arm, the value at the home
- position is selected automatically. The home position is the end of the slider
- that contains the lowest value on the scale.
-
- The slider control supports the use of pointing devices and the keyboard for
- selecting values.
-
-
- ΓòÉΓòÉΓòÉ 20.4.1. Pointing Device Support ΓòÉΓòÉΓòÉ
-
- A user can select slider values with a pointing device. On a mouse, the SAA
- CUA Guide to User Interface Design defines button 1 (the select button) as the
- button for selecting values, and button 2 (the drag button) for dragging the
- slider arm to a value. These definitions also apply to the same buttons on any
- other pointing device, such as a joystick.
-
- The select button and drag button can be used in conjunction with the following
- slider components to select slider values:
-
- o Slider arm
-
- Moving the pointer over the slider arm, then pressing and holding the select
- or drag buttons while moving the pointer, causes the slider arm to move in
- the direction the pointer is moving. When the button is released, the value
- closest to the slider arm position becomes the selected value.
-
- o Slider shaft
-
- Clicking the select button when the pointer is over the slider shaft causes
- the slider arm to move one increment in the direction of the pointer.
- Increments are determined by the initial values passed for the primary scale
- specified (SLS_PRIMARYSCALE1 or SLS_PRIMARYSCALE2) when the slider is
- created.
-
- Clicking the drag button when the pointer is over the slider shaft causes the
- slider arm to move to the pointer's location.
-
- o Slider buttons
-
- Clicking the select button when the pointer is over a slider button causes
- the slider arm to move one increment in the direction the arrow on the slider
- button is pointing.
-
- Slider buttons are optional. If used, two slider buttons are available to
- the user. The arrows on top of the slider buttons point to opposite ends of
- the slider. Both slider buttons are positioned at the same end of the
- slider.
-
- Slider buttons are enabled by specifying the appropriate SLS_* value when the
- slider control window is created. For horizontal sliders, you can specify
- either SLS_BUTTONSLEFT or SLS_BUTTONSRIGHT. For vertical sliders, you can
- specify either SLS_BUTTONSBOTTOM or SLS_BUTTONSTOP. The default is no slider
- buttons. If more than one of these style bits is specified, no slider
- buttons are enabled.
-
- o Detents
-
- A detent is similar to a tick mark on a slider scale because it represents a
- value on the scale. However, unlike a tick mark, a detent can be placed
- anywhere along the slider scale instead of in specific increments.
-
- A detent can be selected by moving the pointer over it and pressing the
- select button on the pointing device. When this happens, the slider arm
- moves to the position on the slider shaft indicated by the detent.
-
-
- ΓòÉΓòÉΓòÉ 20.4.2. Keyboard Support ΓòÉΓòÉΓòÉ
-
- A user can select a value by using the navigation keys to move the slider arm
- to the value or by typing a value in an entry field, if one is provided by the
- application, to change the slider arm position. The following list describes
- these methods of selecting slider values.
-
- o Values can be selected using the Up, Down, Left, and Right Arrow keys to move
- the slider arm one increment at a time. The Up and Down Arrow keys are
- enabled for vertical sliders, and the Right and Left Arrow keys are enabled
- for horizontal sliders. If no tick mark exists on the scale in the requested
- direction, the slider arm does not move.
-
- If an Arrow key is pressed in conjunction with the Shift key, the slider arm
- moves to the next detent instead of the next tick mark. If no detent exists
- on the scale in the requested direction, the slider arm does not move.
-
- o The Home and End keys can be used to select the lowest and highest values,
- respectively, in the scale. If the Ctrl key is pressed in combination with
- the Home or End keys, the result is the same as pressing only the Home or End
- keys.
-
- o The application can provide an optional entry field for the slider control.
- The entry field is a separate control, but it can work in conjunction with
- the slider control.
-
- If the application provides an entry field for the slider control window, it
- must be implemented as follows:
-
- - The user must be allowed to type a value into the entry field.
-
- - If the typed value is within the range of the slider scale, the slider arm
- moves to that value as soon as the value is typed.
-
- - No other action, such as pressing the Enter key, is required.
-
- These selection techniques conform to the descriptions in the SAA CUA Guide to
- User Interface Design.
-
-
- ΓòÉΓòÉΓòÉ 20.5. Summary ΓòÉΓòÉΓòÉ
-
- Following are tables that describe the OS/2 functions, structure, notification
- codes, notification messages, and window messages used with the slider control.
-
- Slider Control Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateWindow ΓöéCreates a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSendMsg ΓöéSends a message with identity Msgid Γöé
- Γöé Γöéto hwnd. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinShowWindow ΓöéSets the visibility state of a Γöé
- Γöé Γöéwindow. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Slider Control Structure
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLDCDATA ΓöéSlider control data structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Slider Control Notification Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLN_CHANGE ΓöéSent when the slider arm Γöé
- Γöé Γöéposition has changed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLN_KILLFOCUS ΓöéSent when the slider control Γöé
- Γöé Γöéis losing the focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLN_SETFOCUS ΓöéSent when the slider control Γöé
- Γöé Γöéis receiving the focus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLN_SLIDERTRACK ΓöéSent when the slider arm is Γöé
- Γöé Γöébeing dragged, but it has not Γöé
- Γöé Γöébeen released. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Slider Control Notification Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when the slider control has aΓöé
- Γöé Γöésignificant event to notify to its Γöé
- Γöé Γöéowner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to the owner window of the Γöé
- Γöé Γöéslider control when the pointing Γöé
- Γöé Γöédevice pointer moves over the sliderΓöé
- Γöé Γöécontrol window, enabling the owner Γöé
- Γöé Γöéwindow to set the pointer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DRAWITEM ΓöéSent to the owner of the slider Γöé
- Γöé Γöécontrol each time an item is to be Γöé
- Γöé Γöédrawn. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Slider Control Window Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_ADDDETENT ΓöéPlaces a detent along the slider Γöé
- Γöé Γöéshaft at the position specified on Γöé
- Γöé Γöéthe primary scale. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_QUERYDETENTPOS ΓöéQueries for the current position of Γöé
- Γöé Γöéa detent. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_QUERYSCALETEXT ΓöéQueries for the text associated withΓöé
- Γöé Γöéa tick mark for the primary scale Γöé
- Γöé Γöéand copies that text into a buffer. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_QUERYSLIDERINFO ΓöéQueries the current position or Γöé
- Γöé Γöédimensions of a key component of theΓöé
- Γöé Γöéslider. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_QUERYTICKPOS ΓöéQueries for the current position of Γöé
- Γöé Γöéa tick mark for the primary scale. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_QUERYTICKSIZE ΓöéQueries for the size of a tick mark Γöé
- Γöé Γöéfor the primary scale. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_REMOVEDETENT ΓöéRemoves a previously specified Γöé
- Γöé Γöédetent. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_SETSCALETEXT ΓöéSets text above a tick mark for the Γöé
- Γöé Γöéprimary scale. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_SETSLIDERINFO ΓöéSets the current position or Γöé
- Γöé Γöédimensions of a key component of theΓöé
- Γöé Γöéslider. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSLM_SETTICKSIZE ΓöéSets the size of a tick mark for theΓöé
- Γöé Γöéprimary scale. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéOccurs when the user presses a key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PRESPARAMCHANGED ΓöéSent when a presentation parameter Γöé
- Γöé Γöéis set or removed dynamically from aΓöé
- Γöé Γöéwindow instance. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application queries Γöé
- Γöé Γöéthe window parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application sets or Γöé
- Γöé Γöéchanges the window parameters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 21. Value Set Controls ΓòÉΓòÉΓòÉ
-
- A value set control (WC_VALUESET window class), like a radio button, is a
- visual component that enables a user to select one choice from a group of
- mutually exclusive choices. However, unlike radio buttons, a value set can use
- graphic images (bit maps or icons), as well as colors, text, and numbers, to
- represent the items a user can select. This chapter presents the basics about
- value set controls and tells you how to create and use them in PM applications.
-
-
- ΓòÉΓòÉΓòÉ 21.1. About Value Sets ΓòÉΓòÉΓòÉ
-
- Even though text is supported, the purpose of a value set control is to display
- choices as graphic images for faster selection. The user can see the selections
- instead of having to take time to read descriptions of the choices. Using
- graphic images in a value set also lets you conserve space on the display
- screen. For example, if you want to let a user choose from a variety of
- patterns, you can present those patterns as value set choices, as shown in the
- following figure, instead of providing a list of radio buttons with a
- description of each pattern.
-
- Sample Value Set If long strings of data are to be displayed as choices, radio
- buttons should be used. However, for small sets of numeric or textual
- information, you can use either a value set or radio buttons.
-
- The value set is customizable to meet varying application requirements, while
- providing a user interface component that can be used easily to develop
- products that conform to the Common User Access (CUA) user interface
- guidelines. The application can specify different types of items, sizes, and
- orientations for its value sets, but the underlying function of the control
- remains the same. For a complete description of CUA value sets, refer to the
- SAA CUA Guide to User Interface Design and the SAA CUA Advanced Interface
- Design Reference.
-
-
- ΓòÉΓòÉΓòÉ 21.1.1. Creating and Using Value Set Controls ΓòÉΓòÉΓòÉ
-
- This section provides information that will enable you to create and use a
- value set control effectively.
-
-
- ΓòÉΓòÉΓòÉ 21.1.1.1. Creating a Value Set ΓòÉΓòÉΓòÉ
-
- You create a value set by using the WC_VALUESET window class name in the
- ClassName parameter of the WinCreateWindow function call.
-
- Before the value set is created, a temporary VSCDATA data structure is
- allocated so that the number of rows and columns of the value set can be
- specified. Refer to the OS/2 2.0 Programming Reference for more information
- about the VSCDATA data structure.
-
- Also, VS_* values are specified in the ulValueSetStyle variable so that the
- value set can be customized. Refer to the OS/2 2.0 Programming Reference for
- descriptions of the value set control styles that can be specified. The sample
- code in the following figure shows the creation of a value set.
-
-
- Sample Code for Creating a Value Set
-
- VSCDATA vscData; /* VSCDATA data structure */
- HWND hwndValueSet; /* Value set window handle */
- ULONG ulValueSetStyle; /* Value set style variable */
-
- /**********************************************************************/
- /* Initialize the parameters in the data structure. */
- /**********************************************************************/
- vscData.cbSize = /* Size of value set equals size of */
- sizeof(VSCDATA); /* VSCDATA */
- vscData.usRowCount = 1; /* 1 row in the value set */
- vscData.usColumnCount = 3; /* 3 columns in the value set */
-
- /**********************************************************************/
- /* Set the VS_* style flags to customize the value set. */
- /**********************************************************************/
- ulValueSetStyle =
- VS_RGB | /* Use colors for items. */
- VS_ITEMBORDER | /* Put border around each value */
- /* set item. */
- VS_BORDER; /* Put border around the entire */
- /* value set. */
-
- /**********************************************************************/
- /* Create the value set control window. The handle of the window is */
- /* returned in hwndValueSet. */
- /**********************************************************************/
- hwndValueSet = WinCreateWindow(
- hwndClient, /* Parent window handle */
- WC_VALUESET, /* Value set class name */
- (PSZ)NULL, /* No window text */
- ulValueSetStyle, /* Value set styles */
- (SHORT)10, /* X coordinate */
- (SHORT)10, /* Y coordinate */
- (SHORT)300, /* Window width */
- (SHORT)200, /* Window height */
- hwndClient, /* Owner window handle */
- HWND_TOP, /* Z-order position */
- ID_VALUESET, /* Value set window ID */
- &vscData, /* Control data structure */
- (PVOID)NULL); /* No presentation parameters */
-
- /**********************************************************************/
- /* Set the color value for each item in each row and column. */
- /**********************************************************************/
- WinSendMsg(hwndValueSet, /* Value set window handle */
- VM_SETITEM, /* Message for setting items */
- MPFROM2SHORT(1,1), /* Set item in row 1, column 1 */
- MPFROMLONG(0x00FF0000)); /* to the color red. */
-
- WinSendMsg(hwndValueSet, /* Value set window handle */
- VM_SETITEM, /* Message for setting items */
- MPFROM2SHORT(1,2), /* Set item in row 1, column 2 */
- MPFROMLONG(0x0000FF00)); /* to the color green. */
-
- WinSendMsg(hwndValueSet, /* Value set window handle */
- VM_SETITEM, /* Message for setting items */
- MPFROM2SHORT(1,3), /* Set item in row 1, column 3 */
- MPFROMLONG(0x000000FF)); /* to the color blue. */
-
- /**********************************************************************/
- /* Set the default selection. */
- /**********************************************************************/
- WinSendMsg(hwndValueSet, /* Value set window handle */
- VM_SELECTITEM, /* Message for selecting items */
- MPFROM2SHORT(1,2), /* Item in row 1, column 2 */
- NULL); /* Reserved value */
-
- /**********************************************************************/
- /* Since all items have been set in the control, make the control */
- /* visible. */
- /**********************************************************************/
- WinShowWindow(hwndValueSet, /* Value set window handle */
- TRUE); /* Make the window visible */
-
-
- ΓòÉΓòÉΓòÉ 21.1.1.2. Retrieving Data for Selected Value Set Items ΓòÉΓòÉΓòÉ
-
- The next step is to be able to retrieve the data represented by a value set
- item. To do this, variables are specified for combined row and column index
- values, item attributes, and item information. Then the VM_QUERYSELECTEDITEM,
- VM_QUERYITEMATTR, and VM_QUERYITEM messages are used to retrieve the index
- values, attributes, and data. Refer to the descriptions of these messages in
- the OS/2 2.0 Programming Reference for more information. The sample code in the
- following figure shows how data for selected value set items is retrieved.
-
-
- Sample Code for Retrieving Data for Value Set Items
-
- ULONG ulIdx; /* Combined row and column index value */
- USHORT usItemAttr; /* Item attributes */
- ULONG ulItemData; /* Item data */
-
- /**********************************************************************/
- /* Get the row and column index values of the item selected by the */
- /* user. These values are returned in the ulIdx parameter. */
- /**********************************************************************/
- ulIdx = (ULONG)WinSendMsg(
- hwndValueSet, /* Value set window handle */
- VM_QUERYSELECTEDITEM, /* Message for querying the selected */
- /* item */
- NULL, NULL); /* Reserved values */
-
- /**********************************************************************/
- /* Determine the type of item that was selected. This message is */
- /* only to determine how to interpret item data when a value set */
- /* contains different types of items. */
- /**********************************************************************/
- usItemAttr = (USHORT)WinSendMsg(
- hwndValueSet, /* Value set window handle */
- VM_QUERYITEMATTR, /* Message for querying item attribute */
- MPFROMLONG(ulIdx), /* Row and column of selected item */
- NULL); /* Reserved value */
-
- /**********************************************************************/
- /* Get the information about the selected (non-textual) item. If you */
- /* are dealing with text, you need to allocate a buffer for the text */
- /* string. */
- /**********************************************************************/
- ulItemData = (ULONG)WinSendMsg(
- hwndValueSet, /* Value set window handle */
- VM_QUERYITEM, /* Message for querying an item */
- MPFROMLONG(ulIdx), /* Row and column of selected item */
- NULL); /* Set to NULL because the item is not */
- /* a text item. */
-
-
- ΓòÉΓòÉΓòÉ 21.1.1.3. Arranging Value Set Items ΓòÉΓòÉΓòÉ
-
- The application defines the arrangement of value set items; they can be
- arranged in one or more rows, columns, or both. Items are placed from left to
- right in rows and from top to bottom in columns. The application can change
- the number of rows and columns at any time.
-
- The number of items that can be displayed depends on the number of items that
- fit into the spaces provided by the defined rows and columns. If the number of
- items exceeds the number of spaces, the excess items are not displayed.
-
- You can change the composition of a value set by specifying new items. The new
- items either can be added to the value set or can replace existing items.
-
-
- ΓòÉΓòÉΓòÉ 21.2. Graphical User Interface Support ΓòÉΓòÉΓòÉ
-
- This section describes the support the value set control provides for graphical
- user interfaces (GUIs). Except where noted, this support conforms to the
- guidelines in the SAA CUA Advanced Interface Design Reference.
-
- The GUI support provided by the value set control consists of:
-
- o Navigating to and selecting value set items
- o Dynamic resizing.
-
-
- ΓòÉΓòÉΓòÉ 21.2.1. Navigating to and Selecting Value Set Items ΓòÉΓòÉΓòÉ
-
- Since all value set items are mutually exclusive, only one of them can be
- selected at a time. Therefore, the only type of selection supported by the
- value set control is single selection. This selection type conforms to the
- guidelines in the SAA CUA Advanced Interface Design Reference. Refer to that
- book for detailed information about single selection.
-
- Note: If more than one value set window is open, navigating to and selecting
- items in one value set window has no affect on the items displayed in
- any other value set window.
-
- An initial choice is selected when the value set control is first displayed.
- If the application does not provide the initial selection by using the
- VM_SELECTITEM message, the choice in row 1, column 1 is selected automatically.
-
- The value set control supports the use of a pointing device, such as a mouse,
- and the keyboard for navigating to and selecting items, except for items that
- are dimmed on the screen. This dimming of items is called unavailable-state
- emphasis and indicates that the items cannot be selected. However, the
- selection cursor, a dotted outline that usually indicates that an item can be
- selected, can be moved to unavailable items so that a user can press F1 to
- determine why they cannot be selected. The following sections describe the
- pointing device and keyboard support for the value set control.
-
-
- ΓòÉΓòÉΓòÉ 21.2.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
-
- A user can use a pointing device to select value set items. The SAA CUA Guide
- to User Interface Design defines mouse button 1, the select button, to be used
- for selecting items. This definition also applies to the same button on any
- other pointing device.
-
- An item can be selected by moving the pointer of the pointing device to the
- item and clicking the select button. When this happens, a black box is drawn
- around the item to show that it has been selected. The black box is called
- selected-state emphasis. In addition, the selection cursor is drawn inside the
- black box.
-
-
- ΓòÉΓòÉΓòÉ 21.2.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
-
- The value set control supports automatic selection, which means that an
- available item is selected when the selection cursor is moved to that item.
- The item is given selected-state emphasis as soon as the selection cursor is
- moved to it. No further action, such as pressing the spacebar, is required.
- The same black box and dotted outline are used, for selected-state emphasis and
- the selection cursor respectively, as when an item is selected with a pointing
- device.
-
- A user can navigate to and select an item by using either the navigation keys
- or mnemonic selection to move the selection cursor to the item, as described in
- the following list:
-
- o Items can be selected using the Up, Down, Left, and Right Arrow keys to move
- the selection cursor from one item to another.
-
- o The Home and End keys can be used to select the leftmost and rightmost items,
- respectively, in the current row. If the Ctrl key is pressed in combination
- with the Home or End key, the item in the top row and the leftmost column, or
- the item in the bottom row and the rightmost column, respectively, is
- selected.
-
- Note: The preceding description assumes that the current style of the value
- set window is left-to-right. However, if the VS_RIGHTTOLEFT style bit
- is set, the directions described for the Home, End, Ctrl+Home, and
- Ctrl+End keys in the preceding paragraph are reversed.
-
- o The PgUp key can be used to select the item in the top row that is directly
- above the current position of the selection cursor. The PgDn key can be used
- to select the item in the bottom row that is directly below the current
- position of the selection cursor. If the space in the top or bottom row
- directly above or below the current cursor position is blank, the cursor
- moves to the blank space.
-
- o Another keyboard method of selecting items is mnemonic selection. A user
- performs mnemonic selection by pressing a character key that corresponds to
- an underlined character. Coding a tilde (~) before a text character in the
- item causes that character to be underlined and activates it as a mnemonic
- selection character. When this happens, the selection cursor is moved to the
- item that contains the underlined character, and that item is selected.
-
- These selection techniques conform to the descriptions in the SAA CUA Guide to
- User Interface Design. Refer to the SAA CUA Guide to User Interface Design for
- a complete description of the keyboard interface model.
-
-
- ΓòÉΓòÉΓòÉ 21.2.2. Dynamic Resizing ΓòÉΓòÉΓòÉ
-
- The value set control supports dynamic resizing if the application sends the
- WM_SIZE message to a value set window. This means that the value set control
- automatically recalculates the size of the items when either the user or the
- application changes the size of the value set window.
-
- If the value set window's size is decreased so that the window is not large
- enough to display all of the items the value set contains, the items are
- clipped. If scroll bars are desired to allow the clipped information to be
- scrolled into view, they must be provided by the application.
-
-
- ΓòÉΓòÉΓòÉ 21.3. Summary ΓòÉΓòÉΓòÉ
-
- The following tables describe the OS/2 structures, functions, notification
- codes, notification messages, and window messages used with value set controls.
-
- Value Set Control Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVSCDATA ΓöéContains information about the valueΓöé
- Γöé Γöéset control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVSDRAGINFO ΓöéContains information about direct Γöé
- Γöé Γöémanipulation actions that occur overΓöé
- Γöé Γöéthe value set control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVSDRAGINIT ΓöéContains information that is used toΓöé
- Γöé Γöéinitialize a direct manipulation Γöé
- Γöé Γöéaction over the value set control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVSTEXT ΓöéContains value set text. Used only Γöé
- Γöé Γöéwith the VM_QUERYITEM message. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Value Set Control Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateWindow ΓöéCreates a new window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSendMsg ΓöéSends a message to a window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinShowWindow ΓöéSets the visibility state of a Γöé
- Γöé Γöéwindow Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Value Set Control Notification Codes
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéCode Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_DRAGLEAVE ΓöéSent when the value set receives a Γöé
- Γöé ΓöéDM_DRAGLEAVE message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_DRAGOVER ΓöéSent when the value set receives a Γöé
- Γöé ΓöéDM_DRAGOVER message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_DROP ΓöéSent when the value set receives a Γöé
- Γöé ΓöéDM_DROPHELP message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_DROPHELP ΓöéSent when the value set receives a Γöé
- Γöé ΓöéDM_DROPHELP message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_ENTER ΓöéSent when the user presses the EnterΓöé
- Γöé Γöékey while the value set window has Γöé
- Γöé Γöéthe focus, or when the user Γöé
- Γöé Γöédouble-clicks the select button Γöé
- Γöé Γöéwhile the pointer is over an item inΓöé
- Γöé Γöéthe value set. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_HELP ΓöéSent when the value set receives a Γöé
- Γöé ΓöéWM_HELP message. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_INITDRAG ΓöéSent when the drag button is pressedΓöé
- Γöé Γöéand the pointer is moved while over Γöé
- Γöé Γöéthe value set control. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_KILLFOCUS ΓöéSent when the value set loses the Γöé
- Γöé Γöéfocus. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_SELECT ΓöéSent when an item in the value set Γöé
- Γöé Γöéis selected and given selected-stateΓöé
- Γöé Γöéemphasis. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVN_SETFOCUS ΓöéSent when the value set receives theΓöé
- Γöé Γöéfocus. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Value Set Control Notification Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROL ΓöéOccurs when the value set control Γöé
- Γöé Γöéhas a significant event to notify toΓöé
- Γöé Γöéits owner. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CONTROLPOINTER ΓöéSent to the owner window of the Γöé
- Γöé Γöévalue set control when the pointing Γöé
- Γöé Γöédevice pointer moves over the value Γöé
- Γöé Γöéset control window, enabling the Γöé
- Γöé Γöépointer to be set. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_DRAWITEM ΓöéSent to the owner of the value set Γöé
- Γöé Γöécontrol each time an item is to be Γöé
- Γöé Γöédrawn. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Value Set Control Window Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_QUERYITEM ΓöéQueries the contents of the Γöé
- Γöé Γöéitem indicated by the row and Γöé
- Γöé Γöécolumn values. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_QUERYITEMATTR ΓöéQueries the attributes of the Γöé
- Γöé Γöéitem indicated by the row and Γöé
- Γöé Γöécolumn values. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_QUERYMETRICS ΓöéQueries the current size of Γöé
- Γöé Γöéeach value set item or the Γöé
- Γöé Γöéspacing between items. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_QUERYSELECTEDITEM ΓöéQueries for the currently Γöé
- Γöé Γöéselected value set item Γöé
- Γöé Γöéindicated by the row and Γöé
- Γöé Γöécolumn values. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_SELECTITEM ΓöéSelects the value set item Γöé
- Γöé Γöéindicated by the row and Γöé
- Γöé Γöécolumn values. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_SETITEM ΓöéSpecifies the type of Γöé
- Γöé Γöéinformation that will be Γöé
- Γöé Γöécontained by a value set item.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_SETITEMATTR ΓöéSets the attributes of the Γöé
- Γöé Γöéitem indicated by the row and Γöé
- Γöé Γöécolumn values. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVM_SETMETRICS ΓöéSets the size of each item in Γöé
- Γöé Γöéthe value set control, the Γöé
- Γöé Γöéspacing between items, or Γöé
- Γöé Γöéboth. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéOccurs when the user presses aΓöé
- Γöé Γöékey. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_PRESPARAMCHANGED ΓöéSent when a presentation Γöé
- Γöé Γöéparameter is set or removed Γöé
- Γöé Γöédynamically from a window Γöé
- Γöé Γöéinstance. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYWINDOWPARAMS ΓöéOccurs when an application Γöé
- Γöé Γöéqueries the window parameters.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETWINDOWPARAMS ΓöéOccurs when an application Γöé
- Γöé Γöésets or changes the window Γöé
- Γöé Γöéparameters. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 22. Keyboard Accelerators ΓòÉΓòÉΓòÉ
-
- A keyboard accelerator (shortcut key to the user) is a keystroke that generates
- a command message for an application. This chapter describes how to use
- keyboard accelerators in your PM applications.
-
-
- ΓòÉΓòÉΓòÉ 22.1. About Keyboard Accelerators ΓòÉΓòÉΓòÉ
-
- Using a keyboard accelerator has the same effect as choosing a menu item.
- While menus provide an easy way to learn an application's command set,
- accelerators provide quick access to those commands.
-
- Without accelerators, a user might generate commands by pressing the Alt key to
- access the menu bar, using the Arrow keys to select an item, then pressing the
- Enter key to choose the item. In contrast, accelerators allow the user to
- generate commands with a single keystroke. The following figure shows examples
- of accelerators.
-
- Accelerators
-
- Like menu items, accelerators can generate WM_COMMAND, WM_HELP, and
- WM_SYSCOMMAND messages. Although, normally, accelerators are used to generate
- existing commands as menu items, they also can send commands that have no
- menu-item equivalent.
-
-
- ΓòÉΓòÉΓòÉ 22.1.1. Accelerator Tables ΓòÉΓòÉΓòÉ
-
- An accelerator table contains an array of accelerators. Accelerator tables
- exist at two levels within the operating system: a single accelerator table for
- the system queue and individual accelerator tables for application windows.
- Accelerators in the system queue apply to all applications-for example, the F1
- key always generates a WM_HELP message. Having accelerators for individual
- application windows ensures that an application can define its own accelerators
- without interfering with other applications. An accelerator for an application
- window can override the accelerator in the system queue. An application can
- modify both its own accelerator table and the system's accelerator table.
-
- The application can set and query the accelerator table for a specific window
- or for the entire system. For example, an application can query the system
- accelerator table, copy it, modify the copied data structures; and then, use
- the modified copy to set the system accelerator table. An application also can
- modify its window's accelerator table at run time to respond more appropriately
- to the current environment.
-
- Note: An application that modifies any accelerator table other than its own
- should maintain the original accelerator table; and, before terminating,
- restore that table.
-
-
- ΓòÉΓòÉΓòÉ 22.1.2. Accelerator-Table Resources ΓòÉΓòÉΓòÉ
-
- You can use accelerators in an application by creating an accelerator-table
- resource in a resource-definition file. Then, when the application creates a
- standard frame window, the application can associate that window with the
- resource.
-
- As specified in a resource-definition file, an accelerator table consists of a
- list of accelerator items, each defining the keystroke that triggers the
- accelerator, the command the accelerator generates, and the accelerator's
- style. The style specifies whether the keystroke is a virtual key, a
- character, or a scan code, and whether the generated message is WM_COMMAND,
- WM_SYSCOMMAND, or WM_HELP; WM_COMMAND is the default.
-
-
- ΓòÉΓòÉΓòÉ 22.1.3. Accelerator-Table Handles ΓòÉΓòÉΓòÉ
-
- Applications that use accelerator tables refer to them with a 32-bit handle.
- An application using this handle, by default, can make most API function calls
- for accelerators without having to account for the internal structures that
- define the accelerator table. When an application needs to dynamically create
- or change an accelerator table, it must use the ACCEL and ACCELTABLE data
- structures.
-
-
- ΓòÉΓòÉΓòÉ 22.1.4. Accelerator-Table Data Structures ΓòÉΓòÉΓòÉ
-
- An accelerator table consists of individual accelerator items. Each item in
- the table is represented by an ACCEL structure that defines the accelerator's
- style, keystroke, and command identifier. Typically, an application defines
- these aspects of an accelerator in a resource-definition file, but the ACCEL
- structure also can be built in memory at run time.
-
- An accelerator table is represented by an ACCELTABLE structure that specifies
- the number of accelerator items in the table, the code page used for the
- keystrokes in the accelerator items, and an array of ACCEL structures (one for
- each item in the table). Applications that use ACCELTABLE structures directly
- must allocate sufficient memory to hold all the items in the table.
-
-
- ΓòÉΓòÉΓòÉ 22.1.5. Accelerator-Item Styles ΓòÉΓòÉΓòÉ
-
- An accelerator item has a style that determines what combination of keys
- produces the accelerator and what command message is generated by the
- accelerator. An application can specify the following accelerator-item styles
- in the fs field of the ACCEL structure:
-
- Accelerator-Item Styles
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStyle ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_ALT ΓöéSpecifies that the user must hold down the Γöé
- Γöé ΓöéAlt key while pressing the accelerator key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_CHAR ΓöéSpecifies that the keystroke is a character Γöé
- Γöé Γöéthat is translated using the code page for Γöé
- Γöé Γöéthe accelerator table. (This is the default Γöé
- Γöé Γöéstyle.) Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_CONTROL ΓöéSpecifies that the user must hold down the Γöé
- Γöé ΓöéCtrl key while pressing the accelerator key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_HELP ΓöéSpecifies that the accelerator generates a Γöé
- Γöé ΓöéWM_HELP message instead of a WM_COMMAND Γöé
- Γöé Γöémessage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_LONEKEY ΓöéSpecifies that the user need not press Γöé
- Γöé Γöéanother key while the accelerator key is Γöé
- Γöé Γöédown. Typically, this style is used with theΓöé
- Γöé ΓöéAlt key to specify that simply pressing and Γöé
- Γöé Γöéreleasing that key triggers the accelerator. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_SCANCODE ΓöéSpecifies that the keystroke is an Γöé
- Γöé Γöéuntranslated scan code from the keyboard. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_SHIFT ΓöéSpecifies that the user must hold down the Γöé
- Γöé ΓöéShift key when pressing the accelerator key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéAF_SYSCOMMAND ΓöéSpecifies that the accelerator generates a Γöé
- Γöé ΓöéWM_SYSCOMMAND message instead of a WM_COMMANDΓöé
- Γöé Γöémessage. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéVIRTUALKEY ΓöéSpecifies that the keystroke is a virtual Γöé
- Γöé Γöékey-for example, the F1 function key. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 22.2. Using Keyboard Accelerators ΓòÉΓòÉΓòÉ
-
- This section explains how to perform the following tasks:
-
- o Create an accelerator-table resource.
- o Include an accelerator table in a frame window.
- o Modify an accelerator table.
-
-
- ΓòÉΓòÉΓòÉ 22.2.1. Creating an Accelerator-Table Resource ΓòÉΓòÉΓòÉ
-
- The following code fragment shows a typical accelerator-table resource:
-
-
- ACCELTABLE ID_ACCEL_RESOURCE
- BEGIN
- VK_ESC, IDM_ED_UNDO, AF_VIRTUALKEY | AF_SHIFT
- VK_DELETE, IDM_ED_CUT, AF_VIRTUALKEY
- VK_F2, IDM_ED_COPY, AF_VIRTUALKEY
- VK_INSERT, IDM_ED_PASTE, AF_VIRTUALKEY
- END
-
- This accelerator table has four accelerator items. The first one is triggered
- when the user presses Shift+Esc, which sends a WM_COMMAND message (the
- default).
-
- An accelerator table in a resource-definition file has an identifier
- (ID_ACCEL_RESOURCE in the previous example). You can associate an
- accelerator-table resource with a standard frame window by specifying the
- table's resource identifier as the idResources parameter of the
- WinCreateStdWindow function.
-
- An application can load an accelerator table resource-definition file
- automatically when creating a standard frame window, or it can load the
- resource independently and associate it with a window or with the entire
- system.
-
-
- ΓòÉΓòÉΓòÉ 22.2.2. Including an Accelerator Table in a Frame Window ΓòÉΓòÉΓòÉ
-
- You can add an accelerator table to a frame window either by using the
- WinSetAccelTable function or by defining an accelerator-table resource (as
- shown in the previous section) and creating a frame window with the
- FCF_ACCELTABLE frame style. The second method is shown in the following code
- fragment:
-
-
- HWND hwndFrame,hwndClient;
- CHAR szClassName[]="MyClass";
- CHAR szTitle[]="MyWindow";
-
- ULONG flControlStyle = FCF_SIZEBORDER | FCF_ACCELTABLE |
- FCF_TITLEBAR | FCF_MENU;
-
- hwndFrame = WinCreateStdWindow(HWND_DESKTOP,
- WS_VISIBLE,
- &flControlStyle,
- szClassName,
- szTitle,
- 0,
- (HMODULE)NULL,
- ID_MENU_RESOURCE,
- &hwndClient);
-
- Notice that if you set the flControlStyle parameter to the FCF_STANDARD flag,
- you must define an accelerator-table resource, because FCF_STANDARD includes
- the FCF_ACCELTABLE flag.
-
- If the window being created also has a menu, the menu resource and accelerator
- resource must have the same resource identifier; this is because the
- WinCreateStdWindow function has only one input parameter to specify the
- resource identifiers for menus, accelerator tables, and icons. If an
- application creates an accelerator table resource-definition file; then, opens
- a standard frame window (as shown in the preceding example), the accelerator
- table is installed automatically in the window's message queue, and keyboard
- events are translated during the normal processing of events. The application
- simply responds to WM_COMMAND, WM_SYSCOMMAND, and WM_HELP messages; it does not
- matter whether these messages come from a menu or an accelerator.
-
- An application also can add an accelerator table to a window by calling the
- WinSetAccelTable function with an accelerator-table handle and a frame-window
- handle. The application can call either the WinLoadAccelTable function to
- retrieve an accelerator table from a resource file or the WinCreateAccelTable
- function to create an accelerator table from an accelerator-table data
- structure in memory.
-
-
- ΓòÉΓòÉΓòÉ 22.2.3. Modifying an Accelerator Table ΓòÉΓòÉΓòÉ
-
- You can modify an accelerator table, for either your application windows or the
- system, by doing the following:
-
- 1. Retrieve the handle of the accelerator table.
-
- 2. Use that handle to copy the accelerator-table data to an
- application-supplied buffer.
-
- 3. Change the data in the buffer.
-
- 4. Use the changed data to create a new accelerator table.
-
- Then you can use the new accelerator-table handle to set the accelerator table,
- as outlined in the following list:
-
- 1. Call WinQueryAccelTable to retrieve an accelerator-table handle.
-
- 2. Call WinCopyAccelTable with a NULL buffer handle to determine how many
- bytes are in the table.
-
- 3. Allocate sufficient memory for the accelerator-table data.
-
- 4. Call WinCopyAccelTable, with a pointer to the allocated memory.
-
- 5. Modify the data in the buffer (assuming it has the form of an ACCELTABLE
- structure).
-
- 6. Call WinCreateAccelTable, passing a pointer to the buffer with the modified
- accelerator-table data.
-
- 7. Call WinSetAccelTable with the handle returned by WinCreateAccelTable.
-
-
- ΓòÉΓòÉΓòÉ 22.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions, structures, and messages used with
- accelerator tables:
-
- Accelerator-Table Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCopyAccelTable ΓöéUsed to get the accelerator table Γöé
- Γöé Γöécorresponding to an Γöé
- Γöé Γöéaccelerator-table handle, or to Γöé
- Γöé Γöédetermine the size of the Γöé
- Γöé Γöéaccelerator-table data. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateAccelTable ΓöéCreates an accelerator table from Γöé
- Γöé Γöéthe accelerator definitions in Γöé
- Γöé Γöémemory. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDestroyAccelTable ΓöéDestroys an accelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinLoadAccelTable ΓöéLoads an accelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryAccelTable ΓöéQueries the window or queue Γöé
- Γöé Γöéaccelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetAccelTable ΓöéSets the window-accelerator or Γöé
- Γöé Γöéqueue-accelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinTranslateAccel ΓöéTranslates a WM_CHAR message. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Accelerator-Table Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéACCEL ΓöéAccelerator structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéACCELTABLE ΓöéAccelerator-table structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Accelerator-Table Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYACCELTABLE ΓöéReturns the handle to a window's Γöé
- Γöé Γöéaccelerator table. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SETACCELTABLE ΓöéEstablishes the window accelerator Γöé
- Γöé Γöétable to be used for translation Γöé
- Γöé Γöéwhen the window is active. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_TRANSLATEACCEL ΓöéSent to the focus window when a Γöé
- Γöé ΓöéWM_CHAR message occurs. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 23. Dialog Windows ΓòÉΓòÉΓòÉ
-
- Dialog windows (also called dialog boxes) provide a high-level method for
- applications to display and gather information. This chapter describes the
- creation and use of dialog windows and message boxes in your PM applications.
-
- Note: Dialog windows, dialog boxes, and message boxes all are secondary
- windows to the user.
-
-
- ΓòÉΓòÉΓòÉ 23.1. About Dialog Windows ΓòÉΓòÉΓòÉ
-
- A dialog window is a temporary window that contains one or more control windows
- and, typically, is used to display messages to and gather input from the user.
- An application usually destroys a dialog window immediately after using it.
-
- OS/2 contains many functions and messages that help manage the control windows
- that make up a dialog window, thus easing the burden of maintaining complex
- input and output systems.
-
-
- ΓòÉΓòÉΓòÉ 23.1.1. Modal and Modeless Dialog Windows ΓòÉΓòÉΓòÉ
-
- Dialog windows can be modal or modeless. A modal dialog window requires that
- the dialog window be dismissed before the user can activate other windows in
- the same application. Generally, an application uses a modal dialog window to
- get essential information from the user before proceeding with an operation. A
- modeless dialog window allows the user to activate other windows in the same
- application without dismissing the dialog window. Both modal and modeless
- dialog windows allow the user to activate windows in another application before
- responding to the dialog window.
-
- Modal dialog windows are easier for an application to manage because they are
- created, perform their task, and are closed, all with a single function call.
-
- Modeless dialog windows require more attention from the application because
- they exist until explicitly dismissed. Modeless dialog windows provide a more
- flexible interface, however, by allowing the user to move to other windows in
- the application before responding to the dialog window.
-
-
- ΓòÉΓòÉΓòÉ 23.1.2. Dialog Items ΓòÉΓòÉΓòÉ
-
- A dialog item is a child window of the dialog window, which usually is a window
- of class WC_FRAME. The operating system provides many predefined window
- classes, called control windows, that you can use as dialog items. The
- following figure is an example.
-
- Dialog Window with Control Windows Predefined control windows include static
- display boxes, text-entry fields, buttons, and list boxes. You also can use
- customized window classes as dialog items.
-
- Dialog items are windows and, thus, can be manipulated by all window-management
- functions relating to size, position, and visibility. Dialog items always are
- owned by the dialog frame window. Most predefined control-window classes send
- notification messages to their owners when the user interacts with their
- control windows. The dialog frame window receives these notification messages
- and passes them to the application through the application-defined dialog
- procedure.
-
-
- ΓòÉΓòÉΓòÉ 23.1.3. Dialog-Item Groups ΓòÉΓòÉΓòÉ
-
- Items within a dialog window can be organized into dialog-item groups. When
- items are arranged in a group, the user can move from one item to another in
- the same group by using the direction keys. When the user presses a direction
- key, the focus will not shift to items in other groups within the dialog
- window.
-
- Arranging items in groups is useful for radio buttons and check boxes.
- Although some control types also can be displayed this way, entry-field
- controls cannot; they process direction keys themselves, as do MLE, value-set,
- container, slider, and notebook controls.
-
- The first item in a dialog-item group has the WS_GROUP window style. All
- subsequent items in the dialog template are considered part of that group until
- another item is given the WS_GROUP style, which begins a new group.
-
- The WS_TABSTOP style often is used along with the WS_GROUP style. WS_TABSTOP
- marks the items that can receive the focus when the user presses the Tab key.
- Each time the user presses the Tab key, the focus moves to the next item that
- has the WS_TABSTOP style. Generally, the WS_GROUP and WS_TABSTOP styles are
- defined together for the first item of each group in the dialog template. This
- makes it possible for a user to press the Tab key to move among groups of items
- and to use the direction keys to move among items in a group.
-
- The WS_TABSTOP style should not be used for radio buttons because the system
- automatically maintains a tab stop on any selected item in a radio-button
- group; therefore, when the Tab key is pressed in a group of radio buttons, the
- focus remains on the currently selected item.
-
- The WS_GROUP and WS_TABSTOP styles are also useful for preventing the user from
- moving to a particular button when using the keyboard. For example, if the
- dialog window has OK and Cancel push buttons, they should be in the same group,
- with the OK push button as the first item in the group. The user can press Tab
- to select the OK push button but not the Cancel push button. To move to the
- Cancel button using the keyboard, the user first must press the Tab key to move
- to the OK push button, and then press a direction key to move the focus to the
- Cancel push button.
-
-
- ΓòÉΓòÉΓòÉ 23.1.4. Message Boxes ΓòÉΓòÉΓòÉ
-
- Message boxes are dialog windows predefined by the system and used as a simple
- interface for applications, without the necessity of creating dialog-template
- resources or dialog procedures. An application can call the WinMessageBox
- function and specify the type of message box and message text. The system
- displays the message and waits for the user to dismiss the message box by
- selecting a button in the message box. The system then returns a result code
- to the application, indicating which button the user selected.
-
- Message boxes are best for short notification messages that require a simple
- acknowledgment or choice by the user. Applications do not specify a dialog
- procedure for message boxes so they cannot readily change the action of a
- message box. However, there is no need to do so, since there are many
- predefined message-box styles. The following figure shows a sample message box.
-
- Example of a Message Box Message boxes are always modal-either
- application-modal or system-modal. Application-modal (the default style) means
- that the user cannot activate another window in the current application before
- responding to the message box but can switch to another application before
- responding. System-modal means that the user cannot activate another window in
- any application before responding to the message box. A system-modal message
- box should be used only to display urgent error messages (running out of
- memory, for example).
-
-
- ΓòÉΓòÉΓòÉ 23.1.5. Dialog Data Structures ΓòÉΓòÉΓòÉ
-
- Each item in a dialog window is described by a DLGTITEM data structure. This
- structure is rarely accessed directly by an application, since system functions
- handle most of the manipulation of dialog items. Applications that create
- dialog items that are not defined as part of a dialog-template resource must
- create dialog-window-item structures in memory.
-
- A dialog window can have many items, so applications can use another structure,
- DLGTEMPLATE, to define the items. This structure consists of header
- information, followed by an array of dialog-window items. Applications that
- create dialog windows without using dialog resources must create a dialog
- template in memory, and, then, call the WinCreateDlg function.
-
-
- ΓòÉΓòÉΓòÉ 23.1.6. Dialog Resources ΓòÉΓòÉΓòÉ
-
- Most applications define dialog templates in resource files rather than
- constructing template data structures in memory at run time. The dialog
- resource file defines the size and style of the dialog-window frame and
- specifies each dialog item.
-
- The dimensions and position of each dialog item are specified in dialog
- coordinates, which are based on the size of the system font. A horizontal unit
- is one-fourth the average width of the characters in the system font; a
- vertical unit is one-eighth the average height of the characters in the system
- font. The origin of the dialog template is the lower-left corner of the dialog
- window. The operating system provides the WinMapDlgPoints function for
- converting dialog coordinates into window coordinates.
-
-
- ΓòÉΓòÉΓòÉ 23.2. Using Message Boxes and Dialog Windows ΓòÉΓòÉΓòÉ
-
- The simplest dialog window is the message box. Most message boxes present
- simple messages and offer the user one, two, or three responses (represented by
- buttons). A message box is easy to use and is appropriate when an application
- requires a clearly defined response to a static message. However, message
- boxes lack flexibility in size and placement on the screen and are limited in
- the choices they offer the user. Applications that require more control over
- size, position, and content should use regular dialog windows instead of
- message boxes.
-
-
- ΓòÉΓòÉΓòÉ 23.2.1. Creating a Message Box ΓòÉΓòÉΓòÉ
-
- There are three parts to a message box: the icon, the message, and buttons.
- Applications specify the icons and buttons by using message-box style
- constants. Message text is specified by a null-terminated string.
-
- To create a message box, the application calls the WinMessageBox function,
- which displays the message box and processes user input until the user selects
- a button in the message box. The WinMessageBox return value indicates which
- button the user selected.
-
- The following code fragment illustrates how to create a message box with a
- default Yes button, a No button, and a question-mark (?) icon. This example
- assumes that you have defined a string resource with the MY_MESSAGESTR_ID
- identifier in the resource file.
-
-
- UCHAR szMessageString[255];
- ULONG ulResult;
-
- WinLoadString(hab, (HMODULE) NULL, MY_MESSAGESTR_ID,
- sizeof(szMessageString), szMessageString);
-
- ulResult = WinMessageBox(hwndFrame, /* Parent */
- hwndFrame, /* Owner */
- szMessageString, /* Text */
- (PSZ) NULL, /* caption */
- MY_MESSAGEWIN, /* Window ID */
- MB_YESNO |
- MB_ICONQUESTION |
- MB_DEFBUTTON1); /* Style */
-
- if (ulResult == MBID_YES) {
-
- /* Do yes case. */
-
- } else {
-
- /* Do no case. */
- }
-
- The WinMessageBox function returns predefined values indicating which button
- has been selected. These values are listed in the Presentation Manager
- Programming Reference.
-
- Notice that strings for message boxes should be defined as string resources to
- facilitate program translation for other countries. However, there is danger
- in using string resources in message boxes that are called in low-memory
- situations; loading a string resource in such situations could result in severe
- memory problems and cause an application to fail. One way to prevent this
- problem is to preload the string resource and make it nondiscardable so it will
- be available when the message box must be displayed.
-
-
- ΓòÉΓòÉΓòÉ 23.2.1.1. Creating a System-Modal Message Box ΓòÉΓòÉΓòÉ
-
- There are two levels of modality for system-modal message boxes-soft modal and
- hard modal. A soft-modal message box does not allow keystrokes or mouse input
- to reach any other window but does allow other messages, such as deactivation
- and timer messages, to reach other windows. A hard-modal message box does not
- allow any messages to reach other windows. A hard-model message box is
- appropriate for serious system warnings.
-
- To create a hard-modal message box, combine the MB_ICONHAND style with the
- MB_SYSTEMMODAL style. To create a soft-modal message box, use the
- MB_SYSTEMMODAL style with any style other than MB_ICONHAND. The MB_SYSTEMMODAL
- icon always is in memory and is available even in low-memory situations.
-
-
- ΓòÉΓòÉΓòÉ 23.2.2. Using a Dialog Window ΓòÉΓòÉΓòÉ
-
- When using a dialog window, an application must load the dialog window, process
- user input, and destroy the dialog window when the user finishes the task. The
- process for handling a dialog window varies, depending on whether the dialog
- window is modal or modeless.
-
-
- ΓòÉΓòÉΓòÉ 23.2.2.1. Creating a Dialog Template ΓòÉΓòÉΓòÉ
-
- The following source-code fragment creates a dialog template. Notice that the
- WS_GROUP and WS_TABSTOP style designations are given for the first item in each
- group.
-
-
- DLGTEMPLATE IDD_ABOUT
- BEGIN
- DIALOG "", IDD_ABOUT2,
- 10, 10, 150, 110, FS_DLGBORDER, 0
- BEGIN
- CONTROL "Attributes:",100,
- 10, 30, 100, 70,
- WC_STATIC,
- SS_GROUPBOX | WS_VISIBLE
- CONTROL "Highlighted",101,
- 20, 80, 58, 12,
- WC_BUTTON,
- WS_GROUP | WS_TABSTOP | BS_AUTOCHECKBOX | WS_VISIBLE
- CONTROL "Enabled",102,
- 20, 60, 58, 12,
- WC_BUTTON,
- BS_AUTOCHECKBOX | WS_VISIBLE
- CONTROL "Checked",103,
- 20, 40, 58, 12,
- WC_BUTTON,
- BS_AUTOCHECKBOX | WS_VISIBLE
- CONTROL "Okay", DID_OK,
- 10, 10, 50, 14,
- WC_BUTTON,
- WS_GROUP | WS_TABSTOP | BS_PUSHBUTTON | BS_DEFAULT | WS_VISIBLE
- CONTROL "Cancel", DID_CANCEL,
- 80, 10, 50, 14,
- WC_BUTTON,
- BS_PUSHBUTTON | WS_VISIBLE
- END
- END
-
-
- ΓòÉΓòÉΓòÉ 23.2.2.2. Creating a Modal Dialog Window ΓòÉΓòÉΓòÉ
-
- The easiest way to use a modal dialog window is to define a dialog template in
- the resource file (as in the preceding section), and then, call the WinDlgBox
- function, specifying the dialog-window resource identifier and a pointer to the
- dialog procedure. WinDlgBox loads the dialog-window resource, displays the
- dialog window, and handles all user input until the user dismisses the dialog
- window. The dialog procedure receives messages when the dialog window is
- created (WM_INITDLG) and other messages each time the user interacts with a
- dialog item (enters text in entry fields or selects a button, for example).
-
- You must specify both the parent and owner windows when loading a dialog window
- using the WinDlgBox function. Generally, the parent window will be
- HWND_DESKTOP and the owner will be a client window in your application.
-
- Dialog windows typically contain buttons that send WM_COMMAND messages when
- selected by the user. WM_COMMAND messages passed to the WinDefDlgProc function
- result in the WinDismissDlg function's being called, with the window identifier
- of the source button as the return code (from WinDismissDlg). Dialog windows
- with either OK or Cancel as their only button can ignore WM_COMMAND messages,
- allowing them to be passed to WinDefDlgProc. WinDefDlgProc calls WinDismissDlg
- to dismiss the dialog window and returns the DID_OK or DID_CANCEL code.
-
- Passing WM_COMMAND messages to WinDefDlgProc means that all button presses in
- the dialog window dismiss the dialog window. If you want certain buttons to
- initiate operations without closing the dialog window, or if you want to
- perform some processing without closing the dialog window, handle the
- WM_COMMAND messages in the dialog procedure.
-
- If you handle WM_COMMAND messages in the dialog procedure, you must call
- WinDismissDlg to dismiss the dialog window. Your dialog procedure passes the
- DID_OK code to WinDismissDlg if the user selects the OK button or the
- DID_CANCEL code if the user selects the Cancel button.
-
- When you call WinDismissDlg or pass the WM_COMMAND message to WinDefDlgProc,
- the dialog window is dismissed, and the WinDlgBox function returns the value
- passed to WinDismissDlg. This return value identifies the button selected.
-
- An alternative to using WinDlgBox is to call the individual functions that
- duplicate its functionality, as shown in the following code fragment:
-
- HWND hwndDlg;
- ULONG ulResult;
-
- hwndDlg = WinLoadDlg(...);
- ulResult = WinProcessDlg(hwndDlg);
- WinDestroyWindow(hwndDlg);
-
- After calling the WinProcessDlg function, your dialog procedure must call
- WinDismissDlg to dismiss the dialog window. Although the dialog window is
- dismissed (hidden), it still exists. You must call the WinDestroyWindow
- function to destroy a dialog window if it was loaded using the WinLoadDlg
- function. WinDlgBox automatically destroys a dialog window before returning.
-
- If you want to manipulate individual items in a dialog window, or add a menu
- after loading the dialog window (but before calling WinProcessDlg), it is
- better to make individual calls rather than call WinDlgBox. Individual calls
- also are useful for querying individual dialog items-to determine the contents
- of an entry-field control after a dialog window is closed but before it is
- destroyed, for example. Destroying a dialog window also destroys any
- dialog-item control windows that are child windows of the dialog window.
-
-
- ΓòÉΓòÉΓòÉ 23.2.2.3. Creating a Modeless Dialog Window ΓòÉΓòÉΓòÉ
-
- To use a modeless dialog window in an application, create a dialog template in
- the resource file, just as for a modal dialog window. Modeless dialog windows
- share the screen equally with other frame windows. It is a good idea to give
- modeless dialog windows a title bar so they can be moved around the screen.
- The following Resource Compiler source-code fragment shows a dialog template
- for a dialog window with a title bar, system menu, and minimize button.
-
-
- DLGTEMPLATE IDD_SAMP
- BEGIN
- DIALOG "Modeless Dialog", IDD_SAMP, 80, 92, 126, 130,
- WS_VISIBLE | FS_DLGBORDER,
- FCF_TITLEBAR | FCF_SYSMENU | FCF_MINBUTTON
-
- BEGIN
-
- /* Put control-window definitions here. */
-
- END
- END
-
- The application loads the dialog resource from the resource file using the
- WinLoadDlg function, receiving in return a window handle to the dialog window.
- The application treats the dialog window as if it were an ordinary window.
- Messages for the dialog window are dispatched through the event loop the
- application uses for its other windows. In fact, an application can have a
- modeless dialog window as its only window.
-
- The resource for a modeless dialog window is like the resource used for a modal
- dialog window. The difference between modal and modeless dialog windows is the
- way applications handle input to each. For a modal dialog, the WinDlgBox and
- WinProcessDlg functions handle all user input to the dialog window, preventing
- access to other windows in the application. For a modeless dialog window, the
- application does not call these functions, relying instead on a normal message
- loop to dispatch messages to the dialog procedure.
-
- The primary difference between a modeless dialog window and a standard frame
- window with child control windows is that, for a modeless dialog window, an
- application can define child windows for the dialog window in a dialog
- template, automating the process of creating the window and its child windows.
- The same effect can be achieved by creating a standard frame window, but then,
- the child control windows must be created individually.
-
- It is important that an application keep track of all open modeless dialog
- windows so that it can destroy all open windows before terminating.
-
-
- ΓòÉΓòÉΓòÉ 23.2.2.4. Initializing a Dialog Window ΓòÉΓòÉΓòÉ
-
- Generally, an application defines a dialog template in its resource file and
- loads the dialog window by calling the WinLoadDlg function or the WinDlgBox
- function (which calls WinLoadDlg). The dialog window is created as an
- invisible window unless the window style WS_VISIBLE is specified in the dialog
- template. A WM_INITDLG message is sent to the dialog procedure before
- WinLoadDlg returns. As each control defined in the template is created, the
- dialog procedure might receive various control notifications before the
- function returns. WinLoadDlg returns a handle to the dialog window immediately
- after creating a dialog window.
-
- In general, it is a good idea to define a dialog window as invisible, since
- this allows for optimization. For example, an experienced user might type
- ahead rapidly, anticipating the processing of a dialog-window command. In such
- a case, there is no need to display the dialog window, because the user has
- finished the interaction before the window can be displayed. This is how the
- WinProcessDlg function works-it does not display a dialog window while there
- still are WM_CHAR messages in the input queue; it lets these messages to be
- processed first.
-
- As control windows in a dialog window are created from the template, strings in
- the template are processed by the WinSubstituteStrings function. Any
- WM_SUBSTITUTESTRING messages are sent to the dialog procedure before WinLoadDlg
- returns.
-
- When child windows of a dialog window are created, WinSubstituteStrings is used
- so child windows can make substitutions in their window text. If any
- child-window text string contains the percent sign (%) substitution character,
- the length of the text string is limited to 256 characters after it is returned
- from the substitution.
-
-
- ΓòÉΓòÉΓòÉ 23.2.2.5. Adding a Menu in a Dialog Window ΓòÉΓòÉΓòÉ
-
- To create a menu bar and menus in a dialog window, an application first must
- load the dialog window to get a handle to the dialog-frame window. The
- dialog-frame window can be associated with a menu resource by calling the
- WinLoadMenu function. This function requires arguments that specify the menu
- identifier and the handle of the parent window for the menu. Finally, the
- dialog-frame window must incorporate the menu by sending a WM_UPDATEFRAME
- message to the dialog window. The following code fragment illustrates these
- operations:
-
- HWND hwndDialog, hwndMenu;
-
- /* Get the dialog resource. */
- hwndDialog = WinLoadDlg(...);
-
- / Get the menu resource and attach it to the dialog window. */
- hwndMenu = WinLoadMenu(hwndDialog, ...);
-
- /* Inform the dialog window that it has a new menu. */
- WinSendMsg(hwndDialog, WM_UPDATEFRAME, (MPARAM) NULL, (MPARAM) NULL);
-
- Applications can create menus in both modal and modeless dialog windows. The
- preceding code fragment can be used for either type of dialog window. For a
- modal dialog window, your application must call the WinProcessDlg function to
- handle user input until the dialog window is dismissed. For a modeless dialog
- window, your application must call the WinShowWindow function to display the
- dialog window, enabling the message loop to direct messages to the dialog
- window.
-
-
- ΓòÉΓòÉΓòÉ 23.2.2.6. Creating a Dialog Procedure ΓòÉΓòÉΓòÉ
-
- The main difference between a dialog procedure and a window procedure is that a
- dialog procedure does not receive WM_CREATE messages. Instead, a dialog
- procedure receives WM_INITDLG messages, which are sent after a dialog window is
- created but before it is displayed. WM_INITDLG can do the same type of
- initialization tasks that WM_CREATE handles.
-
- For example, if a dialog window contains a list box, use WM_INITDLG to fill the
- list box with items. Also use this procedure to enable or disable buttons in a
- dialog window, depending on your application.
-
- You also can call the WinSetDlgItemText or WinSetDlgItemShort functions during
- dialog initialization, to set up text items that reflect the current conditions
- in your application.
-
- Another typical task for the WM_INITDLG message handler is centering a dialog
- window on the screen or within its owner window. The following code fragment
- illustrates how to center a dialog window on the screen using WM_INITDLG:
-
- RECTL rclScreen,rclDialog;
- LONG sWidth,sHeight,sBLCx,sBLCy;
-
- case WM_INITDLG:
- /* Center the dialog window and get the screen rectangle. */
- WinQueryWindowRect(HWND_DESKTOP, &rclScreen);
-
- /* Get the dialog-window rectangle. */
- WinQueryWindowRect(hwnd, &rclDialog);
-
- /* Get the dialog-window width. */
- sWidth = (LONG) (rclDialog.xRight - rclDialog.xLeft);
-
- /* Get the dialog-window height. */
- sHeight = (LONG) (rclDialog.yTop - rclDialog.yBottom);
-
- /* Set the horizontal coordinate of the lower-left corner. */
- sBLCx = ((LONG) rclScreen.xRight - sWidth) / 2;
-
- /* Set vertical coordinate of the lower-left corner. */
- sBLCy = ((LONG) rclScreen.yTop - sHeight) / 2;
-
- /* Move, size, and show the window. */
- WinSetWindowPos(hwnd,
- HWND_TOP,
- sBLCx, sBLCy,
- 0, 0, /* Ignores size arguments */
- SWP_MOVE);
-
- return 0;
-
- The dialog procedure receives notification messages from each control-window
- item in a dialog window whenever a user clicks an item or enters text in an
- entry field. Most dialog procedures wait for the user to select one or more
- dialog-window buttons to signal being finished with the dialog window. When
- the dialog procedure receives one of these messages, it calls the WinDismissDlg
- function, as shown in the following code fragment. The second argument to
- WinDismissDlg is the value returned by the WinDlgBox or WinProcessDlg
- functions. Generally, these functions return the identifier of the button that
- was pressed.
-
- MRESULT EXPENTRY SampDialogProc(HWND hwnd,
- ULONG ulMessage,
- MPARAM mp1,
- MPARAM mp2)
- {
- switch (ulMessage) {
- case WM_COMMAND:
- switch (SHORT1FROMMP(mp1)) {
- case DID_OK:
-
- /*
- * Final dialog-item queries,
- * dismiss the dialog.
- */
-
- WinDismissDlg(hwnd, DID_OK);
- return 0;
- }
- break;
- }
- return (WinDefDlgProc(hwnd, ulMessage, mp1, mp2));
- }
-
- Other dialog-window items send notification messages specific to the type of
- control window. Make your dialog procedure respond to notification messages
- from each dialog item. Pass any messages that a dialog procedure does not
- handle to the WinDefDlgProc function for default processing. The default
- dialog procedure is the same as the default frame-window procedure.
-
- The WM_COMMAND message from the OK button indicates that the user has selected
- the OK button and is finished with the dialog window. If the dialog window has
- other controls, such as entry fields or check boxes, have your dialog procedure
- query the contents or state of each control upon receipt of a message from the
- OK button. Before dismissing a dialog window, have your dialog procedure
- collect input from each dialog-window control before closing the dialog window.
-
-
- ΓòÉΓòÉΓòÉ 23.2.2.7. Manipulating Dialog Items ΓòÉΓòÉΓòÉ
-
- Dialog items are control windows and, as such, can be manipulated using
- standard window-management function calls. The window handle is obtained for
- each dialog item by calling the WinWindowFromID function and passing the window
- handle for the dialog window and the window identifier for the dialog item as
- defined in the dialog template. Include the following Resource Compiler
- source-code fragment in your dialog template:
-
-
- DLGTEMPLATE IDD_ABOUT
- BEGIN
- DIALOG "", IDD_ABOUT, 80, 92, 126, 130, FS_DLGBORDER, 0
- BEGIN
- PUSHBUTTON "My Button", ITEMID_MYBUTTON, 37, 107, 56, 12
-
- /* Other item definitions ... */
-
- END
- END
-
- Based on this code fragment, your application will receive the button-item
- handle by initiating the following call to WinWindowFromID:
-
-
- hwndItem = WinWindowFromID(hwndDialog, ITEMID_MYBUTTON);
-
- Applications often change the contents, enabled state, or position of dialog
- items at run time. For example, in a dialog window that contains a list box of
- file names and an Open button, the Open button should be disabled until the
- user selects a file from the list. To do this, define the button as disabled
- in the dialog resource so that it is disabled when the dialog window first is
- displayed. At run time, the dialog procedure receives a notification message
- from the list box when the user selects a file. At that time, the dialog
- procedure should call the WinEnableWindow function to enable the Open button.
-
- Applications also can change the text in static dialog items and buttons by
- calling the WinSetWindowText function and using the window handle of a
- particular dialog item.
-
-
- ΓòÉΓòÉΓòÉ 23.3. Summary ΓòÉΓòÉΓòÉ
-
- Following are the OS/2 functions, structures, and messages used with dialog
- windows.
-
- Dialog Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinAlarm ΓöéGenerates an audible alarm. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinCreateDlg ΓöéCreates a dialog window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDefDlgProc ΓöéInvokes the default dialog Γöé
- Γöé Γöéprocedure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDestroyWindow ΓöéDestroys a window and its child Γöé
- Γöé Γöéwindows. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDismissDlg ΓöéHides the modeless dialog window, orΓöé
- Γöé Γöédestroys the modal dialog window, Γöé
- Γöé Γöéand causes the WinProcessDlg or Γöé
- Γöé ΓöéWinDlgBox calls to return. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDlgBox ΓöéLoads and processes a modal dialog Γöé
- Γöé Γöéwindow and returns the result value Γöé
- Γöé Γöéestablished by the WinDismissDlg Γöé
- Γöé Γöécall. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinEnumDlgItem ΓöéReturns the window handle of a Γöé
- Γöé Γöédialog item within a dialog window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinGetDlgMsg ΓöéObtains a message from the Γöé
- Γöé Γöéapplication's queue associated with Γöé
- Γöé Γöéthe specified dialog. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinLoadDlg ΓöéCreates a dialog window from the Γöé
- Γöé Γöédialog template Dlgid in Resource. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinMapDlgPoints ΓöéMaps points from dialog coordinates Γöé
- Γöé Γöéto window coordinates or from windowΓöé
- Γöé Γöécoordinates to dialog coordinates. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinMessageBox ΓöéCreates, displays, and operates a Γöé
- Γöé Γöémessage box window. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinProcessDlg ΓöéDispatches messages while a modal Γöé
- Γöé Γöédialog window is displayed. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryDlgItemShort ΓöéConverts the text of a dialog item Γöé
- Γöé Γöéinto an integer value. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryDlgItemText ΓöéQueries a text string in a dialog Γöé
- Γöé Γöéitem. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinQueryDlgItemTextLengtΓöéQueries the length of the text Γöé
- Γöé Γöéstring in a dialog item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSendDlgItemMsg ΓöéSends a message to the dialog item Γöé
- Γöé Γöédefined by item in the dialog windowΓöé
- Γöé Γöéspecified by Dlg. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetDlgItemShort ΓöéConverts an integer value into the Γöé
- Γöé Γöétext of a dialog item. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSetDlgItemText ΓöéSets a text string in a dialog item.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinSubstituteStrings ΓöéPerforms a substitution process on aΓöé
- Γöé Γöétext string, replacing specific Γöé
- Γöé Γöémarker characters with text suppliedΓöé
- Γöé Γöéby the application. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Dialog Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDLGTEMPLATE ΓöéDialog-template structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDLGITEM ΓöéDialog-item structure. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Dialog Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_CHAR ΓöéSent when a user presses a key. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_INITDLG ΓöéOccurs when a dialog box is being Γöé
- Γöé Γöécreated Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_QUERYDLGCODE ΓöéSent by the dialog manager to Γöé
- Γöé Γöéidentify the type of control, to Γöé
- Γöé Γöédetermine what kinds of messages theΓöé
- Γöé Γöécontrol understands, and to Γöé
- Γöé Γöédetermine whether an input message Γöé
- Γöé Γöémay be processed by the dialog Γöé
- Γöé Γöémanager or passed down to the Γöé
- Γöé Γöécontrol. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWM_SUBSTITUTESTRING ΓöéSent from the WinSubstituteStrings Γöé
- Γöé Γöécall. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 24. Font Dialog Controls ΓòÉΓòÉΓòÉ
-
- Font dialog controls provide basic functions that give users the ability to
- display and select from a list of:
-
- o Font family names installed on the system
- o Available styles for each font
- o Available sizes for each font
- o Emphasis styles available for each font.
-
- Users can view their selections, using a sample character string in a preview
- area, and interact with a modal or modeless font dialog. This chapter explains
- how font dialog controls can be extended to meet the requirements of PM
- applications.
-
-
- ΓòÉΓòÉΓòÉ 24.1. About the Font Dialog Control ΓòÉΓòÉΓòÉ
-
- In the font dialog control, family face is defined as the name of the typeface.
- The following figure is an example of a font dialog.
-
- Font Dialog Courier, Times New Roman, and Helvetica are examples of commonly
- used family faces. Type styles include normal, bold, italic, and bold italic.
- Size is the point size, or vertical measurement, of the type. Font emphasis
- styles include outline, underline, and strikeout.
-
-
- ΓòÉΓòÉΓòÉ 24.2. Creating a Font Dialog ΓòÉΓòÉΓòÉ
-
- To present a font dialog to users, your application must do the following:
-
- 1. Allocate storage for a FONTDLG structure and set all fields to NULL.
-
- 2. Initialize the fields in the FONTDLG structure.
-
- The application must:
-
- a. Set the cbSize field to the size of the structure.
-
- b. Set either the hpsScreen or the hpsPrinter presentation space field, or
- both. You must have a valid presentation space from which to query
- fonts.
-
- c. Pass the pointer to a buffer in which to return the family name selected
- (pszFamilyname) and the size of the buffer (usFamilyBufLen). If the
- application requires a default font, pass the family name of the font in
- this buffer.
-
- The application can choose to set the following:
-
- a. An application-specific title. Pass the pointer to a null-terminated
- string in the pszTitle field.
-
- b. An application-specific preview string. Pass the pointer to a
- null-terminated string in the pszPreview field.
-
- c. Application-specific available font sizes for outline fonts. Pass the
- pointer to a null-terminated string containing point sizes, separated by
- spaces in the pszPtSizeList field.
-
- d. A custom dialog procedure to provide application-specific function.
- Pass the pointer to a window procedure in the pfnDlgProc field.
-
- e. Set the appropriate FNTS_* flags in the fl field to customize the dialog
- style. See the description of this field for the FONTDLG structure in
- the OS/2 2.0 Programming Reference for a list of the flags you can
- specify.
-
- f. Set the FNTF_NOVIEWPRINTERFONTS or FNTF_NOVIEWSCREENFONTS flags to
- customize the dialog style when working with printer fonts in the
- flFlags field. These filter flags should be initialized only when both
- the hpsScreen and the hpsPrinter presentation space fields are non-NULL.
-
- g. Pass the initial position of the dialog in the x and y fields.
-
- 3. Initialize the FONTDLG structure with any values that users should see when
- they invoke the dialog for the first time. For example, you can:
-
- a. Pass the characteristics of the default font in the usWeight, usWidth,
- flType, and sNominalPointSize fields.
-
- b. Pass any display options of the default font in the flStyle field.
-
- c. Pass the color options for displaying the font sample in the clrFore and
- clrBack fields.
-
- 4. Invoke the font dialog. Call the WinFontDlg function and pass the dialog's
- parent window handle, owner window handle, and a pointer to the initialized
- FONTDLG structure.
-
- 5. Check the return value from the WinFontDlg function. If it is successful,
- the selected font can be used by the application. The information returned
- in the fAttrs field of the FONTDLG structure is used.
-
-
- ΓòÉΓòÉΓòÉ 24.3. Graphical User Interface Support for the Font Dialog ΓòÉΓòÉΓòÉ
-
- This section contains information about the graphical user interface support.
-
-
- ΓòÉΓòÉΓòÉ 24.3.1. Name Field ΓòÉΓòÉΓòÉ
-
- The Name field is a drop-down list that displays a font family name. When the
- font dialog is invoked, the value displayed in this field is either an
- application-supplied family name or the default system font.
-
- When users select a family name from the drop-down list, the Name field display
- is refreshed with the selected family name. The preview area is updated to
- show the sample character string in the selected family face, using the font
- style, size, and emphasis currently in effect.
-
-
- ΓòÉΓòÉΓòÉ 24.3.2. Style Field ΓòÉΓòÉΓòÉ
-
- The Style field is a drop-down list that displays a font style. When the font
- dialog is invoked, the value displayed in this field is either an
- application-specified font style or the system default.
-
- When users select a font style from the drop-down list, the Style field display
- is refreshed with the selected style name. The preview area is updated to show
- the sample character string in the selected font style, using the family name,
- size, and emphasis currently in effect.
-
-
- ΓòÉΓòÉΓòÉ 24.3.3. Size Field ΓòÉΓòÉΓòÉ
-
- The Size field is a drop-down combination box that displays available font
- sizes. Users can display and select from a list of available sizes for a font,
- or they can type a font size directly into the entry field.
-
- When users select a font size from the drop-down list, the Size field display
- is refreshed with the selected size. The preview area is updated to show the
- character string in the selected font size, using the family name, font style,
- and emphasis currently in effect.
-
- The font sizes included in the drop-down list are dependent on the character
- definition of the font. For image or raster fonts, all available sizes are
- listed. For outline fonts, the default sizes are 8, 10, 12, 14, 18, and 24
- points. If required, the application can specify the available sizes for
- outline fonts.
-
- When users type a font size in the entry field, the preview area is updated
- immediately. The Size field will accept a fixed point number, such as 24.25,
- with up to four places saved after the decimal.
-
-
- ΓòÉΓòÉΓòÉ 24.3.4. Emphasis Group Box ΓòÉΓòÉΓòÉ
-
- The Emphasis group box is a multiple-selection field that contains a list of
- emphasis styles (Outline, Underline, Strikeout) available for each font.
-
- When users select an emphasis style, the preview area is updated immediately.
- The Outline selection is not available for image fonts.
-
-
- ΓòÉΓòÉΓòÉ 24.3.5. Preview Area ΓòÉΓòÉΓòÉ
-
- The Preview area enables users to view their font family, style, size and
- emphasis selections as they make them. It contains a sample character string
- that is defined by the application. The default character string is abcdABCD.
- The Preview area displays font sizes as large as 48 points. As the size of the
- font increases, the sample displayed is clipped by the borders of the area.
-
-
- ΓòÉΓòÉΓòÉ 24.3.6. Filter Check Box ΓòÉΓòÉΓòÉ
-
- The Filter check box enables users to limit the font family name drop-down list
- to select from fonts that are displayable only, printable only, or a merged
- list. The initial setting of the Filter check box is specified by the
- application.
-
-
- ΓòÉΓòÉΓòÉ 24.3.7. Standard Push button and Default Action ΓòÉΓòÉΓòÉ
-
- The dialog can be dismissed with either the OK or Cancel push buttons.
-
-
- ΓòÉΓòÉΓòÉ 24.4. Customizing the Font Dialog ΓòÉΓòÉΓòÉ
-
- You can create a font dialog by customizing the font dialog control, using the
- minimum set of standard controls and adding any controls of your own design.
- Specify a standard control by including a control of the same class, ID, and
- style as in the font dialog. The minimum set of controls required for the font
- dialog are: DID_NAME, DID_STYLE, DID_DISPLAY_FILTER, DID_PRINTER_FILTER,
- DID_SIZE, DID_SAMPLE, DID_OUTLINE, DID_UNDERSCORE, DID_STRIKEOUT,
- DID_OK_BUTTON, DID_CANCEL_BUTTON.
-
- Even if your dialog does not use all of the required controls, you must include
- them. You can make the unused controls invisible so that your application
- users are not confused.
-
-
- ΓòÉΓòÉΓòÉ 24.5. Summary ΓòÉΓòÉΓòÉ
-
- The following tables describe the OS/2 structures, messages, functions, and
- controls in the standard font dialog:
-
- Font Dialog Structures
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéStructure Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFONTDLG ΓöéFont-dialog structure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéSTYLECHANGE ΓöéStyle-change structure returned by Γöé
- Γöé Γöéthe FNTM_STYLECHANGED message. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Font Dialog Messages
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéMessage Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFNTM_FACENAMECHANGED ΓöéNotifies the subclassing applicationΓöé
- Γöé Γöéwhenever the font family name is Γöé
- Γöé Γöéchanged by the user. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFNTM_FILTERLIST ΓöéSent whenever the font dialog is Γöé
- Γöé Γöépreparing to add a font family name,Γöé
- Γöé Γöéfont style type, or point size entryΓöé
- Γöé Γöéto the combination box fields that Γöé
- Γöé Γöécontain these parameters. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFNTM_POINTSIZECHANGED ΓöéNotifies subclassing applications Γöé
- Γöé Γöéwhen the point size of the font is Γöé
- Γöé Γöéchanged by the user. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFNTM_STYLECHANGED ΓöéNotifies subclassing applications Γöé
- Γöé Γöéwhen the user changes any of the Γöé
- Γöé Γöéattributes in the STYLECHANGE Γöé
- Γöé Γöéstructure. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéFNTM_UPDATEPREVIEW ΓöéNotifies subclassing applications Γöé
- Γöé Γöébefore the preview window is Γöé
- Γöé Γöéupdated. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Font Dialog Functions
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéFunction Name ΓöéDescription Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinDefFontDlgProc ΓöéThe default dialog procedure for theΓöé
- Γöé Γöéfont dialog. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéWinFontDlg ΓöéAllows the user to select a font. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
- Standard Font Dialog Controls
-
- ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
- ΓöéControl Name ΓöéID ΓöéClass/Style ΓöéRemarks Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_OK_BUTTON ΓöéDID_OK ΓöéWC_BUTTON, ΓöéButton Γöé
- Γöé Γöé ΓöéBS_PUSHBUTTON| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéBS_DEFAULT| Γöéas an OK pushΓöé
- Γöé Γöé ΓöéWS_GROUP| Γöébutton. Γöé
- Γöé Γöé ΓöéWS_TABSTOP| Γöé Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_CANCEL_BUTTON ΓöéDID_CANCELΓöéWC_BUTTON, ΓöéButton Γöé
- Γöé Γöé ΓöéBS_PUSHBUTTON| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéas a Cancel Γöé
- Γöé Γöé Γöé Γöépush button. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_FONT_DIALOG Γöé300 ΓöéDIALOG, ΓöéDialog Γöé
- Γöé Γöé ΓöéFS_NOBYTEALIGN| Γöécontrol ID. Γöé
- Γöé Γöé ΓöéFS_DLGBORDER| Γöé Γöé
- Γöé Γöé ΓöéFS_BORDER| Γöé Γöé
- Γöé Γöé ΓöéWS_CLIPSIBLINGS| Γöé Γöé
- Γöé Γöé ΓöéWS_SAVEBITS, Γöé Γöé
- Γöé Γöé ΓöéFCF_SYSMENU| Γöé Γöé
- Γöé Γöé ΓöéFCF_TITLEBAR Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_NAME Γöé301 ΓöéWC_COMBOBOX, ΓöéCombination Γöé
- Γöé Γöé ΓöéCBS_DROPDOWNLIST| Γöébox control. Γöé
- Γöé Γöé ΓöéWS_TABSTOP| ΓöéUsed to Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöédisplay and Γöé
- Γöé Γöé Γöé Γöéselect font Γöé
- Γöé Γöé Γöé Γöéfamily names.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_STYLE Γöé302 ΓöéWC_COMBOBOX, ΓöéCombination Γöé
- Γöé Γöé ΓöéCBS_DROPDOWNLIST| Γöébox control. Γöé
- Γöé Γöé ΓöéWS_TABSTOP| ΓöéUsed to Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöédisplay and Γöé
- Γöé Γöé Γöé Γöéselect font Γöé
- Γöé Γöé Γöé Γöéstyle names. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_DISPLAY_FILTER Γöé303 ΓöéWC_BUTTON, ΓöéButton Γöé
- Γöé Γöé ΓöéBS_AUTOCHECKBOX| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéWS_TABSTOP| Γöéto filter theΓöé
- Γöé Γöé ΓöéWS_GROUP| ΓöéFont Name Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéfield. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_PRINTER_FILTER Γöé304 ΓöéWC_BUTTON, ΓöéButton Γöé
- Γöé Γöé ΓöéBS_AUTOCHECKBOX| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéWS_TABSTOP| Γöéto filter theΓöé
- Γöé Γöé ΓöéWS_VISIBLE ΓöéFont Name Γöé
- Γöé Γöé Γöé Γöéfield. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_SIZE Γöé305 ΓöéWC_COMBOBOX ΓöéCombination Γöé
- Γöé Γöé ΓöéCBS_DROPDOWN| Γöébox control. Γöé
- Γöé Γöé ΓöéWS_TABSTOP| ΓöéUsed to Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöédisplay, Γöé
- Γöé Γöé Γöé Γöéselect, and Γöé
- Γöé Γöé Γöé Γöéenter the Γöé
- Γöé Γöé Γöé Γöétype size of Γöé
- Γöé Γöé Γöé Γöéthe selected Γöé
- Γöé Γöé Γöé Γöéfont. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_SAMPLE Γöé306 ΓöéWC_STATIC, ΓöéStatic text Γöé
- Γöé Γöé ΓöéSS_TEXT| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéDT_CENTER| Γöéto display Γöé
- Γöé Γöé ΓöéDT_VCENTER| Γöéthe preview Γöé
- Γöé Γöé ΓöéWS_GROUP| Γöéstring in theΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéselected Γöé
- Γöé Γöé Γöé Γöéfont. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_OUTLINE Γöé307 ΓöéWC_BUTTON, ΓöéCheck box Γöé
- Γöé Γöé ΓöéBS_AUTOCHECKBOX| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéWS_TABSTOP| Γöéto select theΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéoutline Γöé
- Γöé Γöé Γöé Γöéemphasis of Γöé
- Γöé Γöé Γöé Γöéthe selected Γöé
- Γöé Γöé Γöé Γöéfont. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_UNDERSCORE Γöé308 ΓöéWC_BUTTON, ΓöéCheck box Γöé
- Γöé Γöé ΓöéBS_AUTOCHECKBOX| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéto select theΓöé
- Γöé Γöé Γöé Γöéunderscore Γöé
- Γöé Γöé Γöé Γöéemphasis of Γöé
- Γöé Γöé Γöé Γöéthe selected Γöé
- Γöé Γöé Γöé Γöéfont. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_STRIKEOUT Γöé309 ΓöéWC_BUTTON, ΓöéCheck box Γöé
- Γöé Γöé ΓöéBS_AUTOCHECKBOX| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéto select Γöé
- Γöé Γöé Γöé Γöéstrikeout Γöé
- Γöé Γöé Γöé Γöéemphasis of Γöé
- Γöé Γöé Γöé Γöéthe selected Γöé
- Γöé Γöé Γöé Γöéfont. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_HELP_BUTTON Γöé310 ΓöéWC_BUTTON, ΓöéButton Γöé
- Γöé Γöé ΓöéBS_PUSHBUTTON| Γöécontrol. UsedΓöé
- Γöé Γöé ΓöéBS_HELP| Γöéto request Γöé
- Γöé Γöé ΓöéBS_NOPOINTERFOCUS|Γöéhelp from theΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéapplication. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_APPLY_BUTTON Γöé311 ΓöéWC_BUTTON, ΓöéButton Γöé
- Γöé Γöé ΓöéBS_PUSHBUTTON| Γöécontrol Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéprovided by Γöé
- Γöé Γöé Γöé Γöéthe Γöé
- Γöé Γöé Γöé Γöéapplication. Γöé
- Γöé Γöé Γöé ΓöéUsed as an Γöé
- Γöé Γöé Γöé ΓöéApply push Γöé
- Γöé Γöé Γöé Γöébutton in Γöé
- Γöé Γöé Γöé Γöémodeless Γöé
- Γöé Γöé Γöé Γöéapplications.Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_RESET_BUTTON Γöé312 ΓöéWC_BUTTON, ΓöéButton Γöé
- Γöé Γöé ΓöéBS_PUSHBUTTON| Γöécontrol Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéprovided by Γöé
- Γöé Γöé Γöé Γöéthe Γöé
- Γöé Γöé Γöé Γöéapplication. Γöé
- Γöé Γöé Γöé ΓöéUsed as a Γöé
- Γöé Γöé Γöé ΓöéReset push Γöé
- Γöé Γöé Γöé Γöébutton. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_NAME_PREFIX Γöé313 ΓöéWC_STATIC, ΓöéStatic text Γöé
- Γöé Γöé ΓöéSS_TEXT| DT_LEFT| Γöécontrol. Γöé
- Γöé Γöé ΓöéDT_TOP| WS_GROUP| ΓöéLabel for theΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéfont Family Γöé
- Γöé Γöé Γöé ΓöéName field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_STYLE_PREFIX Γöé314 ΓöéWC_STATIC, ΓöéStatic text Γöé
- Γöé Γöé ΓöéSS_TEXT| DT_LEFT| Γöécontrol. Γöé
- Γöé Γöé ΓöéDT_TOP| WS_GROUP| ΓöéLabel for theΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéfont Style Γöé
- Γöé Γöé Γöé ΓöéName field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_SIZE_PREFIX Γöé315 ΓöéWC_STATIC, ΓöéStatic text Γöé
- Γöé Γöé ΓöéSS_TEXT| DT_LEFT| Γöécontrol. Γöé
- Γöé Γöé ΓöéDT_TOP| WS_GROUP| ΓöéLabel for theΓöé
- Γöé Γöé ΓöéWS_VISIBLE Γöéfont Type Γöé
- Γöé Γöé Γöé ΓöéSize field. Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_SAMPLE_GROUPBOX Γöé316 ΓöéWC_STATIC, ΓöéGroup box Γöé
- Γöé Γöé ΓöéSS_GROUPBOX| Γöéaround a Γöé
- Γöé Γöé ΓöéWS_GROUP| Γöésample field.Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöé Γöé
- Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
- ΓöéDID_EMPHASIS_GROUPBOXΓöé317 ΓöéWC_STATIC, ΓöéGroup box Γöé
- Γöé Γöé ΓöéSS_GROUPBOX| Γöéaround the Γöé
- Γöé Γöé ΓöéWS_GROUP| Γöéemphasis Γöé
- Γöé Γöé ΓöéWS_VISIBLE Γöécheck boxes. Γöé
- ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
-
-
- ΓòÉΓòÉΓòÉ 25. File Dialog Controls ΓòÉΓòÉΓòÉ
-
- File dialog controls provide basic functions that enable users to do the
- following:
-
- o Display and select from a list of drives, directories, and files.
- o Enter a file name directly.
- o Filter the file names before they are displayed.
- o Display active network connections.
- o Specify .TYPE EA extended attributes.
- o Interact with a single-selection or multiple-selection file dialog.
- o Interact with a modal or modeless file dialog.
-
- These basic functions can be extended to meet the requirements of PM
- applications.
-
-
- ΓòÉΓòÉΓòÉ 25.1. About File Dialogs ΓòÉΓòÉΓòÉ
-
- The file dialog control enables you to implement Open or SaveAs dialogs. The
- following figures illustrate these two dialogs.
-
- Open Dialog
-
- SaveAs Dialog
-
-
- ΓòÉΓòÉΓòÉ 25.2. Creating a File Dialog ΓòÉΓòÉΓòÉ
-
- To present a file dialog to users, your application must do the following:
-
- 1. Allocate storage for a FILEDLG structure and set all fields to NULL.
- 2. Initialize the fields in the FILEDLG structure.
-
- The application must do the following:
-
- a. Set the cbSize field to the size of the structure.
-
- b. Set the fl field to indicate the type of dialog. You must set the
- FDS_OPEN_DIALOG or FDS_SAVEAS_DIALOG flags.
-
- The application can set the following:
-
- a. An application-specific title. Pass the pointer to a null-terminated
- string in the pszTitle field.
-
- b. Application-specific text for the OK push button. Pass the pointer to a
- null-terminated string in the pszOKButton field.
-
- c. Specify a custom dialog procedure to provide application-specific
- function. Pass the pointer to a window procedure in the pfnDlgProc
- field.
-
- d. Set other FDS_* flags in the fl field to customize the dialog style.
- See the description of this field for the FILEDLG structure in the OS/2
- 2.0 Programming Reference for a list of the flags you can specify.
-
- e. Pass the initial position of the dialog in the x and y fields.
-
- 3. Initialize the FILEDLG structure with any values that users should see when
- they invoke the dialog for the first time. For example, you can:
-
-