overview.hlp (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
Using Title-Bar Controls (1.2)
About Section  Message Group                      Up Next Previous
────────────────────────────────────────────────────────────────────────────
 
                          Using Title-Bar Controls
 
Typically, you need not be too concerned with the title-bar control. The
default behavior of the title-bar control follows the standard
user-interface guidelines. Most applications allow the title-bar control to
operate according to these guidelines.
 
To include a title-bar control in a standard frame window, the application
must compare (by using the OR operator) constants representing each control
type and pass the resulting value to the WinCreateStdWindow function. The
following code fragment shows the creation of a standard frame window with a
title bar, a minimum-maximum control, a size border, a System menu, and an
application menu. (The System menu and application menu are considered frame
controls. For more information about frame controls, see the topic
Frame windows.)
 
ULONG lControlStyle = FCF_TITLEBAR | FCF_SIZEBORDER |  FCF_MINMAX |
    FCF_SYSMENU | FCF_MENU;
 
hwndFrame = WinCreateStdWindow (HWND_DESKTOP,
    WS_VISIBLE | FS_ACCELTABLE,
    &lControlStyle,
    szClassName,
    szClassName,
    0L, NULL,
    ID_MENU_RESOURCE,
    &hwndClient);
 
Once the frame controls are in place in the frame window, most applications
can ignore them. The system handles the frame controls. In some cases, the
application may take control of the title bar by sending messages to the
title-bar control window.
 
To get the window handle of a title-bar control in a frame window, the
application calls the WinWindowFromID function with the frame-window handle
and a constant identifying the title-bar control, as shown in the following
code:
 
hwndTitleBar = WinWindowFromID(hwndFrame, FID_TITLEBAR);
 
To change the text of a title bar, the application sets the window text of
the frame window by calling the WinSetWindowText function. The frame window
passes the message to the title bar. This changes the title-bar text.
 
Altering Dragging Action
 
When the user clicks in the title-bar control, the title bar sends a
WM_TRACKFRAME message to its owner (the frame window). The frame window also
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, you must subclass the frame window and intercept the
WM_QUERYTRACKINFO message and modify the TRACKINFO structure. If you return
TRUE for the WM_QUERYTRACKINFO message, the tracking information proceeds
according to the information in the TRACKINFO structure. If you return
FALSE, no tracking occurs.
 
Default Title-Bar Behavior
 
This section describes all the messages specifically handled by the
predefined title-bar control class.
 
Message               Description
────────────────────────────────────────────────────────────────────────────
WM_CREATE             Sets the window text for the control. Return FALSE if
                      creation succeeds.
 
WM_DESTROY            Frees the window text for the control.
 
WM_QUERYWINDOWPARAMS  Returns the requested window parameters.
 
WM_SETWINDOWPARAMS    Sets the specified window parameters.
 
WM_PAINT              Draws the title bar.
 
WM_HITTEST            Always returns HT_NORMAL, so the title bar does not
                      beep when it is disabled (it is disabled when the
                      frame window is maximized).
 
WM_BUTTON1DOWN        Sends the WM_TRACKFRAME message to the owner
                      (typically a frame window) to start tracking.
 
WM_BUTTON1DBLCLK      Restores the window if the owner window is minimized
                      or maximized. If the window is neither, maximizes the
                      window.
 
WM_WINDOWPOSCHANGED   Returns FALSE. Process this message to prevent the
                      WinDefWindowProc function from sending the size and
                      show messages.
 
WM_QUERYDLGCODE       Returns the predefined constant DLGC_STATIC. A user
                      cannot use the TAB key to move to this window in a
                      dialog box.
 
TBM_QUERYHILITE       Returns the highlight state of the title bar.
 
TBM_SETHILITE         Sets the highlight state of the title bar, repainting
                      it if the state is changing.
 
 
                                      ♦