sdk-hwV1.3/external/eyesee-mpp/dragonboard/include/V5CDRTP/minigui/ctrl/button.h

690 lines
17 KiB
C
Raw Normal View History

2024-05-07 10:09:20 +00:00
/**
* \file button.h
* \author Wei Yongming <vincent@minigui.org>
* \date 2001/12/29
*
\verbatim
This file is part of MiniGUI, a mature cross-platform windowing
and Graphics User Interface (GUI) support system for embedded systems
and smart IoT devices.
Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
Copyright (C) 1998~2002, WEI Yongming
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Or,
As this program is a library, any link to this program must follow
GNU General Public License version 3 (GPLv3). If you cannot accept
GPLv3, you need to be licensed from FMSoft.
If you have got a commercial license of this program, please use it
under the terms and conditions of the commercial license.
For more information about the commercial license, please refer to
<http://www.minigui.com/en/about/licensing-policy/>.
\endverbatim
*/
/*
* $Id: button.h 10690 2008-08-18 09:32:47Z weiym $
*
* MiniGUI for Linux/uClinux, eCos, uC/OS-II, VxWorks,
* pSOS, ThreadX, NuCleus, OSE, and Win32.
*/
#ifndef _MGUI_CTRL_BUTTON_H
#define _MGUI_CTRL_BUTTON_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* \addtogroup controls
* @{
*/
/**
* \defgroup ctrl_button Button control
* @{
*/
/**
* \def BTN_WIDTH_BORDER
* \brief The width of button border.
*/
#define BTN_WIDTH_BORDER 4
/**
* \def CTRL_BUTTON
* \brief The class name of button control.
*/
#define CTRL_BUTTON ("button")
/**
* \defgroup ctrl_button_styles Styles of button control
* @{
*/
/**
* \def BS_PUSHBUTTON
* \brief Creates a push button that is a pane that displays
* either a piece of text or an image and when it is pressed it performs an
* action.
*/
#define BS_PUSHBUTTON 0x00000000L
/**
* \def BS_DEFPUSHBUTTON
* \brief Creates a push button that behaves like a BS_PUSHBUTTON style button.
* Creates a push button that behaves like a BS_PUSHBUTTON style button,
* but also has a heavy black border. If the button is in a dialog box,
* the user can select the button by pressing the enter key,
* even when the button does not have the input focus.
* This style is useful for enabling the user to quickly select
* the most likely (default) option.
*/
#define BS_DEFPUSHBUTTON 0x00000001L
/**
* \def BS_CHECKBOX
* \brief Creates a check button is a button that can be either selected
* or deselected, and its selection is independent of the selections of
* any other buttons.
*
* By default, the text is displayed to the right of the check box.
* To display the text to the left of the check box, combine this flag
* with the BS_LEFTTEXT style (or with the equivalent BS_RIGHTBUTTON style).
*/
#define BS_CHECKBOX 0x00000002L
/**
* \def BS_AUTOCHECKBOX
* \brief Creates a button that is almost the same as a check box.
*
* Creates a button that is the same as a check box,
* except that the check state automatically toggles between
* checked and unchecked each time the user selects the check box.
*/
#define BS_AUTOCHECKBOX 0x00000003L
/**
* \def BS_RADIOBUTTON
* \brief Creates a radio button that can be either selected
* or deselected, but when selecting it any other buttons in
* its group will be cleared.
*
* By default, the text is displayed to the right of the circle.
* To display the text to the left of the circle, combine this flag
* with the BS_LEFTTEXT style (or with the equivalent BS_RIGHTBUTTON style).
* Use radio buttons for groups of related, but mutually exclusive choices.
*/
#define BS_RADIOBUTTON 0x00000004L
/**
* \def BS_AUTORADIOBUTTON
* \brief Creates a button that is almost the same as a radio button.
*
* Creates a button that is the same as a radio button,
* except that when the user selects it, The system automatically
* sets the button's check state to checked
* and automatically sets the check state for all other buttons
* in the same group to unchecked.
*/
#define BS_AUTORADIOBUTTON 0x00000005L
/**
* \def BS_3STATE
* \brief Creates a button that is almost the same as a check box.
*
* Creates a button that is the same as a check box, except
* that the box can be grayed as well as checked or unchecked.
* Use the grayed state to show that the state of the check box
* is not determined.
*/
#define BS_3STATE 0x00000006L
/**
* \def BS_AUTO3STATE
* \brief Creates a button that is almost the same as a three-state check box.
*
* Creates a button that is the same as a three-state check box,
* except that the box changes its state when the user selects it.
* The state cycles through checked, grayed, and unchecked.
*/
#define BS_AUTO3STATE 0x00000007L
/* Not use */
#define BS_GROUPBOX 0x00000008L
/* Not use */
#define BS_USERBUTTON 0x00000009L
/**
* \def BS_OWNERDRAW
* \brief Creates an owner-drawn button.
*
* \note Not implemented so far.
*/
#define BS_OWNERDRAW 0x0000000AL
/**
* \def BS_TYPEMASK
* \brief The type mask of style of button.
*/
#define BS_TYPEMASK 0x0000000FL
/**
* \def BS_TEXT
* \brief Specifies that the button displays text.
*/
#define BS_TEXT 0x00000000L
/**
* \def BS_LEFTTEXT
* \brief Places text on the left side.
*
* Places text on the left side of the radio button
* or check box when combined with a radio button or check box style.
*/
#define BS_LEFTTEXT 0x00000020L
/**
* \def BS_ICON
* \brief Specifies that the button displays an icon.
*/
#define BS_ICON 0x00000040L
/**
* \def BS_BITMAP
* \brief Specifies that the button displays a bitmap.
*/
#define BS_BITMAP 0x00000080L
/**
* \def BS_CONTENTMASK
* \brief The content mask of style of button.
*/
#define BS_CONTENTMASK 0x000000F0L
/**
* \def BS_LEFT
* \brief Left-justifies the text in the button rectangle.
*
* However, if the button is a check box or radio button that
* does not have the BS_RIGHTBUTTON style, the text is left
* justified on the right side of the check box or radio button.
*/
#define BS_LEFT 0x00000100L
/**
* \def BS_RIGHT
* \brief Right-justifies text in the button rectangle.
*
* However, if the button is a check box or radio button that
* does not have the BS_RIGHTBUTTON style, the text is
* right justified on the right side of the check box or radio button.
*/
#define BS_RIGHT 0x00000200L
/**
* \def BS_CENTER
* \brief Centers text horizontally in the button rectangle.
*/
#define BS_CENTER 0x00000300L
/**
* \def BS_TOP
* \brief Places text at the top of the button rectangle.
*/
#define BS_TOP 0x00000400L
/**
* \def BS_BOTTOM
* \brief Places text at the bottom of the button rectangle.
*/
#define BS_BOTTOM 0x00000800L
/**
* \def BS_VCENTER
* \brief Places text in the middle (vertically) of the button rectangle.
*/
#define BS_VCENTER 0x00000C00L
/**
* \def BS_REALSIZEIMAGE
* \brief Does not scale the image.
*/
#define BS_REALSIZEIMAGE 0x00000F00L
/**
* \def BS_ALIGNMASK
* \brief The alignment mask of style of button.
*/
#define BS_ALIGNMASK 0x00000F00L
/**
* \def BS_PUSHLIKE
* \brief Makes a button look and act like a push button.
*
* Makes a button (such as a check box, three-state check box, or radio button)
* look and act like a push button. The button looks raised when it isn't
* pushed or checked, and sunken when it is pushed or checked.
*/
#define BS_PUSHLIKE 0x00001000L
/**
* \def BS_MULTLINE
* \brief Wraps the button text to multiple lines.
*
* Wraps the button text to multiple lines if the text string is
* too long to fit on a single line in the button rectangle.
*/
#define BS_MULTLINE 0x00002000L
/**
* \def BS_NOTIFY
* \brief Enables a button to send notification messages to its parent window.
*/
#define BS_NOTIFY 0x00004000L
/**
* \def BS_CHECKED
* \brief Makes a button checked initially.
*/
#define BS_CHECKED 0x00004000L
/**
* \def BS_FLAT
* \brief The flat style of button.
*/
#define BS_FLAT 0x00008000L
/**
* \def BS_NOBORDER
* \brief The no border style of button.
*/
#define BS_NOBORDER 0x00010000L
/**
* \def BS_RIGHTBUTTON
* \brief The right style of button.
* \sa BS_LEFTTEXT
*/
#define BS_RIGHTBUTTON BS_LEFTTEXT
/** @} end of ctrl_button_styles */
/**
* \defgroup ctrl_button_states States of button control
* @{
*/
/**
* \def BST_POSE_MASK
* \brief The pose(normal, hilite, pushed and disable) mask of
* status of button.
*/
#define BST_POSE_MASK 0x0003
/**
* \def BST_NORMAL
* \brief Specifies the normal state.
*/
#define BST_NORMAL 0x0000
/**
* \def BST_HILITE
* \brief Specifies the hilite state.
*/
#define BST_HILITE 0x0001
/**
* \def BST_PUSHED
* \brief Specifies the pushed state.
*/
#define BST_PUSHED 0x0002
/**
* \def BST_DISABLE
* \brief Specifies the disable state.
*/
#define BST_DISABLE 0x0003
/**
* \def BST_CHECK_MASK
* \brief The check(unchecked, checked and indeterminate) mask of
* status of button.
*/
#define BST_CHECK_MASK 0x000c
/**
* \def BST_UNCHECKED
* \brief Indicates the button is unchecked.
*/
#define BST_UNCHECKED 0x0000
/**
* \def BST_CHECKED
* \brief Indicates the button is checked.
*/
#define BST_CHECKED 0x0004
/**
* \def BST_INDETERMINATE
* \brief Indicates the button is grayed because
* the state of the button is indeterminate.
*/
#define BST_INDETERMINATE 0x0008
/**
* \def BST_FOCUS
* \brief Specifies the focus state.
*/
#define BST_FOCUS 0x0010
/** @} end of ctrl_button_states */
/**
* \defgroup ctrl_button_msgs Messages of button control
* @{
*/
/**
* \def BM_GETCHECK
* \brief Retrieves the check state of a radio button or check box.
*
* An application sends a BM_GETCHECK message to retrieve
* the check state of a radio button or check box.
*
* \code
* BM_GETCHECK
* wParam = 0;
* lParam = 0;
* \endcode
*
* \returns An integer indicates whether the button is checked.
*
* \retval BST_UNCHECKED The button is not checked.
* \retval BST_CHECKED The button is checked.
* \retval BST_INDETERMINATE The button is grayed because the state of the button is indeterminate.
*
* \sa ctrl_button_states
*/
#define BM_GETCHECK 0xF0F0
/**
* \def BM_SETCHECK
* \brief Sets the check state of a radio button or check box.
*
* An application sends a BM_SETCHECK message to set
* the check state of a radio button or check box.
*
* \code
* BM_SETCHECK
* int check_state;
*
* wParam = (WPARAM)check_state;
* lParam = 0;
* \endcode
*
* \param check_state The check state of button, can be one of the following values:
* - BST_UNCHECKED\n
* Want the button to be unchecked.
* - BST_CHECKED\n
* Want the button to be checked.
* - BST_INDETERMINATE\n
* Want the button to be grayed if it is a three states button.
* \returns The old button state.
*/
#define BM_SETCHECK 0xF0F1
/**
* \def BM_GETSTATE
* \brief Gets the state of a button or check box.
*
* An application sends a BM_GETSTATE message to
* determine the state of a button or check box.
*
* \code
* BM_GETSTATE
* wParam = 0;
* lParam = 0;
* \endcode
*
* \returns An integer indicates the button state.
*
* \sa ctrl_button_states
*/
#define BM_GETSTATE 0xF0F2
/**
* \def BM_SETSTATE
* \brief Sets the state of a button.
*
* An application sends a BM_SETSTATE message to set the state of a
* button.
*
* \code
* BM_SETSTATE
* int push_state;
*
* wParam = (WPARAM)push_state;
* lParam = 0;
* \endcode
*
* \param push_state The push state of a button, can be one of the following values:
* - Zero\n
* Want the button to be unpushed.
* - Non zero\n
* Want the button to be pushed.
*
* \returns The old button state.
*/
#define BM_SETSTATE 0xF0F3
/**
* \def BM_SETSTYLE
* \brief Changes the style of a button.
*
* An application sends a BM_SETSTYLE message to change the style of a button.
*
* \code
* BM_SETSTYLE
* int button_style;
*
* wParam = (WPARAM)button_style;
* lParam = 0;
* \endcode
*
* \param button_style The styles of a button.
*
* \returns Always be zero.
*
* \sa ctrl_button_styles
*/
#define BM_SETSTYLE 0xF0F4
/**
* \def BM_CLICK
* \brief Simulates the user clicking a button.
*
* An application sends a BM_CLICK message to simulate the user clicking a button.
*
* \code
* BM_CLICK
*
* wParam = 0;
* lParam = 0;
* \endcode
*/
#define BM_CLICK 0xF0F5
/**
* \def BM_ENABLE
* \brief enable or disable the button.
*If it is disabled, it can receive mouse and key messages
*but don't response them
*
* \code
* BM_CLICK
*
* wParam = (BOOL)enable;
* lParam = 0;
* \endcode
* \param enable TRUE--enable the button
* FALSE--disable the button.
* \returns Always be zero.
*/
#define BM_ENABLE 0xF0F6
/**
* \def BM_GETIMAGE
* \brief Retrieves the handle to the image.
*
* An application sends a BM_GETIMAGE message to
* retrieve a handle to the image (icon or bitmap) associated with the button.
*
* \code
* BM_GETIMAGE
* int image_type;
*
* wParam = (WPARAM)&image_type;
* lParam = 0;
* \endcode
*
* \param image_type The type of a button image will be returned through this buferr.
* It can be one of the following values:
* - BM_IMAGE_BITMAP\n
* Bitmap of a button.
* - BM_IMAGE_ICON\n
* Icon of a button.
*
* \returns A handle of the bitmap or icon of the button, zero when error.
*/
#define BM_GETIMAGE 0xF0F7
#define BM_IMAGE_BITMAP 1
#define BM_IMAGE_ICON 2
/**
* \def BM_SETIMAGE
* \brief Associates a new image (icon or bitmap) with the button.
*
* An application sends a BM_SETIMAGE message to
* associate a new image (icon or bitmap) with the button.
*
* Please use BM_IMAGE_BITMAP or BM_IMAGE_ICON as the first parameter of the message
* to indicate the type of button control image:
* - BM_IMAGE_BITMAP\n
* Specifies the type of image to associate with the button to be a bitmap.
* - BM_IMAGE_ICON\n
* Specifies the type of image to associate with the button to be an icon.
*/
#define BM_SETIMAGE 0xF0F8
#define BM_MSGMAX 0xF100
/** @} end of ctrl_button_msgs */
/**
* \defgroup ctrl_button_ncs Notification codes of button control
* @{
*/
/**
* \def BN_CLICKED
* \brief The BN_CLICKED notification message is sent when the user clicks a button.
*/
#define BN_CLICKED 0
#define BN_DOUBLECLICKED 1
/**
* \def BN_DBLCLK
* \brief The BN_DBLCLK notification message is sent when the user double-clicks a button.
*/
#define BN_DBLCLK BN_DOUBLECLICKED
/**
* \def BN_HILITE
* \brief The BN_HILITE notification message is sent when the user hilite a button
* (the user moves the mouse onto it)
*/
#define BN_HILITE 2
/**
* \def BN_UNHILITE
* \brief The BN_UNHILITE notification message is sent when the user unhilite a button,
* (the user moves the mouse leaving it)
*/
#define BN_UNHILITE 3
/**
* \def BN_PUSHED
* \brief The BN_PUSHED notification message is sent when the user pushes a button.
*/
#define BN_PUSHED 4
/**
* \def BN_UNPUSHED
* \brief The BN_UNPUSHED notification message is sent when the user unpushes a button.
*/
#define BN_UNPUSHED 5
/**
* \def BN_DISABLE
* \brief The BN_DISABLE notification message is sent when the user disables a button.
* (the user sends BM_ENABLE(wParam == FALSE) to it)
*/
#define BN_DISABLE 6
/**
* \def BN_ENABLE
* \brief The BN_DISABLE notification message is sent when the user disables a button.
* (the user sends BM_ENABLE(wParam == TRUE) to it)
*/
#define BN_ENABLE 7
/**
* \def BN_SETFOCUS
* \brief The BN_SETFOCUS notification message is sent when a button receives the keyboard focus.
*/
#define BN_SETFOCUS 8
/**
* \def BN_KILLFOCUS
* \brief The BN_KILLFOCUS notification message is sent when a button loses the keyboard focus.
*/
#define BN_KILLFOCUS 9
#define BN_PAINT 10 /* not supported */
/** @} end of ctrl_button_ncs */
/** @} end of ctrl_button */
/** @} end of controls */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _MGUI_CTRL_BUTTON_H */