SHDoneButton

A version of this page is also available for

Windows Embedded CE 6.0 R3

4/8/2010

This function is provided for applications that need to dynamically show or hide the OK button based on the state of the application.

Syntax

BOOL SHDoneButton(
  HWND hwndRequester,
  DWORD dwState
);

Parameters

  • hwndRequester
    [in] Handle to the top-level window requesting the Done button.
  • dwState
    [in] Specifies the button state. The following table shows the possible states values for this parameter.

    State Description

    SHDB_SHOW

    Adds WS_EX_CAPTIONOKBTN to hwndRequester. Next time this window becomes the foreground window, the Done button will appear. Note that hwndRequester cannot be set to the WS_CAPTION style. For more information on WS_EX_CAPTIONOKBTN and WS_CAPTION, see Non-client Area Styles.

    SHDB_HIDE

    Removes the WS_EX_CAPTIONOKBTN from hwndRequester. The Done button will not appear the next time this window becomes the foreground window.

    SHDB_SHOWCANCEL

    Enables the Cancel [x] button to have cancel semantics. SHDB_SHOWCANCEL shows the [x] button but makes it send a WM_COMMAND or IDCANCEL when pressed.

Return Value

This function returns TRUE if it is successful and FALSE if it fails.

Remarks

Typically, the Done button is managed by the shell, and showing or hiding the OK button happens automatically. A top-level window that needs the Done button to appear should use the WS_EX_CAPTIONOKBTN window style.

To make the OK button appear, ensure that your window does not have either the WS_CAPTION or WS_CHILD styles.

Whenever the foreground window changes, the shell checks the style bits of the window to determine if the OK button should appear in the taskbar. The OK button takes precedence over a menu bar added to the taskbar.

To suppress the OK button, use the WS_NONAVDONEBUTTON style.

Typically, the Done button (the OK button that appears in the upper-right corner of the screen) is managed by the shell, and showing or hiding the OK button happens automatically. A top-level window that needs the Done button to appear should use the following window styles:

  • Must have WS_EX_CAPTIONOKBTN
  • Must not have WS_CAPTION
    WS_CHILD

Note

WS_CAPTION is defined as (WS_BORDER WS_DLGFRAME). To make the OK button appear, you must ensure that your window does not have either of these styles.

Whenever the foreground window changes, the shell checks the style bits of the window to determine if the OK button should appear in the navigation bar.

To suppress the OK button, use the WS_NONAVDONEBUTTON style.

Code Example

The following code example demonstrates how to use SHDoneButton.

Note

To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.

// Show or hide a window's Done button.
BOOL SHDoneButtonExample(HWND hWnd, BOOL fShow) 
{
    if (fShow)
    {
        // Show the Done button when the window moves to the foreground.
        return SHDoneButton(hWnd, SHDB_SHOW);
    }
    else
    {
        // Hide the Done button when the window moves from the foreground.
        return SHDoneButton(hWnd, SHDB_HIDE);
    }
}

Requirements

Header aygshell.h
Library aygshell.lib
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Pocket PC 2000 and later, Smartphone 2002 and later

See Also

Concepts

Window and Message Box Styles