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

408 lines
10 KiB
C
Executable File

/**
* \file newtoolbar.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: newtoolbar.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_NEWTOOLBAR_H
#define _MGUI_CTRL_NEWTOOLBAR_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* \addtogroup controls
* @{
*/
/**
* \defgroup ctrl_newtoolbar NewToolBar control
*
* \note You should pass information of the control through
* the argument \a dwAddData of \a CreateWindowEx function.
*
* \code
* NTBINFO ntb_info;
*
* CreateWindowEx (CTRL_TOOLBAR, ..., (DWORD) &ntb_info);
* \endcode
*
* \sa NTBINFO
*
* @{
*/
/**
* \def CTRL_NEWTOOLBAR
* \brief The class name of newtoolbar control.
*/
#define CTRL_NEWTOOLBAR ("newtoolbar")
/** Structure of the newtoolbar control information */
typedef struct _NTBINFO
{
/** Images for displaying tool bar item. */
PBITMAP image;
/** Number of bitmap cells in the image. */
int nr_cells;
/**
* Number of cell columns in the image.
* It should be one of the following values:
* - 0, 4\n
* Four rows, the cells have normal, highlight, pushed, and disabled states.
* - 1\n
* The cells have only normal state.
* - 2\n
* The cells have normal and highlight states.
* - 3\n
* The cells have normal, highlight, and pushed states.
*/
int nr_cols;
/**
* Width of bitmap cell. If w_cell is zero, it will be
* equal to (width_of_image / nr_cols).
*/
int w_cell;
/**
* Height of bitmap cell. If h_cell is zero, it will be
* equal to (height_of_image / nr_cells).
*/
int h_cell;
} NTBINFO;
/**
* \var typedef void (* HOTSPOTPROC)(HWND hwnd, int id, const RECT* cell, int x, int y)
* \brief Type of the hotspot-clicked callback procedure.
*
* \param hwnd The handle to the control.
* \param id The identifier of the button in the NewToolBar control.
* \param cell The rectangle of the button in screen coordinates.
* \param x The x-coordinate of the mouse down point.
* \param y THe y-coordinate of the mouse down point.
*/
typedef void (* HOTSPOTPROC)(HWND hwnd, int id, const RECT* cell, int x, int y);
/* Internal */
#define NTB_TEXT_LEN 15
/* Internal */
#define NTB_TIP_LEN 255
#define NTBIF_PUSHBUTTON 0x0001
#define NTBIF_HOTSPOTBUTTON 0x0002
#define NTBIF_SEPARATOR 0x0003
#define NTBIF_CHECKBUTTON 0x0005
#define NTBIF_NEWLINE 0x0008
#define NTBIF_TYPEMASK 0x000F
/**
* \def NTBIF_DISABLED
* \brief The item is disabled.
*/
#define NTBIF_DISABLED 0x0010
/**
* \def NTBIF_CHECKED
* \brief The item is checked.
*/
#define NTBIF_CHECKED 0x0020
#define MTB_WHICH_FLAGS 0x0001
#define MTB_WHICH_ID 0x0002
#define MTB_WHICH_TEXT 0x0004
#define MTB_WHICH_TIP 0x0008
#define MTB_WHICH_CELL 0x0010
#define MTB_WHICH_HOTSPOT 0x0020
#define MTB_WHICH_ADDDATA 0x0040
/** Structure of the new toolbar item info */
typedef struct _NTBITEMINFO
{
/**
* Which fields are valid when sets/retrives the item information
* (ignored when add item). It can be OR'd with the following values:
*
* - MTB_WHICH_FLAGS\n The flags is valid.
* - MTB_WHICH_ID\n The identifier is valid.
* - MTB_WHICH_TEXT\n The text is valid.
* - MTB_WHICH_TIP\n The tip text is valid.
* - MTB_WHICH_CELL\n The bitmap cell index is valid.
* - MTB_WHICH_HOTSPOT\n The hotspot rect is valid.
* - MTB_WHICH_ADDDATA\n The additional data is valid.
*/
DWORD which;
/**
* Flags of the item. It can be OR'd with the following values:
*
* - NTBIF_PUSHBUTTON\n The item is a normal push button.
* - NTBIF_CHECKBUTTON\n The item is a normal check button.
* - NTBIF_NEWLINE\n The item is a newline tag.
* - NTBIF_HOTSPOTBUTTON\n The item is a menu button with hotspot.
* - NTBIF_SEPARATOR\n The item is a separator.
* - NTBIF_DISABLED\n The item is disabled.
*/
DWORD flags;
/**
* Identifier of the item. When the user clicked the item, this control
* will send a notification message to the parent window
* with the notification code to be equal to this identifier.
*/
int id;
/**
* Text of the item. This text will be displayed under the bitmap
* if the control have NTBS_WITHTEXT style.
*/
char* text;
/** Tooltip of the item, not used, reserved. */
char* tip;
/** Index of bitmap cell. */
int bmp_cell;
/** Hotpot-clicked callback procedure for menubutton. */
HOTSPOTPROC hotspot_proc;
/** Rectangle region of hotspot in the cell. */
RECT rc_hotspot;
/** Additional data of the item */
DWORD add_data;
} NTBITEMINFO;
/**
* \var PNTBITEMINFO
* \brief Data type of pointer to a NTBITEMINFO;
*/
typedef NTBITEMINFO* PNTBITEMINFO;
/**
* \defgroup ctrl_newtoolbar_styles Styles of NewToolBar control
* @{
*/
/**
* \def NTBS_WITHTEXT
* \brief Displays text with the item bitmap.
*/
#define NTBS_WITHTEXT 0x000000001L
/**
* \def NTBS_TEXTRIGHT
* \brief Displays text at the right side of the item bitmap.
*/
#define NTBS_TEXTRIGHT 0x000000002L
/**
* \def NTBS_DRAWSTATES
* \brief Draws the button states with 3D frame, and does not
* use the highlight, pushed and disabled bitmap cell.
*/
#define NTBS_DRAWSTATES 0x000000004L
/**
* \def NTBS_DRAWSEPARATOR
* \brief Draws the separator bar.
*/
#define NTBS_DRAWSEPARATOR 0x000000008L
/**
* \def NTBS_HORIZONTAL
* \brief The NewToolbar will be displayed horizontally.
*/
#define NTBS_HORIZONTAL 0x00000000L
/**
* \def NTBS_VERTICAL
* \brief The NewToolbar will be displayed vertically.
*/
#define NTBS_VERTICAL 0x00000010L
/**
*
* \def NTBS_MULTLINE
* \brief The Newtoolbar item will be displayed in several lines.
* In this style , your should define the toolbar RECT in CreateWindwEx.
*/
#define NTBS_MULTLINE 0x00000020L
/** @} end of ctrl_newtoolbar_styles */
/**
* \defgroup ctrl_newtoolbar_msgs Messages of NewToolBar control
* @{
*/
/** Newtoolbar return value */
#define NTB_OKAY 0
/** Newtoolbar return value */
#define NTB_ERR (-1)
/** Newtoolbar return value */
#define NTB_ERR_SPACE (-2)
/** Newtoolbar return value */
#define NTB_ERR_DUPID (-3)
/**
* \def NTBM_ADDITEM
* \brief Adds an item to a newtoolbar.
*
* \code
* NTBM_ADDITEM
* NTBITEMINFO *ntbii;
*
* wParam = 0;
* lParam = (LPARAM)ntbii;
* \endcode
*
* \param ntbii Pointer to the data storing the newtoobar item info.
*
* \return NTB_OKAY on success, else one of the following values:
* - NTB_ERR_SPACE\n No enongh space to allocate memory for new item.
* - NTB_ERR_DUPID\n Duplicated identifier with an existed item.
*/
#define NTBM_ADDITEM 0xFE00
/**
* \def NTBM_GETITEM
* \brief Retrives the information of an item in a newtoolbar control.
*
* \code
* NTBM_GETITEM
* int id;
* NTBITEMINFO *ntbii;
*
* wParam = id;
* lParam = (LPARAM)ntbii;
* \endcode
*
* \param id The identifier of the item.
* \param ntbii Pointer to the data storing the newtoobar item info.
*
* \return NTB_OKAY on success, else NTB_ERR.
*/
#define NTBM_GETITEM 0xFE01
/**
* \def NTBM_SETITEM
* \brief Sets the information of an item in a newtoolbar control.
*
* \code
* NTBM_SETITEM
* int id;
* NTBITEMINFO ntbii;
*
* wParam = id;
* lParam = (LPARAM)&ntbii;
* \endcode
*
* \param id The identifier of the item.
* \param ntbii The structure for storing the newtoobar item info.
*
* \return NTB_OKAY on success, else NTB_ERR.
*/
#define NTBM_SETITEM 0xFE02
/**
* \def NTBM_ENABLEITEM
* \brief Enables/Disables an item in a newtoolbar control.
*
* \code
* NTBM_ENABLEITEM
* int id;
* BOOL enable;
*
* wParam = id;
* lParam = enable;
* \endcode
*
* \param id The identifier of the item.
* \param enable True to enable item; false to disable item.
*
* \return NTB_OKAY on success, else NTB_ERR.
*/
#define NTBM_ENABLEITEM 0xFE03
/**
* \def NTBM_SETBITMAP
* \brief Sets the bitmap of a newtoolbar control.
*
* \code
* NTBM_SETBITMAP
* NTBINFO ntbi;
*
* wParam = 0;
* lParam = (LPARAM)&ntbi;
* \endcode
*
* \param ntbi The structure for storing the newtoobar info.
*
* \return NTB_OKAY on success, else NTB_ERR.
*/
#define NTBM_SETBITMAP 0xFE04
#define NTBM_MSGMAX 0xFE10
/** @} end of ctrl_newtoolbar_msgs */
/** @} end of ctrl_newtoolbar */
/** @} end of controls */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _MGUI_CTRL_NEWTOOLBAR_H */