mirror of
https://github.com/VincentWei/MiniGUI.git
synced 2025-05-09 08:02:40 +08:00
12201 lines
387 KiB
C
12201 lines
387 KiB
C
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// IMPORTANT NOTICE
|
|
//
|
|
// The following open source license statement does not apply to any
|
|
// entity in the Exception List published by FMSoft.
|
|
//
|
|
// For more information, please visit:
|
|
//
|
|
// https://www.fmsoft.cn/exception-list
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* \file window.h
|
|
* \author Wei Yongming <vincent@minigui.org>
|
|
* \date 2002/01/26
|
|
*
|
|
* \brief This file includes windowing interfaces of MiniGUI.
|
|
*
|
|
\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~2020, 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/blog/minigui-licensing-policy/>.
|
|
|
|
\endverbatim
|
|
*/
|
|
|
|
/*
|
|
* $Id: window.h 13674 2010-12-06 06:45:01Z wanzheng $
|
|
*
|
|
* MiniGUI for Linux/uClinux, eCos, uC/OS-II, VxWorks,
|
|
* pSOS, ThreadX, NuCleus, OSE, and Win32.
|
|
*/
|
|
|
|
#ifndef _MGUI_WINDOW_H
|
|
#define _MGUI_WINDOW_H
|
|
|
|
#include "common.h"
|
|
|
|
#include <stddef.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
#include <pthread.h>
|
|
#include <semaphore.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_POLL
|
|
#include <poll.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/**
|
|
* \defgroup msgs Messages
|
|
* @{
|
|
*/
|
|
|
|
/* Definitions of common messages. */
|
|
#define MSG_NULLMSG 0x0000
|
|
#define MSG_SYNCMSG 0x0000
|
|
|
|
/**
|
|
* \defgroup mouse_msgs Mouse event messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 1 from 0x0001 to 0x000F, the mouse messages. */
|
|
#define MSG_FIRSTMOUSEMSG 0x0001
|
|
|
|
/**
|
|
* \def MSG_LBUTTONDOWN
|
|
* \brief Left mouse button down message.
|
|
*
|
|
* This message is posted to the window when the user presses down
|
|
* the left button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_LBUTTONDOWN
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_LBUTTONUP, key_defs
|
|
*
|
|
* Example:
|
|
* \include buttondown.c
|
|
*/
|
|
#define MSG_LBUTTONDOWN 0x0001
|
|
|
|
/**
|
|
* \def MSG_LBUTTONUP
|
|
* \brief Left mouse button up message.
|
|
*
|
|
* This message is posted to the window when the user releases up
|
|
* the left button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_LBUTTONUP
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_LBUTTONDOWN, key_defs
|
|
*/
|
|
#define MSG_LBUTTONUP 0x0002
|
|
|
|
/**
|
|
* \def MSG_LBUTTONDBLCLK
|
|
* \brief Left mouse button double clicked message.
|
|
*
|
|
* This message is posted to the window when the user double clicks
|
|
* the left button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_LBUTTONDBLCLK
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_RBUTTONDBLCLK, key_defs
|
|
*/
|
|
#define MSG_LBUTTONDBLCLK 0x0003
|
|
|
|
/**
|
|
* \def MSG_MOUSEMOVE
|
|
* \brief The mouse moved message.
|
|
*
|
|
* This message is posted to the window when the user moves the mouse
|
|
* in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_MOUSEMOVE
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa key_defs
|
|
*/
|
|
#define MSG_MOUSEMOVE 0x0004
|
|
|
|
/**
|
|
* \def MSG_RBUTTONDOWN
|
|
* \brief Right mouse button down message.
|
|
*
|
|
* This message is posted to the window when the user presses down
|
|
* the right button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_RBUTTONDOWN
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_RBUTTONUP, key_defs
|
|
*
|
|
* Example:
|
|
* \include buttondown.c
|
|
*/
|
|
#define MSG_RBUTTONDOWN 0x0005
|
|
|
|
/**
|
|
* \def MSG_RBUTTONUP
|
|
* \brief Right mouse button up message.
|
|
*
|
|
* This message is posted to the window when the user releases up
|
|
* the right button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_RBUTTONUP
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_RBUTTONDOWN, key_defs
|
|
*/
|
|
#define MSG_RBUTTONUP 0x0006
|
|
|
|
/**
|
|
* \def MSG_RBUTTONDBLCLK
|
|
* \brief Right mouse button double clicked message.
|
|
*
|
|
* This message is posted to the window when the user double clicks
|
|
* the right button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_RBUTTONDBLCLK
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_LBUTTONDBLCLK, key_defs
|
|
*/
|
|
#define MSG_RBUTTONDBLCLK 0x0007
|
|
|
|
/**
|
|
* \def MSG_MBUTTONDOWN
|
|
* \brief Middle mouse button down message.
|
|
*
|
|
* This message is posted to the window when the user presses down
|
|
* the middle button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_MBUTTONDOWN
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_MBUTTONUP, key_defs
|
|
*
|
|
* Since 4.0.0
|
|
*/
|
|
#define MSG_MBUTTONDOWN 0x0008
|
|
|
|
/**
|
|
* \def MSG_MBUTTONUP
|
|
* \brief Middle mouse button up message.
|
|
*
|
|
* This message is posted to the window when the user releases up
|
|
* the middle button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_MBUTTONUP
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_MBUTTONDOWN, key_defs
|
|
*
|
|
* Since 4.0.0
|
|
*/
|
|
#define MSG_MBUTTONUP 0x0009
|
|
|
|
/**
|
|
* \def MSG_MBUTTONDBLCLK
|
|
* \brief Middle mouse button double clicked message.
|
|
*
|
|
* This message is posted to the window when the user double clicks
|
|
* the middle button of the mouse in the client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_MBUTTONDBLCLK
|
|
* DWORD key_flags = (DWORD)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param key_flags The shift key status when this message occurred.
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_LBUTTONDBLCLK, key_defs
|
|
*/
|
|
#define MSG_MBUTTONDBLCLK 0x000A
|
|
|
|
#define MSG_NCMOUSEOFF 0x000A
|
|
|
|
/**
|
|
* \def MSG_NCLBUTTONDOWN
|
|
* \brief Left mouse button down message in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user presses down
|
|
* the left button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCLBUTTONDOWN
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCLBUTTONUP, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCLBUTTONDOWN 0x000B
|
|
|
|
/**
|
|
* \def MSG_NCLBUTTONUP
|
|
* \brief Left mouse button up message in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user releases up
|
|
* the left button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCLBUTTONUP
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCLBUTTONDOWN, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCLBUTTONUP 0x000C
|
|
|
|
/**
|
|
* \def MSG_NCLBUTTONDBLCLK
|
|
* \brief Left mouse button double clicked in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user double clicks
|
|
* the left button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCLBUTTONDBLCLK
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCRBUTTONDBLCLK, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCLBUTTONDBLCLK 0x000D
|
|
|
|
/**
|
|
* \def MSG_NCMOUSEMOVE
|
|
* \brief Mouse moves in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user moves the mouse
|
|
* in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCMOUSEMOVE
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCMOUSEMOVE 0x000E
|
|
|
|
/**
|
|
* \def MSG_NCRBUTTONDOWN
|
|
* \brief Right mouse button down message in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user presses down
|
|
* the right button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCRBUTTONDOWN
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCRBUTTONUP, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCRBUTTONDOWN 0x000F
|
|
|
|
/**
|
|
* \def MSG_NCRBUTTONUP
|
|
* \brief Right mouse button up message in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user releases up
|
|
* the right button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCRBUTTONUP
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCRBUTTONDOWN, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCRBUTTONUP 0x0010
|
|
|
|
/**
|
|
* \def MSG_NCRBUTTONDBLCLK
|
|
* \brief Right mouse button double clicked in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user double clicks
|
|
* the right button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCRBUTTONDBLCLK
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCLBUTTONDBLCLK, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCRBUTTONDBLCLK 0x0011
|
|
|
|
/**
|
|
* \def MSG_NCMBUTTONDOWN
|
|
* \brief Middle mouse button down message in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user presses down
|
|
* the middle button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCMBUTTONDOWN
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCMBUTTONUP, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCMBUTTONDOWN 0x0012
|
|
|
|
/**
|
|
* \def MSG_NCMBUTTONUP
|
|
* \brief Middle mouse button up message in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user releases up
|
|
* the middle button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCMBUTTONUP
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCMBUTTONDOWN, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCMBUTTONUP 0x0013
|
|
|
|
/**
|
|
* \def MSG_NCMBUTTONDBLCLK
|
|
* \brief Middle mouse button double clicked in the non-client area.
|
|
*
|
|
* This message is posted to the window when the user double clicks
|
|
* the middle button of the mouse in the non-client area of the window.
|
|
*
|
|
* \code
|
|
* MSG_NCMBUTTONDBLCLK
|
|
* int hit_code = (int)wParam;
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param hit_code The hit test code which tells the area of the mouse.
|
|
* \param x_pos,y_pos The position of the mouse in window coordinates.
|
|
*
|
|
* \sa MSG_NCLBUTTONDBLCLK, MSG_NCHITTEST
|
|
*/
|
|
#define MSG_NCMBUTTONDBLCLK 0x0014
|
|
|
|
#define MSG_LASTMOUSEMSG 0x0014
|
|
|
|
/** @} end of mouse_msgs */
|
|
|
|
/**
|
|
* \defgroup key_msgs Key event messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 2 from 0x0015 to 0x001F, the key messages. */
|
|
#define MSG_FIRSTKEYMSG 0x0015
|
|
|
|
/**
|
|
* \def MSG_KEYDOWN
|
|
* \brief User presses a key down.
|
|
*
|
|
* This message is posted to the current active window when the user
|
|
* presses a key down.
|
|
*
|
|
* \code
|
|
* MSG_KEYDOWN
|
|
* int scancode = (int)wParam;
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param scancode The scan code of the pressed key.
|
|
* \param key_flags The shift key status when this message occurred.
|
|
*
|
|
* \sa MSG_KEYUP, key_defs
|
|
*
|
|
* Example:
|
|
*
|
|
* \include keydown.c
|
|
*/
|
|
#define MSG_KEYDOWN 0x0015
|
|
|
|
/**
|
|
* \def MSG_CHAR
|
|
* \brief A character translated from MSG_KEYDOWN message.
|
|
*
|
|
* This message is translated from a MSG_KEYDOWN message by \a TranslateMessage
|
|
* and sent to the current active window.
|
|
*
|
|
* \code
|
|
* MSG_CHAR
|
|
* unsigned char ch_buff [4];
|
|
* ch_buff [0] = FIRSTBYTE(wParam);
|
|
* ch_buff [1] = SECONDBYTE(wParam);
|
|
* ch_buff [2] = THIRDBYTE(wParam);
|
|
* ch_buff [3] = FOURTHBYTE(wParam);
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param ch_buff The buffer to store the bytes of the character.
|
|
* \param key_flags The shift key status when this message occurred.
|
|
*
|
|
* \note Please use \a FIRSTBYTE ~ \a FOURTHBYTE to get the bytes
|
|
* if the character is a multi-byte character. Use MSG_UTF8CHAR
|
|
* to handle the characters encoded in UTF-8.
|
|
*
|
|
* \sa MSG_SYSCHAR, TranslateMessage, key_defs
|
|
*/
|
|
#define MSG_CHAR 0x0016
|
|
|
|
/**
|
|
* \def MSG_KEYUP
|
|
* \brief User releases up a key.
|
|
*
|
|
* This message is posted to the current active window when the user
|
|
* releases up a key.
|
|
*
|
|
* \code
|
|
* MSG_KEYUP
|
|
* int scancode = (int)wParam;
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param scancode The scan code of the released key.
|
|
* \param key_flags The shift key status when this message occurred.
|
|
*
|
|
* \sa MSG_KEYDOWN, key_defs
|
|
*/
|
|
#define MSG_KEYUP 0x0017
|
|
|
|
/**
|
|
* \def MSG_SYSKEYDOWN
|
|
* \brief User presses down a key when \<Alt\> key is down.
|
|
*
|
|
* This message is posted to the current active window when the user
|
|
* presses down a key as \<Alt\> key is down.
|
|
*
|
|
* \code
|
|
* MSG_SYSKEYDOWN
|
|
* int scancode = (int)wParam;
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param scancode The scan code of the pressed key.
|
|
* \param key_flags The shift key status when this message occurred.
|
|
*
|
|
* \sa MSG_SYSKEYUP, MSG_SYSCHAR, key_defs
|
|
*/
|
|
#define MSG_SYSKEYDOWN 0x0018
|
|
|
|
/**
|
|
* \def MSG_SYSCHAR
|
|
* \brief A system character translated from MSG_SYSKEYDOWN message.
|
|
*
|
|
* This message is translated from a MSG_SYSKEYDOWN message by
|
|
* \a TranslateMessage and sent to the current active window.
|
|
*
|
|
* \code
|
|
* MSG_SYSCHAR
|
|
* int ch = (int)wParam;
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param ch The ASCII code of the pressed key.
|
|
* \param key_flags The shift key status when this message occurred.
|
|
*
|
|
* \sa MSG_CHAR, TranslateMessage, key_defs
|
|
*/
|
|
#define MSG_SYSCHAR 0x0019
|
|
|
|
/**
|
|
* \def MSG_SYSKEYUP
|
|
* \brief User releases up a key when \<Alt\> key is down.
|
|
*
|
|
* This message is posted to the current active window when the user
|
|
* releases up a key as \<Alt\> key is down.
|
|
*
|
|
* \code
|
|
* MSG_SYSKEYUP
|
|
* int scancode = (int)wParam;
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param scancode The scan code of the released key.
|
|
* \param key_flags The shift key status when this message occurred.
|
|
*
|
|
* \sa MSG_SYSKEYDOWN, key_defs
|
|
*/
|
|
#define MSG_SYSKEYUP 0x001A
|
|
|
|
|
|
/* keyboard longpress supported */
|
|
|
|
/**
|
|
* \def MSG_KEYLONGPRESS
|
|
* \brief A key is long pressed.
|
|
*
|
|
* This message is sent when a key is pressed exceed user-defined long
|
|
* time value.
|
|
*
|
|
* \code
|
|
* MSG_KEYLONGPRESS
|
|
* int scancode = (int)wParam;
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*/
|
|
#define MSG_KEYLONGPRESS 0x001B
|
|
|
|
/**
|
|
* \def MSG_KEYALWAYSPRESS
|
|
* \brief A key is always pressed.
|
|
*
|
|
* This message is sent when a key is pressed to exceed user-defined
|
|
* always time value.
|
|
*
|
|
* \code
|
|
* MSG_KEYLONGPRESS
|
|
* int scancode = (int)wParam;
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
*/
|
|
#define MSG_KEYALWAYSPRESS 0x001C
|
|
|
|
/**
|
|
* \def MSG_KEYSYM
|
|
* \brief A key symbol translated from MSG_KEYDOWN messages.
|
|
*
|
|
* This message is translated from a MSG_KEYDOWN message by
|
|
* \a TranslateMessage and sent to the current active window.
|
|
*
|
|
* Note that one translation may generate a key symbol made by more than one
|
|
* character, e.g., when using default keymap, DEL key will generate the
|
|
* key symbol "^[[3~".
|
|
*
|
|
* \code
|
|
* MSG_KEYSYM
|
|
* int index = HIBYTE (wParam);
|
|
* int keysym = LOBYTE (wParam);
|
|
* DWORD key_flags = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param index The index of the key symbol in one translation,
|
|
* zero for a new translation, and the \a keysym is the first symbol.
|
|
* \param keysym The code of the key symbol.
|
|
* \param key_flags The shift key status when this message occurred.
|
|
*
|
|
* \sa MSG_SYSCHAR, TranslateMessage, key_defs
|
|
*/
|
|
#define MSG_KEYSYM 0x001D
|
|
|
|
/**
|
|
* \def MSG_UTF8CHAR
|
|
* \brief A character translated from MSG_KEYDOWN message.
|
|
*
|
|
* This message generally sent by a IME window to the current active window.
|
|
* The chararcter will be encoded in UTF-8.
|
|
*
|
|
* \code
|
|
* MSG_UTF8CHAR
|
|
* unsigned char ch_utf8 [6];
|
|
* ch_utf8 [0] = FIRSTBYTE(wParam);
|
|
* ch_utf8 [1] = SECONDBYTE(wParam);
|
|
* ch_utf8 [2] = THIRDBYTE(wParam);
|
|
* ch_utf8 [3] = FOURTHBYTE(wParam);
|
|
* ch_utf8 [4] = FIRSTBYTE(lParam);
|
|
* ch_utf8 [5] = SECONDBYTE(lParam);
|
|
* \endcode
|
|
*
|
|
* \param ch_utf8 The buffer to save the character in UTF-8.
|
|
*
|
|
* \sa MSG_CHAR, key_defs
|
|
*/
|
|
#define MSG_UTF8CHAR 0x001E
|
|
|
|
/**
|
|
* \def DEF_LPRESS_TIME
|
|
* \brief Default long pressed time of a key.
|
|
*
|
|
* \sa MSG_KEYLONGPRESS
|
|
*/
|
|
#define DEF_LPRESS_TIME 200
|
|
|
|
/**
|
|
* \def DEF_APRESS_TIME
|
|
* \brief Default always pressed time of a key.
|
|
*
|
|
* \sa MSG_KEYALWAYSPRESS
|
|
*/
|
|
#define DEF_APRESS_TIME 1000
|
|
/**
|
|
* \def DEF_INTERVAL_TIME
|
|
* \brief Default send MSG_KEYLONGPRESS in interval value.
|
|
*
|
|
*/
|
|
#define DEF_INTERVAL_TIME 200
|
|
|
|
extern DWORD __mg_key_longpress_time;
|
|
extern DWORD __mg_key_alwayspress_time;
|
|
extern DWORD __mg_interval_time;
|
|
|
|
/**
|
|
* \def SetKeyLongPressTime(time)
|
|
* \brief User set default long pressed time of a key.
|
|
*/
|
|
#define SetKeyLongPressTime(time) \
|
|
do { \
|
|
__mg_key_longpress_time = time; \
|
|
} while (0)
|
|
|
|
/**
|
|
* \def SetKeyAlwaysPressTime(time)
|
|
* \brief User set default always pressed time of a key.
|
|
*/
|
|
#define SetKeyAlwaysPressTime(time) \
|
|
do { \
|
|
__mg_key_alwayspress_time = time; \
|
|
} while (0)
|
|
|
|
/**
|
|
* \def SetIntervalTime(time)
|
|
* \brief User set default interval time that MSG_KEYLONGPRESS is sent.
|
|
*/
|
|
#define SetIntervalTime(time) \
|
|
do { \
|
|
__mg_interval_time = time; \
|
|
} while (0)
|
|
|
|
#define MSG_LASTKEYMSG 0x001F
|
|
|
|
/** @} end of key_msgs */
|
|
|
|
/**
|
|
* \defgroup post_event_msgs User-machine Interaction messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 3 from 0x0020 to 0x005F, User-machine Interaction messages. */
|
|
#define MSG_FIRSTPOSTMSG 0x0020
|
|
|
|
/**
|
|
* \def MSG_SETCURSOR
|
|
* \brief Set cursor shape in the client area.
|
|
*
|
|
* This message is posted to the window under the cursor when the user moves
|
|
* the mouse in order to give the chance to change the cursor shape.
|
|
* The default handler set the cursor shape to the default cursor of the window.
|
|
* If you set a new cursor shape, your message handler should return
|
|
* immediately.
|
|
*
|
|
* \code
|
|
* MSG_SETCURSOR
|
|
* int cx = LOSWORD (lParam);
|
|
* int cy = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param cx,cy The client coordinates of the cursor.
|
|
*
|
|
* Example:
|
|
*
|
|
* \include setcursor.c
|
|
*
|
|
* \sa MSG_NCSETCURSOR
|
|
*/
|
|
#define MSG_SETCURSOR 0x0020
|
|
|
|
#define HT_MASK 0xFF
|
|
|
|
#define HT_UNKNOWN 0x00
|
|
#define HT_OUT 0x01
|
|
#define HT_MENUBAR 0x02
|
|
#define HT_TRANSPARENT 0x03
|
|
|
|
#define HT_BORDER 0x04
|
|
#define HT_CLIENT 0x0C
|
|
|
|
#define HT_NEEDCAPTURE 0x10
|
|
#define HT_ICON 0x14
|
|
#define HT_CLOSEBUTTON 0x15
|
|
#define HT_MAXBUTTON 0x16
|
|
#define HT_MINBUTTON 0x17
|
|
#define HT_HSCROLL 0x18
|
|
#define HT_VSCROLL 0x19
|
|
|
|
#define HT_DRAGGABLE 0x20
|
|
#define HT_CAPTION 0x20
|
|
|
|
/*indicate cursor at border */
|
|
#define HT_BORDER_MASK 0x28
|
|
#define HT_BORDER_TOP 0x28
|
|
#define HT_BORDER_BOTTOM 0x29
|
|
#define HT_BORDER_LEFT 0x2A
|
|
#define HT_BORDER_RIGHT 0x2B
|
|
|
|
/*indicate cursor at border corner*/
|
|
#define HT_CORNER_MASK 0x2C
|
|
#define HT_CORNER_TL 0x2C
|
|
#define HT_CORNER_TR 0x2D
|
|
#define HT_CORNER_BL 0x2E
|
|
#define HT_CORNER_BR 0x2F
|
|
|
|
/*new scrollbar hittest value
|
|
* can be AND'ed with HT_NEEDCAPTURE*/
|
|
#define HT_SB_MASK 0x50
|
|
|
|
#define HT_SB_LEFTARROW 0x50
|
|
#define HT_SB_RIGHTARROW 0x51
|
|
#define HT_SB_LEFTSPACE 0x52
|
|
#define HT_SB_RIGHTSPACE 0x53
|
|
#define HT_SB_HTHUMB 0x54
|
|
|
|
#define HT_SB_VMASK 0x58
|
|
|
|
#define HT_SB_UPARROW 0x58
|
|
#define HT_SB_DOWNARROW 0x59
|
|
#define HT_SB_UPSPACE 0x5a
|
|
#define HT_SB_DOWNSPACE 0x5b
|
|
#define HT_SB_VTHUMB 0x5c
|
|
|
|
#define HT_SB_UNKNOWN 0x5f
|
|
|
|
/*user defined hittest code are 0x80 ~ 0x8F*/
|
|
#define HT_USER_MASK 0x80
|
|
|
|
|
|
/**
|
|
* \def MSG_NCHITTEST
|
|
* \brief Hit test in non-client area.
|
|
* This is an async message.
|
|
*/
|
|
#define MSG_NCHITTEST 0x0021
|
|
|
|
/**
|
|
* \def MSG_HITTEST
|
|
* \brief Hit test in non-client area.
|
|
*
|
|
* \sa MSG_NCHITTEST
|
|
*/
|
|
#define MSG_HITTEST MSG_NCHITTEST
|
|
|
|
/**
|
|
* \def MSG_CHANGESIZE
|
|
* \brief Change window size.
|
|
*/
|
|
#define MSG_CHANGESIZE 0x0022
|
|
|
|
/* reserved */
|
|
#define MSG_QUERYNCRECT 0x0023
|
|
|
|
/**
|
|
* \def MSG_QUERYCLIENTAREA
|
|
* \brief Query client area.
|
|
*/
|
|
#define MSG_QUERYCLIENTAREA 0x0024
|
|
|
|
/**
|
|
* \def MSG_SIZECHANGING
|
|
* \brief Indicates the size of the window is being changed.
|
|
*
|
|
* This message is sent to the window when the size is being changed.
|
|
* If you want to control the actual position and size of the window when
|
|
* the size is being changed (this may be caused by \a MoveWindow or
|
|
* other functions), you should handle this message, and return the actual
|
|
* position and size of the window through the second parameter.
|
|
*
|
|
* \code
|
|
* MSG_SIZECHANGING
|
|
* const RECT* rcExpect = (const RECT*)wParam;
|
|
* RECT* rcResult = (RECT*)lParam;
|
|
* \endcode
|
|
*
|
|
* \param rcExpect The expected size of the window after changing.
|
|
* \param rcResult The actual size of the window after changing.
|
|
*
|
|
* Example:
|
|
*
|
|
* \include msg_sizechanging.c
|
|
*/
|
|
#define MSG_SIZECHANGING 0x0025
|
|
|
|
/**
|
|
* \def MSG_SIZECHANGED
|
|
* \brief Indicates the size of the window has been changed.
|
|
*
|
|
* This message is sent to the window when the size has been changed.
|
|
* If you want adjust the size of the client area of the window,
|
|
* you should handle this message, change the values of the client area,
|
|
* and return non-zero value to indicate that the client area has been
|
|
* modified.
|
|
*
|
|
* \code
|
|
* MSG_SIZECHANGED
|
|
* RECT* rcClient = (RECT*)lParam;
|
|
* \endcode
|
|
*
|
|
* \param rcClient The pointer to a RECT structure which contains
|
|
* the new client area.
|
|
*
|
|
* Example:
|
|
*
|
|
* \include msg_sizechanged.c
|
|
*/
|
|
#define MSG_SIZECHANGED 0x0026
|
|
|
|
/**
|
|
* \def MSG_CSIZECHANGED
|
|
* \brief Indicates the size of the client area of the window has been changed.
|
|
*
|
|
* This message is sent as a notification to the window when the size of
|
|
* the client area has been changed.
|
|
*
|
|
* \code
|
|
* MSG_CSIZECHANGED
|
|
* int client_width = (int)wParam;
|
|
* int client_height = (int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param client_width The width of the client area.
|
|
* \param client_height The height of the client area.
|
|
*/
|
|
#define MSG_CSIZECHANGED 0x0027
|
|
|
|
/**
|
|
* \def MSG_SETFOCUS
|
|
* \brief Indicates that the window has gained the input focus.
|
|
*
|
|
* \param lparam The parameter passed into used for pass setfocus
|
|
* msg to child control if lparam > 0.
|
|
*
|
|
* This message is sent to the window procedure
|
|
* after the window gains the input focus.
|
|
*/
|
|
#define MSG_SETFOCUS 0x0030
|
|
|
|
/**
|
|
* \def MSG_KILLFOCUS
|
|
* \brief Indicates that the window has lost the input focus.
|
|
*
|
|
* \param lparam The parameter passed into used for pass killfocus
|
|
* msg to child control if lparam > 0.
|
|
*
|
|
* This message is sent to the window procedure
|
|
* after the window losts the input focus.
|
|
*/
|
|
#define MSG_KILLFOCUS 0x0031
|
|
|
|
/**
|
|
* \def MSG_MOUSEACTIVE
|
|
* \brief Indicates that the window has gained the input focus because
|
|
* the user clicked the window.
|
|
*
|
|
* This message is sent to the window procedure
|
|
* after the user clicked the window and it has gained the input focus.
|
|
*/
|
|
#define MSG_MOUSEACTIVE 0x0032
|
|
|
|
/**
|
|
* \def MSG_ACTIVE
|
|
* \brief Indicates that the window has gained the input focus because
|
|
* the user clicked the window.
|
|
*
|
|
* This message is sent to the window procedure
|
|
* after the user clicked the window and it has gained the input focus.
|
|
*/
|
|
#define MSG_ACTIVE 0x0033
|
|
|
|
/**
|
|
* \def MSG_CHILDHIDDEN
|
|
* \brief Hide child window.
|
|
*/
|
|
#define MSG_CHILDHIDDEN 0x0034
|
|
#define RCTM_CLICK 1
|
|
#define RCTM_KEY 2
|
|
#define RCTM_MESSAGE 3
|
|
#define RCTM_SHOWCTRL 4
|
|
|
|
/**
|
|
* \def MSG_ACTIVEMENU
|
|
* \brief Indicates that the user activates the menu bar and tracks it.
|
|
*
|
|
* This message is sent to the window procedure when the user
|
|
* activates the menu bar and tracks it.
|
|
*
|
|
* If you want to change the states of menu items in the submenu
|
|
* before displaying it, you can handle this message.
|
|
*
|
|
* \code
|
|
* MSG_ACTIVEMENU
|
|
* int pos = (int)wParam;
|
|
* HMENU submenu = (HMENU)lParam;
|
|
* \endcode
|
|
*
|
|
* \param pos The position of the activated submenu. The position value of the
|
|
* first submenu is 0.
|
|
* \param submenu The handle to the activated submenu.
|
|
*
|
|
* Example:
|
|
*
|
|
* \include activemenu.c
|
|
*/
|
|
#define MSG_ACTIVEMENU 0x0040
|
|
|
|
/**
|
|
* \def MSG_DEACTIVEMENU
|
|
* \brief Indicates the end of the tracking of a menu bar or a popup menu.
|
|
*
|
|
* This message is sent to the window procedure when the user has
|
|
* closed the tracking menu bar or popup menu.
|
|
*
|
|
* \code
|
|
* MSG_DEACTIVEMENU
|
|
* HMENU menubar = (HMENU)wParam;
|
|
* HMENU submenu = (HMENU)lParam;
|
|
* \endcode
|
|
*
|
|
* \param menubar The handle to the menu bar. It will be zero when the
|
|
* deactivated menu is a popup menu.
|
|
* \param submenu The handle to the submenu.
|
|
*/
|
|
#define MSG_DEACTIVEMENU 0x0041
|
|
|
|
/**
|
|
* \defgroup ctrl_scrollbar_ncs Notification codes of srollbar control
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \def SB_LINEUP
|
|
* \brief The SB_LINEUP notification message is sent when the user clicked
|
|
* the up arrow on the bar.
|
|
*/
|
|
#define SB_LINEUP 0x01a
|
|
|
|
/**
|
|
* \def SB_LINEDOWN
|
|
* \brief The SB_LINEDOWN notification message is sent when the user clicked
|
|
* the down arrow on the bar.
|
|
*/
|
|
#define SB_LINEDOWN 0x02
|
|
|
|
/**
|
|
* \def SB_LINELEFT
|
|
* \brief The SB_LINELEFT notification message is sent when the user clicked
|
|
* the left arrow on the bar.
|
|
*/
|
|
#define SB_LINELEFT 0x03
|
|
|
|
/**
|
|
* \def SB_LINERIGHT
|
|
* \brief The SB_LINERIGHT notification message is sent when the user clicked
|
|
* the right arrow on the bar.
|
|
*/
|
|
#define SB_LINERIGHT 0x04
|
|
|
|
/**
|
|
* \def SB_PAGEUP
|
|
* \brief The SB_PAGEUP notification message is sent when the user clicked
|
|
* the page up area on the bar.
|
|
*/
|
|
#define SB_PAGEUP 0x05
|
|
|
|
/**
|
|
* \def SB_PAGEDOWN
|
|
* \brief The SB_PAGEDOWN notification message is sent when the user clicked
|
|
* the page down area on the bar.
|
|
*/
|
|
#define SB_PAGEDOWN 0x06
|
|
|
|
/**
|
|
* \def SB_PAGELEFT
|
|
* \brief The SB_PAGELEFT notification message is sent when the user clicked
|
|
* the page left area on the bar.
|
|
*/
|
|
#define SB_PAGELEFT 0x07
|
|
|
|
/**
|
|
* \def SB_PAGERIGHT
|
|
* \brief The SB_PAGERIGHT notification message is sent when the user clicked
|
|
* the page right area on the bar.
|
|
*/
|
|
#define SB_PAGERIGHT 0x08
|
|
|
|
/**
|
|
* \def SB_THUMBPOSITION
|
|
* \brief The SB_THUMBPOSITION notification message is sent when the user set
|
|
* a new thumb position.
|
|
*/
|
|
#define SB_THUMBPOSITION 0x09
|
|
|
|
/**
|
|
* \def SB_THUMBTRACK
|
|
* \brief The SB_THUMBTRACK notification message is sent when the user is
|
|
* draging and tracking the thumb.
|
|
*/
|
|
#define SB_THUMBTRACK 0x0A
|
|
|
|
/**
|
|
* \def SB_TOP
|
|
* \brief The SB_TOP notification message is sent when the user move thumb
|
|
* to minimum position
|
|
*/
|
|
#define SB_TOP 0x0B
|
|
|
|
/**
|
|
* \def SB_BOTTOM
|
|
* \brief The SB_BOTTOM notification message is sent when the user move
|
|
* thumb to maximum position
|
|
*/
|
|
#define SB_BOTTOM 0x0C
|
|
|
|
/**
|
|
* \def SB_ENDSCROLL
|
|
* \brief The SB_ENDSCROLL notification message is sent when the thumb at
|
|
* the end of bar
|
|
*/
|
|
#define SB_ENDSCROLL 0x0D
|
|
|
|
/** @} end of ctrl_scrollbar_ncs */
|
|
|
|
/**
|
|
* \def MSG_HSCROLL
|
|
* \brief Indicates that the user has clicked the horizontal scroll bar.
|
|
*
|
|
* This message is sent to the window procedure when the user has clicked
|
|
* the horizontal scroll bar and changed the position of the thumb.
|
|
*
|
|
* \code
|
|
* MSG_HSCROLL
|
|
* int hs_nc = (int)wParam;
|
|
* \endcode
|
|
*
|
|
* \param hs_nc The scrolling code, can be one of the following values:
|
|
* - SB_LINELEFT\n
|
|
* The user clicked the left arrow on the bar.
|
|
* - SB_LINERIGHT\n
|
|
* The user clicked the right arrow on the bar.
|
|
* - SB_PAGELEFT\n
|
|
* The user clicked the left page area on the bar.
|
|
* - SB_PAGERIGHT\n
|
|
* The user clicked the right page area on the bar.
|
|
* - SB_THUMBPOSITION\n
|
|
* The user set a new thumb position.
|
|
* - SB_THUMBTRACK\n
|
|
* The user is draging and tracking the thumb.
|
|
* - SB_ENDSCROLL\n
|
|
* The end of scrolling.
|
|
*/
|
|
#define MSG_HSCROLL 0x0042
|
|
|
|
/**
|
|
* \def MSG_VSCROLL
|
|
* \brief Indicates that the user has clicked the vertical scroll bar.
|
|
*
|
|
* This message is sent to the window procedure when the user has clicked
|
|
* the vertical scroll bar and changed the position of the thumb.
|
|
*
|
|
* \code
|
|
* MSG_HSCROLL
|
|
* int vs_nc = (int)wParam;
|
|
* \endcode
|
|
*
|
|
* \param vs_nc The scrolling code, can be one of the following values:
|
|
* - SB_LINEUP\n
|
|
* The user clicked the up arrow on the bar.
|
|
* - SB_LINEDOWN\n
|
|
* The user clicked the down arrow on the bar.
|
|
* - SB_PAGEUP\n
|
|
* The user clicked the up page area on the bar.
|
|
* - SB_PAGEDOWN\n
|
|
* The user clicked the down page area on the bar.
|
|
* - SB_THUMBPOSITION\n
|
|
* The user set a new thumb position.
|
|
* - SB_THUMBTRACK\n
|
|
* The user is draging and tracking the thumb.
|
|
* - SB_ENDSCROLL\n
|
|
* The end of scrolling.
|
|
*/
|
|
#define MSG_VSCROLL 0x0043
|
|
|
|
/**
|
|
* \def MSG_NCSETCURSOR
|
|
* \brief Set cursor shape in the non-client area.
|
|
*
|
|
* This message is posted to the window under the cursor when the user moves
|
|
* the mouse in order to give the chance to change the cursor shape.
|
|
* The default handler set the cursor shape to the default cursor of the window.
|
|
* If you set a new cursor shape, your message handler should return
|
|
* immediately.
|
|
*
|
|
* \sa MSG_SETCURSOR
|
|
*/
|
|
#define MSG_NCSETCURSOR 0x0044
|
|
|
|
/**
|
|
* \def MSG_MOUSEMOVEIN
|
|
* \brief Indicates the mouse is moved in/out the area of the window.
|
|
*
|
|
* This message is posted to the window when the user moves the mouse
|
|
* in/out the area of the window.
|
|
*
|
|
* \code
|
|
* MSG_MOUSEMOVEIN
|
|
* BOOL in_out = (BOOL)wParam;
|
|
* \endcode
|
|
*
|
|
* \param in_out Indicates whether the mouse has been moved in the window
|
|
* or out the window.
|
|
*/
|
|
#define MSG_MOUSEMOVEIN 0x0050
|
|
|
|
/**
|
|
* \def MSG_WINDOWDROPPED
|
|
* \brief Indicates that user dropped window.
|
|
* server to client; (wParam, lParam): result rectangle.
|
|
*/
|
|
#define MSG_WINDOWDROPPED 0x0051
|
|
|
|
#define MSG_LASTPOSTMSG 0x005F
|
|
|
|
/** @} end of post_event_msgs */
|
|
|
|
/**
|
|
* \defgroup creation_msgs Window creation messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 4 from 0x0060 to 0x007F, the creation messages. */
|
|
#define MSG_FIRSTCREATEMSG 0x0060
|
|
|
|
/**
|
|
* \def MSG_CREATE
|
|
* \brief Indicates the window has been created, and gives you a chance to initialize your private objects.
|
|
*
|
|
* This messages is sent to the window after the window has been created
|
|
* and registered to the system. You can initialize your own objects when
|
|
* you receive this message, and return zero to the system in order to
|
|
* indicates the success of your initialization. If you return non-zero to
|
|
* the system after handled this message, the created window will be
|
|
* destroyed immediately.
|
|
*
|
|
* \code
|
|
* MSG_CREATE for main windows:
|
|
* HWND hosting = (HWND)wParam;
|
|
* PMAINWINCREATE create_info = (PMAINWINCREATE)lParam;
|
|
*
|
|
* MSG_CREATE for virtual windows:
|
|
* HWND hosting = (HWND)wParam;
|
|
* DWORD add_data = (DWORD)lParam;
|
|
*
|
|
* MSG_CREATE for controls:
|
|
* HWND parent = (HWND)wParam;
|
|
* DWORD add_data = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param create_info The pointer to the MAINWINCREATE structure which is
|
|
* passed to CreateMainWindow function.
|
|
* \param hosting The handle to the hosting window of the new main/virtual
|
|
* window.
|
|
* \param parent The handle to the parent window of the new control.
|
|
* \param add_data The first additional data passed to CreateVirtualWindow or
|
|
* CreateWindowEx function.
|
|
*
|
|
* \sa CreateMainWindow, CreateVirtualWindow, CreateWindowEx, MAINWINCREATE
|
|
*/
|
|
#define MSG_CREATE 0x0060
|
|
|
|
/**
|
|
* \def MSG_NCCREATE
|
|
* \brief Indicates the window has been created, but has not registered to
|
|
* the system.
|
|
*
|
|
* This message is sent to the window after the window has been created,
|
|
* but not registered the system. Like MSG_CREATE message, you can
|
|
* initialize your own objects when you receive this message, but can not
|
|
* create child windows of the window, and can not get a device context
|
|
* to paint.
|
|
*
|
|
* If you return non-zero to the system after handled this message,
|
|
* the created window will be destroyed immediately.
|
|
*
|
|
* \code
|
|
* MSG_NCCREATE for main windows:
|
|
* PMAINWINCREATE create_info = (PMAINWINCREATE)lParam;
|
|
*
|
|
* MSG_NCCREATE for controls:
|
|
* DWORD add_data = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param create_info The pointer to the MAINWINCREATE structure which is
|
|
* passed to CreateMainWindow function.
|
|
* \param add_data The first additional data passed to CreateWindowEx function.
|
|
*
|
|
* \sa CreateMainWindow, CreateWindowEx, MAINWINCREATE
|
|
*/
|
|
#define MSG_NCCREATE 0x0061
|
|
|
|
/*Not use*/
|
|
#define MSG_INITPANES 0x0062
|
|
#define MSG_DESTROYPANES 0x0063
|
|
|
|
/**
|
|
* \def MSG_DESTROY
|
|
* \brief Indicates the window will be destroyed.
|
|
*
|
|
* This message is sent to the window when \a DestroyMainWindow
|
|
* or \a DestroyWindow is calling. You can destroy your private objects
|
|
* when receiving this message.
|
|
*
|
|
* If you return non-zero to the system after handle this message, the process
|
|
* of \a DestroyMainWindow and \a DestroyWindow will return immediately.
|
|
*
|
|
* \sa DestroyMainWindow, DestroyWindow
|
|
*/
|
|
#define MSG_DESTROY 0x0064
|
|
|
|
/* Not use */
|
|
#define MSG_NCDESTROY 0x0065
|
|
|
|
/**
|
|
* \def MSG_CLOSE
|
|
* \brief Indicates the user has clicked the closing box on the caption.
|
|
*
|
|
* This message is sent to the window when the user has clicked the closing box
|
|
* on the caption of the window.
|
|
*/
|
|
#define MSG_CLOSE 0x0066
|
|
|
|
/* Not use */
|
|
#define MSG_NCCALCSIZE 0x0067
|
|
|
|
/*
|
|
* Not implemented, this message is reserved for future use.
|
|
*
|
|
* \def MSG_MAXIMIZE
|
|
* \brief Indicates the user has clicked the maximizing box on the caption.
|
|
*
|
|
* This message is sent to the window when the user has clicked the maximizing
|
|
* box on the caption of the window.
|
|
*/
|
|
#define MSG_MAXIMIZE 0x0068
|
|
|
|
/*
|
|
* Not implemented, this message is reserved for future use.
|
|
*
|
|
* \def MSG_MINIMIZE
|
|
* \brief Indicates the user has clicked the minimizing box on the caption.
|
|
*
|
|
* This message is sent to the window when the user has clicked the
|
|
* minimizing box on the caption of the window.
|
|
*/
|
|
#define MSG_MINIMIZE 0x0069
|
|
|
|
/*
|
|
* Not implemented, this message is reserved for future use.
|
|
*
|
|
* \def MSG_HELP
|
|
* \brief Indicates the user has clicked the help box on the caption.
|
|
*
|
|
* This message is sent to the window when the user has clicked the
|
|
* help box on the caption of the window.
|
|
*/
|
|
#define MSG_HELP 0x006A
|
|
|
|
#define MSG_LASTCREATEMSG 0x006F
|
|
|
|
/** @} end of creation_msgs */
|
|
|
|
/**
|
|
* \defgroup extra_input_msgs Extra input messages
|
|
*
|
|
* In addition to the standard keyboard and mouse messages,
|
|
* MiniGUI generates extra input messages for input events from
|
|
* other input devices, including multi-touch panel, tablet pad,
|
|
* joystick, and so on. We call these messages as 'extra input messages'.
|
|
* The messages can be classified the following types:
|
|
*
|
|
* - Axis messages: the messages generated by a pointer axis like mouse wheel.
|
|
* - Button messages: the messages generated by a button on joystick.
|
|
* - Multi-touch messages: the messages generated by a multi-touch panel.
|
|
* - Gesture messages: the gesture messages.
|
|
* - Tablet tool messages: the messages generated by a tablet tool.
|
|
* - Tablet pad messages: the messages generated by a tablet pad.
|
|
* - Switch messages: the messages generated by a switch.
|
|
* - User-defined messages: the messages generated by a user-defined device.
|
|
*
|
|
* Note that the buttons other than left, right, and middle buttons on a mouse
|
|
* will be treated as generic buttons.
|
|
*
|
|
* Since 4.0.0.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/* Group 4 from 0x0070 to 0x009F, the extra input messages. */
|
|
#define MSG_FIRSTEXTRAINPUTMSG 0x0070
|
|
|
|
#define AXIS_SCROLL_INVALID 0
|
|
#define AXIS_SCROLL_VERTICAL 1
|
|
#define AXIS_SCROLL_HORIZONTAL 2
|
|
|
|
#define AXIS_SOURCE_INVALID 0
|
|
#define AXIS_SOURCE_WHEEL 1
|
|
#define AXIS_SOURCE_FINGER 2
|
|
#define AXIS_SOURCE_CONTINUOUS 3
|
|
#define AXIS_SOURCE_WHEEL_TILT 4
|
|
|
|
/**
|
|
* \def MSG_EXIN_AXIS
|
|
* \brief Indicates an axis input event.
|
|
*
|
|
* This message is sent to the active window when the user
|
|
* operates the axis of a pointer device such as a mouse.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_AXIS
|
|
* int scroll = LOSWORD(wParam);
|
|
* int source = HISWORD(wParam);
|
|
* int value = LOSWORD(lParam);
|
|
* int value_discrete = HISWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param scroll one of AXIS_SCROLL_VERTICAL or AXIS_SCROLL_HORIZONTAL
|
|
* \param source one of AXIS_SOURCE_WHEEL, AXIS_SOURCE_FINGER,
|
|
* AXIS_SOURCE_CONTINUOUS, or AXIS_SOURCE_WHEEL_TILT.
|
|
* \param value The axis value.
|
|
* \param value_discrete The axis value in discrete steps.
|
|
*/
|
|
#define MSG_EXIN_AXIS 0x0070
|
|
|
|
/**
|
|
* \def MSG_EXIN_BUTTONDOWN
|
|
* \brief Indicates the user has pressed a button on joystick or
|
|
* other input device.
|
|
*
|
|
* This message is sent to the active window when the user
|
|
* pressed a button on joystick or other input device.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_BUTTONDOWN
|
|
* unsigned int button = (unsigned int)wParam;
|
|
* unsigned int nr_down_btns = (unsigned int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param button The button value. On Linux, the button values are defined
|
|
* in <linux/input-event-codes.h> file, and with `BTN_` prefix.
|
|
* \param nr_down_btns The total number of buttons pressed.
|
|
*/
|
|
#define MSG_EXIN_BUTTONDOWN 0x0071
|
|
|
|
/**
|
|
* \def MSG_EXIN_BUTTONUP
|
|
* \brief Indicates the user has released a button on joystick or
|
|
* other input device.
|
|
*
|
|
* This message is sent to the active window when the user
|
|
* released a button on joystick or other input device.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_BUTTONUP
|
|
* unsigned int button = (unsigned int)wParam;
|
|
* unsigned int nr_down_btns = (unsigned int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param button The button value. On Linux, the button values are defined
|
|
* in <linux/input-event-codes.h> file, and with `BTN_` prefix.
|
|
* \param nr_down_btns The total number of buttons pressed.
|
|
*/
|
|
#define MSG_EXIN_BUTTONUP 0x0072
|
|
|
|
/**
|
|
* \def MSG_EXIN_TOUCH_DOWN
|
|
* \brief Indicates a touch down event.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TOUCH_DOWN
|
|
* int x = LOSWORD(lParam);
|
|
* int y = HISWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param x,y The position of touch.
|
|
*/
|
|
#define MSG_EXIN_TOUCH_DOWN 0x0073
|
|
|
|
/**
|
|
* \def MSG_EXIN_TOUCH_UP
|
|
* \brief Indicates a touch up event.
|
|
*
|
|
* Note that this message has not any parameters.
|
|
*/
|
|
#define MSG_EXIN_TOUCH_UP 0x0074
|
|
|
|
/**
|
|
* \def MSG_EXIN_TOUCH_MOTION
|
|
* \brief Indicates a touch move event.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TOUCH_MOTION
|
|
* int x = LOSWORD(lParam);
|
|
* int y = HISWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param x,y The position of touch.
|
|
*/
|
|
#define MSG_EXIN_TOUCH_MOTION 0x0075
|
|
|
|
/**
|
|
* \def MSG_EXIN_TOUCH_CANCEL
|
|
* \brief Indicates a cancelled touch event.
|
|
*
|
|
* Note that this message has not any parameters.
|
|
*/
|
|
#define MSG_EXIN_TOUCH_CANCEL 0x0076
|
|
|
|
/**
|
|
* \def MSG_EXIN_TOUCH_FRAME
|
|
* \brief Indicates the end of a set of touchpoints at one device sample time.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TOUCH_FRAME
|
|
* int slot = (int)wParam;
|
|
* unsigned int seat_slot = (unsigned int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param slot The slot of the touch event.
|
|
* Please see the Linux kernel's multitouch protocol B documentation
|
|
* for more information. If the touch event has no assigned slot, for example,
|
|
* if it is from a single touch device, slot will be -1.
|
|
* \param seat_slot The seat slot of the touch event.
|
|
* A seat slot is a non-negative seat wide unique identifier
|
|
* of an active touch point.
|
|
*/
|
|
#define MSG_EXIN_TOUCH_FRAME 0x0077
|
|
|
|
#define SWITCH_INVALID 0
|
|
#define SWITCH_LID 1
|
|
#define SWITCH_TABLET_MODE 2
|
|
|
|
#define SWITCH_STATE_INVALID 0
|
|
#define SWITCH_STATE_ON 1
|
|
#define SWITCH_STATE_OFF 2
|
|
|
|
/**
|
|
* \def MSG_EXIN_SWITCH_TOGGLE
|
|
* \brief Indicates the toggle event of a switch.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_SWITCH_TOGGLE
|
|
* int switch_id = wParam;
|
|
* int switch_state = lParam;
|
|
* \endcode
|
|
*
|
|
* \param switch_id The identifier of the switch, one of SWITCH_LID
|
|
* or SWITCH_TABLET_MODE.
|
|
* \param switch_state The state of the switch, one of SWITCH_STATE_ON
|
|
* or SWITCH_STATE_OFF.
|
|
*/
|
|
#define MSG_EXIN_SWITCH_TOGGLE 0x007A
|
|
|
|
/**
|
|
* \def MSG_EXIN_GESTURE_SWIPE_BEGIN
|
|
* \brief Indicates the beginning of a swipe gesture.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_GESTURE_SWIPE_BEGIN
|
|
* int nr_figures = wParam;
|
|
* \endcode
|
|
*
|
|
* \param nr_figures The number of fingers used for the gesture.
|
|
*/
|
|
#define MSG_EXIN_GESTURE_SWIPE_BEGIN 0x0080
|
|
|
|
/**
|
|
* \def MSG_EXIN_GESTURE_SWIPE_UPDATE
|
|
* \brief Indicates update of a swipe gesture.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_GESTURE_SWIPE_UPDATE
|
|
* int nr_figures = (int)wParam;
|
|
* int dx = LOSWORD(lParam);
|
|
* int dy = HISWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param nr_figures The number of fingers used for the gesture.
|
|
* \param dx, dy The motion delta between the last and the current
|
|
* MSG_EXIN_GESTURE_SWIPE_UPDATE message.
|
|
*/
|
|
#define MSG_EXIN_GESTURE_SWIPE_UPDATE 0x0081
|
|
|
|
/**
|
|
* \def MSG_EXIN_GESTURE_SWIPE_END
|
|
* \brief Indicates the end of a swipe gesture.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_GESTURE_SWIPE_END
|
|
* int nr_figures = (int)wParam;
|
|
* BOOL is_cancelled = (BOOL)lParam;
|
|
* \endcode
|
|
*
|
|
* \param nr_figures The number of fingers used for the gesture.
|
|
* \param is_cancelled TRUE if the gesture ended normally, or if it was cancelled.
|
|
*/
|
|
#define MSG_EXIN_GESTURE_SWIPE_END 0x0082
|
|
|
|
/**
|
|
* \def MSG_EXIN_GESTURE_PINCH_BEGIN
|
|
* \brief Indicates the beginning of a pinch gesture.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_GESTURE_PINCH_BEGIN
|
|
* int nr_figures = (int)wParam;
|
|
* unsigned int scale = (unsigned int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param nr_figures The number of fingers used for the gesture.
|
|
* \param scale The absolute scale of a pinch gesture.
|
|
* The scale is the division of the current distance between
|
|
* the fingers and the distance at the start of the gesture.
|
|
* Note that the initial scale value is 100.
|
|
*/
|
|
#define MSG_EXIN_GESTURE_PINCH_BEGIN 0x0083
|
|
|
|
/**
|
|
* \def MSG_EXIN_GESTURE_PINCH_UPDATE
|
|
* \brief Indicates the beginning of a pinch gesture.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_GESTURE_PINCH_UPDATE
|
|
* unsigned int scale = LOWORD(wParam);
|
|
* int da = HISWORD(wParam);
|
|
* int dx = LOSWORD(lParam);
|
|
* int dy = HISWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param scale The absolute scale of a pinch gesture.
|
|
* The scale is the division of the current distance between
|
|
* the fingers and the distance at the start of the gesture.
|
|
* Note that the initial scale value is 100.
|
|
* \param da The angle delta in 1/50 degrees between the last and the current
|
|
* MSG_EXIN_GESTURE_PINCH_UPDATE message.
|
|
* \param dx, dy The motion delta between the last and the current
|
|
* MSG_EXIN_GESTURE_PINCH_UPDATE message.
|
|
*/
|
|
#define MSG_EXIN_GESTURE_PINCH_UPDATE 0x0084
|
|
|
|
/**
|
|
* \def MSG_EXIN_GESTURE_PINCH_END
|
|
* \brief Indicates the end of a swipe gesture.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_GESTURE_PINCH_END
|
|
* int nr_figures = (int)LOSWORD(wParam);
|
|
* BOOL is_cancelled = (BOOL)HISWORD(wParam);
|
|
* unsigned int scale = (unsigned int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param nr_figures The number of fingers used for the gesture.
|
|
* \param is_cancelled TRUE if the gesture ended normally, or if it was cancelled.
|
|
* \param scale The absolute scale of a pinch gesture.
|
|
* The scale is the division of the current distance between
|
|
* the fingers and the distance at the start of the gesture.
|
|
* Note that the initial scale value is 100.
|
|
*/
|
|
#define MSG_EXIN_GESTURE_PINCH_END 0x0085
|
|
|
|
/**
|
|
* \def MSG_EXIN_END_CHANGES
|
|
* \brief Indicates the end of one or more parameter changes
|
|
* of one hardware event.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_END_CHANGES
|
|
* int count = (int)wParam;
|
|
* \endcode
|
|
*
|
|
* \param count The count of parameters changed.
|
|
*/
|
|
#define MSG_EXIN_END_CHANGES 0x008F
|
|
|
|
#define TABLET_TOOL_X 0
|
|
#define TABLET_TOOL_Y 1
|
|
#define TABLET_TOOL_PRESSURE 2
|
|
#define TABLET_TOOL_DISTANCE 3
|
|
#define TABLET_TOOL_TILT_X 4
|
|
#define TABLET_TOOL_TILT_Y 5
|
|
#define TABLET_TOOL_ROTATION 6
|
|
#define TABLET_TOOL_SLIDER 7
|
|
#define TABLET_TOOL_SIZE_MAJOR 8
|
|
#define TABLET_TOOL_SIZE_MINOR 9
|
|
#define TABLET_TOOL_WHEEL 10
|
|
|
|
#define TABLET_TOOL_PROXIMITY_STATE_INVALID 0
|
|
#define TABLET_TOOL_PROXIMITY_STATE_OUT 1
|
|
#define TABLET_TOOL_PROXIMITY_STATE_IN 2
|
|
|
|
#define TABLET_TOOL_TIP_INVALID 0
|
|
#define TABLET_TOOL_TIP_UP 1
|
|
#define TABLET_TOOL_TIP_DOWN 2
|
|
|
|
#define TABLET_BUTTON_STATE_INVALID 0
|
|
#define TABLET_BUTTON_STATE_RELEASED 1
|
|
#define TABLET_BUTTON_STATE_PRESSED 2
|
|
|
|
/**
|
|
* \def MSG_EXIN_TABLET_TOOL_AXIS
|
|
* \brief Indicates an axis of the tablet tool has changed state.
|
|
*
|
|
* For a tablet tool, one or more axes may changed in one hardware event.
|
|
* MiniGUI will send one or more MSG_EXIN_TABLET_TOOL_XXX messages followed
|
|
* by a MSG_EXIN_END_CHANGES message to the current active window.
|
|
* Each MSG_EXIN_TABLET_TOOL_XXX message for a changed axis.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TABLET_TOOL_AXIS
|
|
* int which = (int)wParam;
|
|
* long value = (long)lParam;
|
|
* \endcode
|
|
*
|
|
* \param which The axis identifier, can be one of the following identifiers:
|
|
* - TABLET_TOOL_X:\n
|
|
* The value contains the current absolute x coordinate of
|
|
* the tablet tool, transformed to screen coordinates,
|
|
* but scaled 10 times.
|
|
* - TABLET_TOOL_Y:\n
|
|
* The value containsthe current absolute y coordinate of
|
|
* the tablet tool, transformed to screen coordinates,
|
|
* but scaled 10 times.
|
|
* - TABLET_TOOL_PRESSURE:\n
|
|
* The value contains the current pressure being applied on
|
|
* the tool in use, normalized to the range [0, 1000].
|
|
* - TABLET_TOOL_DISTANCE:\n
|
|
* The value contains the current distance from the tablet's sensor,
|
|
* normalized to the range [0, 1000].
|
|
* - TABLET_TOOL_TILT_X:\n
|
|
* The value contains the current tilt along the X axis of the
|
|
* tablet's current logical orientation, in 1/50 degrees off the
|
|
* tablet's z axis.
|
|
* - TABLET_TOOL_TILT_Y:\n
|
|
* The value contains the current tilt along the Y axis of the
|
|
* tablet's current logical orientation, in 1/50 degrees off the
|
|
* tablet's z axis.
|
|
* - TABLET_TOOL_ROTATION:\n
|
|
* The value contains the current z rotation of the tool in
|
|
* 1/50 degrees, clockwise from the tool's logical neutral position.
|
|
* - TABLET_TOOL_SLIDER:\n
|
|
* The value contains the current position of the slider on the tool,
|
|
* normalized to the range [-1000, 1000].
|
|
* - TABLET_TOOL_WHEEL:\n
|
|
* The value contains the delta for the wheel in 1/50 degrees.
|
|
* \param value The value of the axis.
|
|
*/
|
|
#define MSG_EXIN_TABLET_TOOL_AXIS 0x0090
|
|
|
|
/**
|
|
* \def MSG_EXIN_TABLET_TOOL_PROXIMITY
|
|
* \brief Indicates that a tool has come in or out of proximity of the tablet.
|
|
*
|
|
* For a tablet tool, one or more axes may changed in one hardware event.
|
|
* MiniGUI will send one or more MSG_EXIN_TABLET_TOOL_XXX messages followed
|
|
* by a MSG_EXIN_END_CHANGES message to the current active window.
|
|
* Each MSG_EXIN_TABLET_TOOL_XXX message for a changed axis.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TABLET_TOOL_PROXIMITY
|
|
* int which = (int)LOSWORD(wParam);
|
|
* int state = (int)HISWORD(wParam);
|
|
* long value = (long)lParam;
|
|
* \endcode
|
|
*
|
|
* \param which The axis identifier, please see \sa MSG_EXIN_TABLET_TOOL_AXIS.
|
|
* \param state The proximity state, can be TABLET_TOOL_PROXIMITY_STATE_OUT
|
|
* or TABLET_TOOL_PROXIMITY_STATE_IN.
|
|
* \param value The value of the axis.
|
|
*/
|
|
#define MSG_EXIN_TABLET_TOOL_PROXIMITY 0x0091
|
|
|
|
/**
|
|
* \def MSG_EXIN_TABLET_TOOL_TIP
|
|
* \brief Indicates that a tool has come in contact with the surface of the tablet.
|
|
*
|
|
* For a tablet tool, one or more axes may changed in one hardware event.
|
|
* MiniGUI will send one or more MSG_EXIN_TABLET_TOOL_XXX messages followed
|
|
* by a MSG_EXIN_END_CHANGES message to the current active window.
|
|
* Each MSG_EXIN_TABLET_TOOL_XXX message for a changed axis.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TABLET_TOOL_TIP
|
|
* int which = (int)LOSWORD(wParam);
|
|
* int state = (int)HISWORD(wParam);
|
|
* long value = (long)lParam;
|
|
* \endcode
|
|
*
|
|
* \param which The axis identifier, please see \sa MSG_EXIN_TABLET_TOOL_AXIS.
|
|
* \param state The tip state, can be TABLET_TOOL_TIP_UP
|
|
* or TABLET_TOOL_TIP_DOWN.
|
|
* \param value The value of the axis.
|
|
*/
|
|
#define MSG_EXIN_TABLET_TOOL_TIP 0x0092
|
|
|
|
/**
|
|
* \def MSG_EXIN_TABLET_TOOL_BUTTON
|
|
* \brief Indicates that a tool has changed a logical button state on the tablet.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TABLET_TOOL_BUTTON
|
|
* unsigned int button = (unsigned int)wParam;
|
|
* int state = (int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param button The button identifier, which is a semantic button code as defined
|
|
* in <linux/input.h>.
|
|
* \param state The button state, can be TABLET_BUTTON_STATE_RELEASED or
|
|
* TABLET_BUTTON_STATE_PRESSED.
|
|
*/
|
|
#define MSG_EXIN_TABLET_TOOL_BUTTON 0x0093
|
|
|
|
/**
|
|
* \def MSG_EXIN_TABLET_PAD_BUTTON
|
|
* \brief Indicates that a button pressed on the tablet pad.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TABLET_PAD_BUTTON
|
|
* unsigned int mode = (unsigned int)wParam;
|
|
* unsigned int button_number = (unsigned int)LOSWORD(lParam);
|
|
* int button_state = (int)HISWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param mode The mode the button that triggered this event is in.
|
|
* \param button_number The button number, which is NOT a semantic button code
|
|
* as defined in <linux/input.h>.
|
|
* \param button_state The button state, can be TABLET_BUTTON_STATE_RELEASED or
|
|
* TABLET_BUTTON_STATE_PRESSED.
|
|
*/
|
|
#define MSG_EXIN_TABLET_PAD_BUTTON 0x0094
|
|
|
|
#define TABLET_PAD_RING_SOURCE_UNKNOWN 0
|
|
#define TABLET_PAD_RING_SOURCE_FINGER 1
|
|
|
|
/**
|
|
* \def MSG_EXIN_TABLET_PAD_RING
|
|
* \brief Indicates that a status change on the tablet ring.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TABLET_PAD_RING
|
|
* unsigned int mode = (unsigned int)LOWORD(wParam);
|
|
* unsigned int source = (unsigned int)HIWORD(wParam);
|
|
* int position = (int)LOSWORD(lParam);
|
|
* unsigned int number = (unsigned int)HIWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param mode The mode the ring that triggered this event is in.
|
|
* \param source The source of the event, can be TABLET_PAD_RING_SOURCE_UNKNOWN
|
|
* or TABLET_PAD_RING_SOURCE_FINGER.
|
|
* \param position The current position of the ring, in 1/50 degrees
|
|
* counterclockwise from the northern-most point of the ring in
|
|
* the tablet's current logical orientation.
|
|
* When the source is TABLET_PAD_RING_SOURCE_FINGER and the finger is lifted
|
|
* from the ring the value will be less than 0.
|
|
* \param number The number of the ring that has changed state,
|
|
* with 0 being the first ring
|
|
*/
|
|
#define MSG_EXIN_TABLET_PAD_RING 0x0095
|
|
|
|
#define TABLET_PAD_STRIP_SOURCE_UNKNOWN 0
|
|
#define TABLET_PAD_STRIP_SOURCE_FINGER 1
|
|
|
|
/**
|
|
* \def MSG_EXIN_TABLET_PAD_STRIP
|
|
* \brief Indicates that a status change on the tablet strip.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_TABLET_PAD_STRIP
|
|
* unsigned int mode = (unsigned int)LOWORD(wParam);
|
|
* unsigned int source = (unsigned int)HIWORD(wParam);
|
|
* int position = (int)LOSWORD(lParam);
|
|
* unsigned int number = (unsigned int)HIWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param mode The mode the strip that triggered this event is in.
|
|
* \param source The source of the event, can be TABLET_PAD_STRIP_SOURCE_UNKNOWN
|
|
* or TABLET_PAD_STRIP_SOURCE_FINGER.
|
|
* \param position The current position of the strip,
|
|
* normalized to the range [0, 100].
|
|
* When the source is TABLET_PAD_STRIP_SOURCE_FINGER and the finger is lifted
|
|
* from the strip, the value will be less than 0.
|
|
* \param number The number of the strip that has changed state,
|
|
* with 0 being the first strip.
|
|
*/
|
|
#define MSG_EXIN_TABLET_PAD_STRIP 0x0096
|
|
|
|
/**
|
|
* \def MSG_EXIN_USER_BEGIN
|
|
* \brief Indicates that the beginning of a user-defined extra input event.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_USER_BEGIN
|
|
* WPARAM wParam;
|
|
* LPARAM lParam;
|
|
* \endcode
|
|
*
|
|
* \param wParam The first parameter of this message.
|
|
* \param lParam The second parameter of this message.
|
|
*/
|
|
#define MSG_EXIN_USER_BEGIN 0x009A
|
|
|
|
/**
|
|
* \def MSG_EXIN_USER_UPDATE
|
|
* \brief Indicates that the update of a user-defined extra input event.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_USER_UPDATE
|
|
* WPARAM wParam;
|
|
* LPARAM lParam;
|
|
* \endcode
|
|
*
|
|
* \param wParam The first parameter of this message.
|
|
* \param lParam The second parameter of this message.
|
|
*/
|
|
#define MSG_EXIN_USER_UPDATE 0x009B
|
|
|
|
/**
|
|
* \def MSG_EXIN_USER_END
|
|
* \brief Indicates that the end of a user-defined extra input event.
|
|
*
|
|
* \code
|
|
* MSG_EXIN_USER_END
|
|
* WPARAM wParam;
|
|
* LPARAM lParam;
|
|
* \endcode
|
|
*
|
|
* \param wParam The first parameter of this message.
|
|
* \param lParam The second parameter of this message.
|
|
*/
|
|
#define MSG_EXIN_USER_END 0x009C
|
|
|
|
#define MSG_LASTEXTRAINPUTMSG 0x009F
|
|
|
|
/** @} end of extra_input_msgs */
|
|
|
|
/**
|
|
* \defgroup paint_msgs Window painting messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 5 from 0x00A0 to 0x00CF, the paint messages. */
|
|
#define MSG_FIRSTPAINTMSG 0x00A0
|
|
|
|
/**
|
|
* \def MSG_SHOWWINDOW
|
|
* \brief Indicates that the window has been shown or hidden.
|
|
*
|
|
* This message is sent to the window as a notification after the window
|
|
* has been shown or hidden (due to the calling of the function ShowWindow).
|
|
*
|
|
* \code
|
|
* MSG_SHOWWINDOW
|
|
* int show_cmd = (int)wParam;
|
|
* \endcode
|
|
*
|
|
* \param show_cmd The command to show or hide, can be one of
|
|
* the following values:
|
|
* - SW_SHOW\n
|
|
* Shows the window.
|
|
* - SW_HIDE\n
|
|
* Hides the window.
|
|
* - SW_SHOWNORMAL\n
|
|
* Shows the window, and if the window is a main window
|
|
* sets it to be the topmost main window in its z-node level.
|
|
*
|
|
* \sa ShowWindow
|
|
*/
|
|
#define MSG_SHOWWINDOW 0x00A0
|
|
|
|
/**
|
|
* \def MSG_MOVEWINDOW
|
|
* \brief Indicates that the window has been moved.
|
|
*
|
|
* This message is sent to the window as a notification after the window
|
|
* has been moved (due to the calling of the function MoveWindow).
|
|
*
|
|
* \code
|
|
* MSG_MOVEWINDOW
|
|
* int lx = LOSWORD(wParam);
|
|
* int ty = HISWORD(wParam);
|
|
* int rx = LOSWORD(lParam);
|
|
* int by = HISWORD(lParam);
|
|
* \endcode
|
|
*
|
|
* \param lx, ty, rx, by The new rectangle coordinates of the window.
|
|
*
|
|
* \sa MoveWindow
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
#define MSG_MOVEWINDOW 0x00A1
|
|
|
|
/**
|
|
* \def MSG_ERASEBKGND
|
|
* \brief Sent to the window to erase the background.
|
|
*
|
|
* This message is sent to the window if the whole or a part of the background
|
|
* should be erased.
|
|
*
|
|
* \code
|
|
* MSG_ERASEBKGND
|
|
* HDC hdc = (HDC)wParam;
|
|
* const RECT* inv_rect = (const RECT*)lParam;
|
|
* \endcode
|
|
*
|
|
* \param hdc The device context.
|
|
* \param inv_rect The pointer to a RECT structure contains the rectangle
|
|
* should be erase. The rectangle is in client coordinates system.
|
|
* If it is NULL, the whole client area should be erased.
|
|
*/
|
|
#define MSG_ERASEBKGND 0x00B0 /* this is an async message */
|
|
|
|
/**
|
|
* \def MSG_PAINT
|
|
* \brief Sent to the window if the window contains an invalid region.
|
|
*
|
|
* This message is sent to the window if the window contains an invalid region.
|
|
*
|
|
* \code
|
|
* MSG_PAINT
|
|
* const CLIPRGN* inv_rgn = (const CLIPRGN*) lParam;
|
|
* \endcode
|
|
*
|
|
* \param inv_rgn The pointer to the invalid region of the window.
|
|
*/
|
|
#define MSG_PAINT 0x00B1
|
|
|
|
/**
|
|
* \def MSG_NCPAINT
|
|
* \brief Indicates that paints non-client area.
|
|
*
|
|
* \code
|
|
* MSG_NCPAINT
|
|
* HDC hdc = (HDC)wParam;
|
|
* const RECT* inv_rect = (const RECT*)lParam;
|
|
* \endcode
|
|
*
|
|
* \param hdc The device context.
|
|
* \param inv_rect The pointer to a RECT structure contains the rectangle
|
|
* should be paint. The rectangle is in client coordinates system.
|
|
* If it is NULL, the whole nc client area should be paint.
|
|
*/
|
|
#define MSG_NCPAINT 0x00B2
|
|
|
|
/**
|
|
* \def MSG_NCACTIVATE
|
|
* \brief Indicates that active non-client area of main window.
|
|
*/
|
|
#define MSG_NCACTIVATE 0x00B3
|
|
|
|
/**
|
|
* \def MSG_SYNCPAINT
|
|
* \brief Indicates that actives and paints main window synchronously.
|
|
*/
|
|
#define MSG_SYNCPAINT 0x00B4
|
|
|
|
#define MSG_LASTPAINTMSG 0x00BF
|
|
|
|
/** @} end of paint_msgs */
|
|
|
|
/**
|
|
* \defgroup desktop_msgs Internal desktop messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 6 from 0x00C0 to 0x00EF, the internal desktop messages. */
|
|
#define MSG_FIRSTSESSIONMSG 0x00C0
|
|
|
|
#define MSG_STARTSESSION 0x00C0
|
|
#define MSG_QUERYENDSESSION 0x00C1
|
|
#define MSG_ENDSESSION 0x00C2
|
|
#define MSG_REINITSESSION 0x00C3
|
|
|
|
/* Since 5.0.0 */
|
|
#define MSG_REINITDESKOPS 0x00C4
|
|
|
|
#define MSG_ERASEDESKTOP 0x00CE
|
|
#define MSG_PAINTDESKTOP 0x00CF
|
|
|
|
#define MSG_DT_MOUSEOFF 0x00D0
|
|
|
|
/**
|
|
* \def MSG_DT_LBUTTONDOWN
|
|
* \brief Left mouse button down message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user presses down
|
|
* the left button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_LBUTTONDOWN
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_DT_LBUTTONUP, MSG_LBUTTONDOWN
|
|
*/
|
|
#define MSG_DT_LBUTTONDOWN 0x00D1
|
|
|
|
/**
|
|
* \def MSG_DT_LBUTTONUP
|
|
* \brief Left mouse button up message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user releases up
|
|
* the left button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_LBUTTONUP
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_DT_LBUTTONDOWN, MSG_LBUTTONUP
|
|
*/
|
|
#define MSG_DT_LBUTTONUP 0x00D2
|
|
|
|
/**
|
|
* \def MSG_DT_LBUTTONDBLCLK
|
|
* \brief Left mouse button double clicked message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user double clicks
|
|
* the left button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_LBUTTONDBLCLK
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in client coordinates.
|
|
*
|
|
* \sa MSG_RBUTTONDBLCLK
|
|
*/
|
|
#define MSG_DT_LBUTTONDBLCLK 0x00D3
|
|
|
|
/**
|
|
* \def MSG_DT_MOUSEMOVE
|
|
* \brief The mouse moved message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user moves the mouse
|
|
* in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_MOUSEMOVE
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_MOUSEMOVE
|
|
*/
|
|
#define MSG_DT_MOUSEMOVE 0x00D4
|
|
|
|
/**
|
|
* \def MSG_DT_RBUTTONDOWN
|
|
* \brief Right mouse button down message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user presses down
|
|
* the right button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_RBUTTONDOWN
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_DT_RBUTTONUP, MSG_RBUTTONDOWN
|
|
*
|
|
*/
|
|
#define MSG_DT_RBUTTONDOWN 0x00D5
|
|
|
|
/**
|
|
* \def MSG_DT_RBUTTONUP
|
|
* \brief Right mouse button up message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user releases up
|
|
* the right button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_RBUTTONUP
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_DT_RBUTTONDOWN, MSG_RBUTTONUP
|
|
*/
|
|
#define MSG_DT_RBUTTONUP 0x00D6
|
|
|
|
/**
|
|
* \def MSG_DT_RBUTTONDBLCLK
|
|
* \brief Right mouse button double clicked message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user double clicks
|
|
* the right button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_RBUTTONDBLCLK
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_LBUTTONDBLCLK
|
|
*/
|
|
#define MSG_DT_RBUTTONDBLCLK 0x00D7
|
|
|
|
/**
|
|
* \def MSG_DT_MBUTTONDOWN
|
|
* \brief Right mouse button down message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user presses down
|
|
* the right button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_MBUTTONDOWN
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_DT_MBUTTONUP, MSG_RBUTTONDOWN
|
|
*
|
|
*/
|
|
#define MSG_DT_MBUTTONDOWN 0x00D8
|
|
|
|
/**
|
|
* \def MSG_DT_MBUTTONUP
|
|
* \brief Right mouse button up message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user releases up
|
|
* the right button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_MBUTTONUP
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_DT_MBUTTONDOWN, MSG_RBUTTONUP
|
|
*/
|
|
#define MSG_DT_MBUTTONUP 0x00D9
|
|
|
|
/**
|
|
* \def MSG_DT_MBUTTONDBLCLK
|
|
* \brief Right mouse button double clicked message on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user double clicks
|
|
* the right button of the mouse in the area of the desktop window.
|
|
*
|
|
* \code
|
|
* MSG_DT_MBUTTONDBLCLK
|
|
* int x_pos = LOSWORD (lParam);
|
|
* int y_pos = HISWORD (lParam);
|
|
* \endcode
|
|
*
|
|
* \param x_pos,y_pos The position of the mouse in desktop coordinates.
|
|
*
|
|
* \sa MSG_LBUTTONDBLCLK
|
|
*/
|
|
#define MSG_DT_MBUTTONDBLCLK 0x00DA
|
|
|
|
#define MSG_DT_KEYOFF 0x00CB
|
|
|
|
/**
|
|
* \def MSG_DT_KEYDOWN
|
|
* \brief User presses a key down on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user
|
|
* presses a key down.
|
|
*
|
|
* \code
|
|
* MSG_DT_KEYDOWN
|
|
* int scancode = (int)wParam;
|
|
* \endcode
|
|
*
|
|
* \param scancode The scan code of the pressed key.
|
|
*
|
|
* \sa MSG_DT_KEYUP
|
|
*
|
|
*/
|
|
#define MSG_DT_KEYDOWN 0x00E0
|
|
|
|
#define MSG_DT_CHAR 0x00E1
|
|
|
|
/**
|
|
* \def MSG_DT_KEYUP
|
|
* \brief User releases up a key on the desktop.
|
|
*
|
|
* This message is posted to the desktop window when the user
|
|
* releases up a key.
|
|
*
|
|
* \code
|
|
* MSG_DT_KEYUP
|
|
* int scancode = (int)wParam;
|
|
* \endcode
|
|
*
|
|
* \param scancode The scan code of the released key.
|
|
*
|
|
* \sa MSG_DT_KEYDOWN
|
|
*/
|
|
#define MSG_DT_KEYUP 0x00E2
|
|
|
|
#define MSG_DT_SYSKEYDOWN 0x00E3
|
|
#define MSG_DT_SYSCHAR 0x00E4
|
|
#define MSG_DT_SYSKEYUP 0x00E5
|
|
|
|
#define MSG_DT_KEYLONGPRESS 0x00E6
|
|
#define MSG_DT_KEYALWAYSPRESS 0x00E7
|
|
|
|
#define MSG_LASTSESSIONMSG 0x00EF
|
|
|
|
/** @} end of desktop_msgs */
|
|
|
|
/**
|
|
* \defgroup window_msgs Internal window management messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 7 from 0x00F0 to 0x010F, Internal window management messages. */
|
|
#define MSG_FIRSTWINDOWMSG 0x00F0
|
|
|
|
#define MSG_ADDNEWMAINWIN 0x00F0
|
|
#define MSG_REMOVEMAINWIN 0x00F1
|
|
#define MSG_MOVETOTOPMOST 0x00F2
|
|
#define MSG_SETACTIVEMAIN 0x00F3
|
|
#define MSG_GETACTIVEMAIN 0x00F4
|
|
#define MSG_SHOWMAINWIN 0x00F5
|
|
#define MSG_HIDEMAINWIN 0x00F6
|
|
#define MSG_MOVEMAINWIN 0x00F7
|
|
#define MSG_SETCAPTURE 0x00F8
|
|
#define MSG_GETCAPTURE 0x00F9
|
|
|
|
#define MSG_ENDTRACKMENU 0x00FA
|
|
#define MSG_TRACKPOPUPMENU 0x00FB
|
|
#define MSG_CLOSEMENU 0x00FC
|
|
#define MSG_SCROLLMAINWIN 0x00FD
|
|
#define MSG_CARET_CREATE 0x00FE
|
|
#define MSG_CARET_DESTROY 0x00FF
|
|
|
|
#define MSG_ENABLEMAINWIN 0x0100
|
|
#define MSG_ISENABLED 0x0101
|
|
|
|
#define MSG_SETWINCURSOR 0x0102
|
|
|
|
#define MSG_GETNEXTMAINWIN 0x0103
|
|
|
|
/* Since 5.0.0 */
|
|
#define MSG_SETALWAYSTOP 0x0104
|
|
|
|
typedef struct _COMPOSITINGINFO {
|
|
int type;
|
|
DWORD arg;
|
|
} COMPOSITINGINFO;
|
|
|
|
/* Since 5.0.0 */
|
|
#define MSG_SETCOMPOSITING 0x0105
|
|
|
|
/* Since 5.0.0 */
|
|
#define MSG_DUMPZORDER 0x0106
|
|
|
|
/* Since 5.0.0 */
|
|
#define MSG_SETAUTOREPEAT 0x0107
|
|
|
|
#define MSG_SHOWGLOBALCTRL 0x010A
|
|
#define MSG_HIDEGLOBALCTRL 0x010B
|
|
|
|
typedef struct _DRAGINFO {
|
|
int location;
|
|
int init_x, init_y;
|
|
} DRAGINFO;
|
|
|
|
/* client to server; wParam: hwnd, lParam: DRAGINFO. */
|
|
#define MSG_STARTDRAGWIN 0x010C
|
|
/* client to server; wParam: hwnd, lParam: 0L. */
|
|
#define MSG_CANCELDRAGWIN 0x010D
|
|
|
|
#define MSG_CHANGECAPTION 0x010E
|
|
|
|
struct _RECT4MASK;
|
|
typedef struct _WINMASKINFO {
|
|
int nr_rcs;
|
|
struct _RECT4MASK* rcs;
|
|
} WINMASKINFO;
|
|
|
|
/* Since 5.0.0 */
|
|
#define MSG_SETWINDOWMASK 0x010F
|
|
|
|
#define MSG_LASTWINDOWMSG 0x010F
|
|
|
|
/** @} end of window_msgs */
|
|
|
|
/**
|
|
* \defgroup ctrl_msgs Dialog and control messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 8 from 0x0120 to 0x013F, the dialog and control messages. */
|
|
#define MSG_FIRSTCONTROLMSG 0x0120
|
|
|
|
/**
|
|
* \def MSG_COMMAND
|
|
* \brief The command message, indicates a notification message from child
|
|
* window, or the user has selected a menu item.
|
|
*
|
|
* This message sent to the window when the user has selected a menu item, or
|
|
* a child window has sent a notification message to the parent.
|
|
*
|
|
* \code
|
|
* MSG_COMMAND
|
|
* int id = LOWORD(wParam);
|
|
* int code = HIWORD(wParam);
|
|
* HWND hwnd = (HWND)lParam;
|
|
* \endcode
|
|
*
|
|
* \param id The identifier of the menu item or the child window.
|
|
* \param code The notification code.
|
|
* \param hwnd The handle to the control.
|
|
*
|
|
* \note If you use `MSG_COMMAND` message to handle the notification
|
|
* sent from other windows, you should make sure the identifier
|
|
* value and the notification code do not exceed half of the maximal
|
|
* value of a DWORD (32-bit on 64-bit platform, and 16-bit on 32-bit
|
|
* platform). If you use a pointer as the identifier,
|
|
* the code above will not work.
|
|
*
|
|
* Instead, we recommend strongly that you use a NOTIFYPOROC
|
|
* callback to handle the notification generated by a window.
|
|
*
|
|
* \sa NotifyWindow, NotifyParentEx, SetNotificationCallback
|
|
*/
|
|
#define MSG_COMMAND 0x0120
|
|
|
|
/**
|
|
* \def MSG_SYSCOMMAND
|
|
* \brief The system command message.
|
|
*/
|
|
#define MSG_SYSCOMMAND 0x0121
|
|
|
|
/**
|
|
* \def MSG_GETDLGCODE
|
|
* \brief Get dialog code.
|
|
*/
|
|
#define MSG_GETDLGCODE 0x0122
|
|
|
|
/**
|
|
* \def MSG_INITDIALOG
|
|
* \brief Ready to initialize the controls in a dialog box.
|
|
*
|
|
* This message is sent to the dialog in order that you can initialize the
|
|
* controls in the dialog box.
|
|
*
|
|
* \code
|
|
* MSG_INITDIALOG
|
|
* HWND focus_hwnd = (HWND)wParam;
|
|
* LPARAM lparam = (LPARAM)lParam;
|
|
* \endcode
|
|
*
|
|
* \param focus_hwnd The handle to the control which will gain the input focus.
|
|
* \param lparam The parameter passed into the dialog box
|
|
* through \a DialogBoxIndirectParam function.
|
|
*
|
|
* \return Returns non-zero value to set the input focus to \a focus_hwnd,
|
|
* else do not set focus.
|
|
*
|
|
* \sa DialogBoxIndirectParam
|
|
*
|
|
* Example:
|
|
*
|
|
* \include msg_initdialog.c
|
|
*/
|
|
#define MSG_INITDIALOG 0x0123
|
|
|
|
/*Reserved*/
|
|
#define MSG_NEXTDLGCTRL 0x0124
|
|
#define MSG_ENTERIDLE 0x0125
|
|
|
|
/**
|
|
* \def MSG_DLG_GETDEFID
|
|
* \brief Get default push button ID first.
|
|
*/
|
|
#define MSG_DLG_GETDEFID 0x0126
|
|
|
|
/**
|
|
* \def MSG_DLG_SETDEFID
|
|
* \brief Set default push button ID first.
|
|
*/
|
|
#define MSG_DLG_SETDEFID 0x0127
|
|
|
|
/* #define MSG_DLG_REPOSITION 0x0128 */
|
|
|
|
/**
|
|
* \def MSG_ISDIALOG
|
|
* \brief Send to a window to query whether the window is a dialog window.
|
|
*
|
|
* \note This is a asynchronical message.
|
|
*/
|
|
#define MSG_ISDIALOG 0x0128
|
|
|
|
/**
|
|
* \def MSG_INITPAGE
|
|
* \brief Ready to initialize the controls in a property page.
|
|
*
|
|
* This message is sent to the page in order that you can initialize the
|
|
* controls in the page.
|
|
*
|
|
* \code
|
|
* MSG_INITPAGE
|
|
* DWORD add_data = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param add_data The additional data in DLGTEMPLATE structure passed
|
|
* through PSM_ADDPAGE message.
|
|
*
|
|
* \sa ctrl_propsheet
|
|
*/
|
|
#define MSG_INITPAGE 0x0129
|
|
|
|
/**
|
|
* \def MSG_SHOWPAGE
|
|
* \brief Indicates the page will be shown or hidden.
|
|
*
|
|
* This message is sent to the page when the page will be shown or hidden.
|
|
*
|
|
* \code
|
|
* MSG_SHOWPAGE
|
|
* HWND focus_hwnd = (HWND)wParam;
|
|
* int show_cmd = (int)lParam;
|
|
* \endcode
|
|
*
|
|
* \param focus_hwnd The handle to the child which will gain the input focus
|
|
* if showing the page.
|
|
* \param show_cmd The show command, can be one of the following values:
|
|
* - SW_SHOW\n The page will be shown.
|
|
* - SW_HIDE\n The page will be hidden.
|
|
*
|
|
* \sa ctrl_propsheet
|
|
*/
|
|
#define MSG_SHOWPAGE 0x012A
|
|
|
|
/**
|
|
* \def MSG_SHEETCMD
|
|
* \brief Indicates that a PSM_SHEETCMD message had been sent to the
|
|
* PropertySheet control.
|
|
*
|
|
* This message is sent to the property page when the property sheet contains
|
|
* the page received the PSM_SHEETCMD message.
|
|
*
|
|
* \code
|
|
* MSG_SHEETCMD
|
|
* WPARAM param1 = wParam;
|
|
* LPARAM param2 = lParam;
|
|
* \endcode
|
|
*
|
|
* \param param1 The wParam of PSM_SHEETCMD message.
|
|
* \param param2 The lParam of PSM_SHEETCMD message.
|
|
*
|
|
* \sa ctrl_propsheet, PSM_SHEETCMD
|
|
*/
|
|
#define MSG_SHEETCMD 0x012B
|
|
|
|
/**
|
|
* \def MSG_INITCONTAINER
|
|
* \brief This message will be sent to the container window procedure after
|
|
* the container window is created.
|
|
*
|
|
* This message is sent to the container in order that you can initialize the
|
|
* controls in the container.
|
|
*
|
|
* \code
|
|
* MSG_INITCONTAINER
|
|
* DWORD add_data = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param add_data The additional data in \a CONTAINERINFO structure passed
|
|
* through the argument of \a dwAddData when creating the ScrollView
|
|
* control by calling CreateWindowEx.
|
|
*
|
|
* \sa ctrl_scrollview, CONTAINERINFO
|
|
*/
|
|
#define MSG_INITCONTAINER 0x012C
|
|
|
|
/**
|
|
* \def MSG_SVCONTCMD
|
|
* \brief This message will be sent to the parent of the ScrollView control
|
|
* when the container of the ScrollView control reveived a MSG_COMMAND
|
|
* message.
|
|
*
|
|
* This message will be sent to the parent of the ScrollView when
|
|
* the container of the ScrollView control reveived a MSG_COMMAND message.
|
|
* Generally, the notification of the child control in the container will be
|
|
* sent via MSG_COMMAND to the container. If you have not defined your own
|
|
* window procedure for the container, this message gives a chance for the
|
|
* parent of the ScrollView control to handle the notifications come from
|
|
* the controls in the container.
|
|
*
|
|
* Note that you can also define your window procedure for the container, and
|
|
* handle the notification from the child control in this procedure.
|
|
*
|
|
* \code
|
|
* MSG_SVCONTCMD
|
|
* WPARAM param1 = wParam;
|
|
* WPARAM param2 = lParam;
|
|
* \endcode
|
|
*
|
|
* \param param1 The wParam of MSG_COMMAND message.
|
|
* \param param2 The lParam of MSG_COMMAND message.
|
|
*
|
|
* \sa ctrl_scrollview, MSG_COMMAND
|
|
*/
|
|
#define MSG_SVCONTCMD 0x012D
|
|
|
|
/**
|
|
* \def MSG_FREEZECTRL
|
|
* \brief Send this message to freeze or thaw the paint action of
|
|
* the control.
|
|
*
|
|
* \code
|
|
* MSG_FREEZECTRL
|
|
* BOOL bFrozen;
|
|
*
|
|
* wParam = bFrozen
|
|
* lParam = 0;
|
|
*
|
|
* \endcode
|
|
*
|
|
* \note Note that implemented only in scrollview and listview.
|
|
*
|
|
* \param bFrozen to freeze or to thaw.
|
|
*/
|
|
#define MSG_FREEZECTRL 0x012E
|
|
|
|
/**
|
|
* \def MSG_FONTCHANGING
|
|
* \brief Indicates the user is trying to change the font of the window.
|
|
*
|
|
* This message is sent to the window when the user is trying to change
|
|
* the font of the window by calling \a SetWindowFont.
|
|
* If you return non-zero after handling this message, \a SetWindowFont
|
|
* will return immediately, i.e., the default window font will not change.
|
|
*
|
|
* \code
|
|
* MSG_FONTCHANGING
|
|
* PLOGFONT log_font = (PLOGFONT)lParam;
|
|
* \endcode
|
|
*
|
|
* \param log_font The pointer to the new window logical font.
|
|
*
|
|
* \sa SetWindowFont
|
|
*/
|
|
#define MSG_FONTCHANGING 0x0130
|
|
|
|
|
|
/**
|
|
* \def MSG_FONTCHANGED
|
|
* \brief Indicates the window font has been changed.
|
|
*
|
|
* This message is sent to the window after the window font has changed.
|
|
* Some window should be repainted to reflect the new window font.
|
|
*/
|
|
#define MSG_FONTCHANGED 0x0131
|
|
|
|
/**
|
|
* \def MSG_GETTEXTLENGTH
|
|
* \brief Send to the control or the main/virtual window to get the length
|
|
* of the text or caption.
|
|
*
|
|
* This message is sent to the control or the main/virtual window when you
|
|
* call \a GetWindowTextLength function to get the lenght of the text or
|
|
* the caption.
|
|
*
|
|
* \code
|
|
* MSG_GETTEXTLENGTH
|
|
* wParam = 0;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \return The length of the text.
|
|
*
|
|
* \sa GetWindowTextLength
|
|
*/
|
|
#define MSG_GETTEXTLENGTH 0x0132
|
|
|
|
/**
|
|
* \def MSG_GETTEXT
|
|
* \brief Send to the control to get the text, or send to the main/virtual
|
|
* window to get the caption.
|
|
*
|
|
* This message is sent to the control or the main/virtual window when you
|
|
* call \a GetWindowText function to get the text or the caption.
|
|
*
|
|
* \code
|
|
* MSG_GETTEXT
|
|
* int max_len;
|
|
* char* text_buf;
|
|
*
|
|
* wParam = (WPARAM)max_len;
|
|
* lParam = (LPARAM)text_buf;
|
|
* \endcode
|
|
*
|
|
* \param max_len The maximal number of characters can be copied to the buffer.
|
|
* \param text_buf The pointer to a buffer receives the text.
|
|
* \return The length of the window text string.
|
|
*
|
|
* \sa GetWindowText
|
|
*/
|
|
#define MSG_GETTEXT 0x0133
|
|
|
|
/**
|
|
* \def MSG_SETTEXT
|
|
* \brief Send to the control to set the text, or send to the main/virtual
|
|
* window to set the caption.
|
|
*
|
|
* This message is sent to the control or the main/virtual window when you
|
|
* call \a SetWindowText function to set the text or the caption.
|
|
*
|
|
* \code
|
|
* MSG_SETTEXT
|
|
* char* text_buf;
|
|
*
|
|
* wParam = 0;
|
|
* lParam = (LPARAM)text_buf;
|
|
* \endcode
|
|
*
|
|
* \param text_buf The pointer to a buffer contains the text.
|
|
*
|
|
* \return The return value is equal to zero if the text is set.
|
|
*
|
|
* \sa SetWindowText
|
|
*/
|
|
#define MSG_SETTEXT 0x0134
|
|
|
|
/**
|
|
* \def MSG_ENABLE
|
|
* \brief Indicates the window is disabled/enabled.
|
|
*
|
|
* This message is sent to the window if the window has been disabled or enabled.
|
|
*
|
|
* \code
|
|
* MSG_ENABLE
|
|
* BOOL enabled = (BOOL)wParam;
|
|
* \endcode
|
|
*
|
|
* \param enabled Indicates whether the window was disabled or enabled.
|
|
*/
|
|
#define MSG_ENABLE 0x0135
|
|
|
|
/**
|
|
* \def MSG_NOTIFICATION
|
|
* \brief Indicate a notification message.
|
|
*
|
|
* This message is an internal message which indicates the message is a
|
|
* notification sent by calling \a NotifyWindow or \a NotifyParentEx functions.
|
|
*
|
|
* For this message, \a DispatchMessage function will call the notification
|
|
* callback procedure if the target window has been set the notification
|
|
* callback procedure, or convert the message to a MSG_COMMAND message and
|
|
* pass it to the window procedure.
|
|
*
|
|
* \code
|
|
* MSG_NOTIFICATION
|
|
* LINT id = (LINT)wParam;
|
|
* int nc = (int)lParam;
|
|
* DWORD adData = msg->time;
|
|
* \endcode
|
|
*
|
|
* Since 5.0.0.
|
|
*
|
|
* \sa MSG_COMMAND, SetNotificationCallback, NotifyWindow, NotifyParentEx
|
|
*/
|
|
#define MSG_NOTIFICATION 0x0136
|
|
|
|
#define MSG_LASTCONTROLMSG 0x013F
|
|
|
|
/** @} end of ctrl_msgs */
|
|
|
|
/**
|
|
* \defgroup system_msgs System messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 9 from 0x0140 to 0x016F, the system messages. */
|
|
#define MSG_FIRSTSYSTEMMSG 0x0140
|
|
|
|
#define MSG_QUIT 0x0140
|
|
|
|
/**
|
|
* \def MSG_IDLE
|
|
* \brief Indicates the system enters idle loop.
|
|
*
|
|
* This message is sent to the all main windows when the system
|
|
* enters idle loop.
|
|
*/
|
|
#define MSG_IDLE 0x0142
|
|
|
|
#define MSG_TIMEOUT 0x0143
|
|
|
|
/**
|
|
* \def MSG_TIMER
|
|
* \brief Indicates a timer has expired.
|
|
*
|
|
* This message is sent to the window when a timer expired.
|
|
*
|
|
* \code
|
|
* MSG_TIMER
|
|
* LINT timer_id = (LINT)wParam;
|
|
* DWORD tick_count = (DWORD)lParam;
|
|
* \endcode
|
|
*
|
|
* \param timer_id The identifier of the timer has expired.
|
|
* \param tick_count The tick count when the timer had expired.
|
|
*/
|
|
#define MSG_TIMER 0x0144
|
|
|
|
#define MSG_CARETBLINK 0x0145
|
|
|
|
#ifdef HAVE_SELECT
|
|
|
|
/**
|
|
* \def MSG_FDEVENT
|
|
* \brief Indicates an event of registered file descriptor occurred.
|
|
*
|
|
* You can use \a RegisterListenFD to register a file desciptor to
|
|
* MiniGUI for listening.
|
|
*
|
|
* When there is a read/write/except event on the fd, MiniGUI
|
|
* will post a MSG_FDEVENT message with \a wParam being equal to
|
|
* MAKELONG (fd, type), and the \a lParam being set to be the context
|
|
* to the target window.
|
|
*
|
|
* \code
|
|
* MSG_FDEVENT
|
|
* int fd = LOWORD(wParam);
|
|
* int type = HIWORD(wParam);
|
|
* void* context = (void*)lParam;
|
|
* \endcode
|
|
*
|
|
* \param fd The listened file descriptor.
|
|
* \param type The event type, can be Or'd with one or more of
|
|
* POLLIN, POLLOUT, and POLLERR.
|
|
* \param context A context value.
|
|
*
|
|
* \note The file descriptor here was assumed as a unsigned short integer
|
|
* on a 32-bit platform.
|
|
*
|
|
* \sa RegisterListenFD
|
|
*/
|
|
#define MSG_FDEVENT 0x0146
|
|
|
|
#endif /* defined HAVE_SELECT */
|
|
|
|
#ifdef _MGRM_PROCESSES
|
|
|
|
/**
|
|
* \def MSG_SRVNOTIFY
|
|
* \brief Indicates a notification from the server of MiniGUI-Processes.
|
|
*
|
|
* This message will be broadcasted to all of the main windows
|
|
* in a client process when the client receives a MSG_SRVNOTIFY message
|
|
* from the server.
|
|
*
|
|
* The server, i.e. 'mginit' defines the meaning of two parameters of
|
|
* this message.
|
|
*
|
|
* \note Only available on MiniGUI-Processes.
|
|
*/
|
|
#define MSG_SRVNOTIFY 0x0147
|
|
|
|
#define MSG_UPDATECLIWIN 0x0148
|
|
|
|
/* Since 5.0.0; the server send this message to the client
|
|
if the client moved to a new layer */
|
|
#define MSG_LAYERCHANGED 0x0149
|
|
|
|
#endif /* defined _MGRM_PROCESSES */
|
|
|
|
/* Since 5.0.0: for managing message thread */
|
|
#define MSG_MANAGE_MSGTHREAD 0x014A
|
|
#define MSGTHREAD_SIGNIN 0x00
|
|
#define MSGTHREAD_SIGNOUT 0x01
|
|
|
|
/* Since 5.0.0: for calculating the default position */
|
|
#define MSG_CALC_POSITION 0x014B
|
|
|
|
/**
|
|
* \def MSG_DOESNEEDIME
|
|
* \brief Send to a window to query whether the window needs to open
|
|
* IME window.
|
|
*
|
|
* The system will send this message when the window gain the input focus
|
|
* to determine whether the window needs to open IME window.
|
|
*
|
|
* The application should handle this message and return TRUE when
|
|
* the window need IME window. Default window procedure returns FALSE.
|
|
*
|
|
* \note This is an asynchronous message.
|
|
*/
|
|
#define MSG_DOESNEEDIME 0x0150
|
|
|
|
/* flag code. */
|
|
#define IME_STATUS_REGISTERED 0x0000
|
|
#define IME_STATUS_ENABLED 0x0001
|
|
#define IME_STATUS_AUTOTRACK 0x0002
|
|
#define IME_STATUS_LANGUAGE 0x0003
|
|
#define IME_LANGUAGE_UNKNOWN 0x0000
|
|
#define IME_LANGUAGE_LATIN 0x0001
|
|
#define IME_LANGUAGE_ZHCN 0x0002
|
|
#define IME_LANGUAGE_ZHTW 0x0003
|
|
#define IME_STATUS_ENCODING 0x0004
|
|
#define IME_ENCODING_LOCAL 0x0000
|
|
#define IME_ENCODING_UTF8 0x0001
|
|
#define IME_STATUS_VERSION 0x0005
|
|
#define IME_STATUS_USER_MIN 0x0006
|
|
#define IME_STATUS_USER_MAX 0x0020
|
|
|
|
/* IME edit type */
|
|
#define IME_WINDOW_TYPE_NOT_EDITABLE 0x0000
|
|
#define IME_WINDOW_TYPE_EDITABLE 0x0001
|
|
#define IME_WINDOW_TYPE_READONLY 0x0002
|
|
#define IME_WINDOW_TYPE_PASSWORD 0x0003
|
|
|
|
/*Internal use*/
|
|
#define MSG_IME_REGISTER 0x0151
|
|
#define MSG_IME_UNREGISTER 0x0152
|
|
#define MSG_IME_OPEN 0x0153
|
|
#define MSG_IME_CLOSE 0x0154
|
|
#define MSG_IME_SETSTATUS 0x0156
|
|
#define MSG_IME_GETSTATUS 0x0157
|
|
#define MSG_IME_SETTARGET 0x0158
|
|
#define MSG_IME_GETTARGET 0x0159
|
|
#define MSG_IME_SETPOS 0x015A
|
|
#define MSG_IME_GETPOS 0x015B
|
|
|
|
/* new ime msg. */
|
|
#define MSG_IME_SET_TARGET_INFO 0x015C
|
|
#define MSG_IME_GET_TARGET_INFO 0x015D
|
|
|
|
#define MSG_SHOWMENU 0x0160
|
|
#define MSG_HIDEMENU 0x0161
|
|
|
|
#define MSG_ADDTIMER 0x0162
|
|
#define MSG_REMOVETIMER 0x0163
|
|
#define MSG_RESETTIMER 0x0164
|
|
|
|
#define MSG_WINDOWCHANGED 0x0165
|
|
|
|
#define MSG_BROADCASTMSG 0x0166
|
|
|
|
#define MSG_REGISTERWNDCLASS 0x0167
|
|
#define MSG_UNREGISTERWNDCLASS 0x0168
|
|
#define MSG_NEWCTRLINSTANCE 0x0169
|
|
#define MSG_REMOVECTRLINSTANCE 0x016A
|
|
#define MSG_GETCTRLCLASSINFO 0x016B
|
|
#define MSG_CTRLCLASSDATAOP 0x016C
|
|
#define CCDOP_GETCCI 0x01
|
|
#define CCDOP_SETCCI 0x02
|
|
|
|
#define MSG_REGISTERHOOKFUNC 0x016D
|
|
#define MSG_REGISTERHOOKWIN 0x016E
|
|
#define MSG_UNREGISTERHOOKWIN 0x016F
|
|
|
|
#define MSG_LASTSYSTEMMSG 0x016F
|
|
|
|
/** @} end of system_msgs */
|
|
|
|
/**
|
|
* \defgroup menu_msgs Internal menu messages
|
|
* @{
|
|
*/
|
|
|
|
/* Group 10 from 0x0170 to 0x018F, the menu messages */
|
|
#define MSG_FIRSTMENUMSG 0x0170
|
|
|
|
/*Internal use*/
|
|
#define MSG_INITMENU 0x0170
|
|
#define MSG_INITMENUPOPUP 0x0171
|
|
#define MSG_MENUSELECT 0x0172
|
|
#define MSG_MENUCHAR 0x0173
|
|
#define MSG_ENTERMENULOOP 0x0174
|
|
#define MSG_EXITMENULOOP 0x0175
|
|
#define MSG_CONTEXTMENU 0x0176
|
|
#define MSG_NEXTMENU 0x0177
|
|
|
|
#define MSG_LASTMENUMSG 0x018F
|
|
|
|
/** @} end of menu_msgs */
|
|
|
|
/**
|
|
* \defgroup user_msgs User-defined messages
|
|
* @{
|
|
*/
|
|
|
|
#define MSG_FIRSTUSERMSG 0x0800
|
|
|
|
|
|
/**
|
|
* \def MSG_USER
|
|
* \brief The first user-defined message.
|
|
*
|
|
* MiniGUI reserved the range from 0x0800 to 0xEFFF for user-defined messages.
|
|
* MSG_USER is the first user-defined message you can use it by your own.
|
|
*/
|
|
#define MSG_USER 0x0800
|
|
|
|
#define MSG_LASTUSERMSG 0xEFFF
|
|
|
|
/** @} end of user_msgs */
|
|
|
|
/** @} end of msgs */
|
|
|
|
/**
|
|
* \addtogroup fns Functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \defgroup msg_fns Message functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \defgroup msg_pass_fns Message passing functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* The message structure.
|
|
* \sa GetMessage, PostMessage, msgs
|
|
*/
|
|
typedef struct _MSG
|
|
{
|
|
/** The handle to the window which receives this message. */
|
|
HWND hwnd;
|
|
/** The message identifier. */
|
|
UINT message;
|
|
/** The first parameter of the message
|
|
(a unsigned integer with pointer precision). */
|
|
WPARAM wParam;
|
|
/** The second parameter of the message
|
|
(a unsigned integer with pointer precision). */
|
|
LPARAM lParam;
|
|
/** Time (ticks when the message generated);
|
|
reuse for the additional data of a notification. */
|
|
DWORD time;
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
/* pointer to the sync MSG (internal use) */
|
|
void* pSyncMsg;
|
|
#endif
|
|
} MSG;
|
|
typedef MSG* PMSG;
|
|
|
|
/**
|
|
* \def PM_NOREMOVE
|
|
*
|
|
* \sa PeekMessage PeekMessageEx
|
|
*/
|
|
#define PM_NOREMOVE 0x0000
|
|
|
|
/**
|
|
* \def PM_REMOVE
|
|
*
|
|
* \sa PeekMessage PeekMessageEx PeekPostMessage
|
|
*/
|
|
#define PM_REMOVE 0x0001
|
|
|
|
/**
|
|
* \def PM_NOYIELD
|
|
*
|
|
* \sa PeekMessage PeekMessageEx PeekPostMessage
|
|
*/
|
|
#define PM_NOYIELD 0x0002
|
|
|
|
/**
|
|
* \fn BOOL PeekMessageEx (PMSG pMsg, HWND hWnd, \
|
|
* UINT nMsgFilterMin, UINT nMsgFilterMax, \
|
|
* BOOL bWait, UINT uRemoveMsg)
|
|
* \brief Peek a message from the message queue of a main window.
|
|
*
|
|
* This function peeks a message from the message queue of the window \a hWnd;
|
|
* if \a bWait is TRUE, it will wait for the message, else return immediatly.
|
|
*
|
|
* \param pMsg Pointer to the result message.
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsgFilterMin The min identifier of the message that should be peeked.
|
|
* \param nMsgFilterMax The max identifier of the message that should be peeked.
|
|
* \param bWait Whether to wait for a message.
|
|
* \param uRemoveMsg Whether remove the message from the message queue.
|
|
* Should be the following values:
|
|
* - PM_NOREMOVE\n
|
|
* Leave it in the message queue.
|
|
* - PM_REMOVE
|
|
* Remove it from the message queue.
|
|
* - PM_NOYIELD
|
|
* Nouse now.
|
|
*
|
|
* \return TRUE if there is a message peeked, or FALSE.
|
|
*
|
|
* \sa GetMessage, PeekPostMessage, HavePendingMessage, PostMessage
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI PeekMessageEx (PMSG pMsg, HWND hWnd,
|
|
UINT nMsgFilterMin, UINT nMsgFilterMax,
|
|
BOOL bWait, UINT uRemoveMsg);
|
|
|
|
/**
|
|
* \fn BOOL GetMessage (PMSG pMsg, HWND hMainWnd)
|
|
* \brief Get a message from the message queue of a main window.
|
|
*
|
|
* This function gets a message from the message queue of the main window
|
|
* \a hMainWnd, and returns until there is a message in the message queue.
|
|
*
|
|
* \param pMsg Pointer to the result message.
|
|
* \param hMainWnd Handle to the window.
|
|
*
|
|
* \return FALSE on MSG_QUIT have been found or on error, else gets a message.
|
|
*
|
|
* \sa HavePendingMessage, PostQuitMessage, MSG
|
|
*
|
|
* Example:
|
|
*
|
|
* \include getmessage.c
|
|
*/
|
|
static inline BOOL GUIAPI GetMessage (PMSG pMsg, HWND hWnd)
|
|
{
|
|
return PeekMessageEx (pMsg, hWnd, 0, 0, TRUE, PM_REMOVE);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL WaitMessage (PMSG pMsg, HWND hMainWnd)
|
|
* \brief Wait for a message from the message queue of a main window.
|
|
*
|
|
* This function waits for a message from the message queue of the main
|
|
* window \a hMainWnd, and returns until there is a message in the message
|
|
* queue. Unlike \a GetMessage, this function does not remove the message
|
|
* from the message queue.
|
|
*
|
|
* \param pMsg Pointer to the result message.
|
|
* \param hMainWnd Handle to the window.
|
|
*
|
|
* \return 0 on MSG_QUIT have been found, else gets a message.
|
|
*
|
|
* \sa HavePendingMessage, PostQuitMessage, MSG
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI WaitMessage (PMSG pMsg, HWND hMainWnd);
|
|
|
|
/**
|
|
* \fn BOOL HavePendingMessage (HWND hMainWnd)
|
|
* \brief Check if there is any pending message in the message queue of
|
|
* a main window.
|
|
*
|
|
* This function checks whether there is any pending message in the
|
|
* message queue of the main window \a hMainWnd.
|
|
*
|
|
* \param hMainWnd The handle to the main window.
|
|
*
|
|
* \return TRUE for pending message, FALSE for empty message queue.
|
|
*
|
|
* \sa GetMessage, MSG
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI HavePendingMessage (HWND hMainWnd);
|
|
|
|
/**
|
|
* \fn BOOL PeekMessage (PMSG pMsg, HWND hWnd, \
|
|
* UINT nMsgFilterMin, UINT nMsgFilterMax, UINT uRemoveMsg)
|
|
* \brief Peek a message from the message queue of a main window
|
|
*
|
|
* This function peeks a message from the message queue of the window \a hWnd
|
|
* and returns immediatly. Unlike \a GetMessage, this function does not wait
|
|
* for a message.
|
|
*
|
|
* \param pMsg Pointer to the result message.
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsgFilterMin The min identifier of the message that should be peeked.
|
|
* \param nMsgFilterMax The max identifier of the message that should be peeked.
|
|
* \param uRemoveMsg Whether remove the message from the message queue.
|
|
* Should be the following values:
|
|
* - PM_NOREMOVE\n
|
|
* Leave it in the message queue.
|
|
* - PM_REMOVE
|
|
* Remove it from the message queue.
|
|
* - PM_NOYIELD
|
|
* Nouse now.
|
|
*
|
|
* \return TRUE if there is a message peeked, or FALSE.
|
|
*
|
|
* \sa GetMessage, PeekPostMessage, HavePendingMessage, PostMessage
|
|
*/
|
|
static inline BOOL GUIAPI PeekMessage (PMSG pMsg, HWND hWnd, UINT nMsgFilterMin,
|
|
UINT nMsgFilterMax, UINT uRemoveMsg)
|
|
{
|
|
return PeekMessageEx (pMsg, hWnd, nMsgFilterMin, nMsgFilterMax,
|
|
FALSE, uRemoveMsg);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL PeekPostMessage (PMSG pMsg, HWND hWnd,
|
|
UINT nMsgFilterMin, UINT nMsgFilterMax, UINT uRemoveMsg)
|
|
* \brief Peek a post message from the message queue of a main window
|
|
*
|
|
* This function peeks a message from the message queue of the window \a hWnd
|
|
* and returns immediatly. Unlike \a PeekMessage, this function only peek a
|
|
* post message.
|
|
*
|
|
* \param pMsg Pointer to the result message.
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsgFilterMin The min identifier of the message that should be peeked.
|
|
* \param nMsgFilterMax The max identifier of the message that should be peeked.
|
|
* \param uRemoveMsg Whether remove the message from the message queue.
|
|
* Should be the following values:
|
|
* - PM_NOREMOVE\n
|
|
* Leave it in the message queue.
|
|
* - PM_REMOVE
|
|
* Remove it from the message queue.
|
|
* - PM_NOYIELD
|
|
* Nouse now.
|
|
*
|
|
* \return TRUE if there is a message peeked, or FALSE.
|
|
*
|
|
* \sa GetMessage, PeekMessage, HavePendingMessage, PostMessage
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI PeekPostMessage (PMSG pMsg, HWND hWnd, UINT nMsgFilterMin,
|
|
UINT nMsgFilterMax, UINT uRemoveMsg);
|
|
|
|
/**
|
|
* \fn int PostMessage (HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
|
|
* \brief Posts a message into the message queue of a window and returns
|
|
* immediatly.
|
|
*
|
|
* This function posts a message into the message queue of the window \a hWnd
|
|
* and returns immediately.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsg The identifier of the message.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return ERR_OK on success, < 0 on errors.
|
|
*
|
|
* \retval ERR_OK Post message successfully.
|
|
* \retval ERR_QUEUE_FULL The message queue is full.
|
|
* \retval ERR_INV_HWND Invalid window handle.
|
|
*
|
|
* \sa SendMessage
|
|
*/
|
|
MG_EXPORT int GUIAPI PostMessage (HWND hWnd, UINT nMsg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn LRESULT SendMessage (HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
|
|
* \brief Send a message to a window and wait for the handling result.
|
|
*
|
|
* This function sends a message to the window \a hWnd, and will return
|
|
* until the message-handling process returns.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsg The identifier of the message.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return The return value of the message handler. Two special return values
|
|
* are reserved for the errors:
|
|
*
|
|
* \retval ERR_INV_HWND Invalid window handle.
|
|
* \retval ERR_MSG_CANCELED The message handling was canceled by
|
|
* the target window. This may occur when the target window which
|
|
* is running in another thread is destroyed.
|
|
*
|
|
* \note The special return values are negative prime numbers
|
|
* (-2 and -3). Therefore, it is safe if you return a valid 4- or 8-byte
|
|
* aligned pointer value for the successful result. If you use a negative
|
|
* numbers to indicate the error status of your message handler, please
|
|
* choose a different value other than -2 or -3.
|
|
*
|
|
* \sa PostMessage
|
|
*/
|
|
MG_EXPORT LRESULT GUIAPI SendMessage (HWND hWnd, UINT nMsg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn void GUIAPI SetAutoRepeatMessage (HWND hwnd, UINT msg,
|
|
WPARAM wParam, LPARAM lParam)
|
|
* \brief Set the auto-repeat message.
|
|
*
|
|
* This function sets the auto-repeat message. When the default message
|
|
* procedure receives an MSG_IDLE message, the default handler will send
|
|
* the auto-repeat message to the target window as a notification message.
|
|
*
|
|
* \param hwnd The handle to the target window. Set it to zero
|
|
* to disable the auto-repeat message.
|
|
* \param msg The identifier of the auto-repeat message.
|
|
* \param wParam The first parameter of the auto-repeat message.
|
|
* \param lParam The second parameter of the auto-repeat message.
|
|
*/
|
|
MG_EXPORT void GUIAPI SetAutoRepeatMessage (HWND hwnd, UINT msg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
#ifdef _MGRM_PROCESSES
|
|
|
|
#define CLIENTS_TOPMOST -1
|
|
#define CLIENTS_ALL -2
|
|
#define CLIENTS_EXCEPT_TOPMOST -3
|
|
#define CLIENT_ACTIVE -4
|
|
|
|
/**
|
|
* \fn int Send2Client (const MSG* msg, int cli)
|
|
* \brief Send a message to a client.
|
|
*
|
|
* This function sends a message to the specified client \a cli.
|
|
*
|
|
* \param msg The pointer to the message.
|
|
* \param cli Either be the identifier of the targe client or one of the
|
|
* following values:
|
|
* - CLIENT_ACTIVE\n
|
|
* The current active client on the topmost layer.
|
|
* - CLIENTS_TOPMOST\n
|
|
* All clients in the topmost layer.
|
|
* - CLIENTS_EXCEPT_TOPMOST\n
|
|
* All clients except clients in the topmost layer.
|
|
* - CLIENTS_ALL\n
|
|
* All clients.
|
|
*
|
|
* \return The number of bytes sent, < 0 on error.
|
|
*
|
|
* \retval SOCKERR_OK Read data successfully.
|
|
* \retval SOCKERR_IO There are some I/O errors occurred.
|
|
* \retval SOCKERR_CLOSED The socket has been closed by the peer.
|
|
* \retval SOCKERR_INVARG You passed invalid arguments.
|
|
*
|
|
* \note This function is only defined for MiniGUI-Processes, and
|
|
* can be called only by the server, i.e. \a mginit.
|
|
*
|
|
* \sa Send2TopMostClients, Send2ActiveWindow
|
|
*/
|
|
int GUIAPI Send2Client (const MSG* msg, int cli);
|
|
|
|
/**
|
|
* \fn BOOL Send2TopMostClients (UINT nMsg, WPARAM wParam, LPARAM lParam)
|
|
* \brief Send a message to all clients in the topmost layer.
|
|
*
|
|
* This function sends the message specified by (\a nMsg, \a wParam, \a lParam)
|
|
* to all clients in the topmost layer.
|
|
*
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \note This function is only defined for MiniGUI-Processes, and
|
|
* can be called only by the server, i.e. \a mginit.
|
|
*
|
|
* \note The message will be sent to the virtual desktop of the target client.
|
|
*
|
|
* \sa Send2Client, Send2ActiveWindow
|
|
*/
|
|
BOOL GUIAPI Send2TopMostClients (UINT nMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn BOOL Send2ActiveWindow (const MG_Layer* layer,
|
|
* UINT nMsg, WPARAM wParam, LPARAM lParam);
|
|
* \brief Send a message to the active window in a layer.
|
|
*
|
|
* This function sends the message specified by (\a nMsg, \a wParam, \a lParam)
|
|
* to the current active window in the specific layer (\a layer).
|
|
*
|
|
* \param layer The pointer to the layer.
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \note This function is only defined for MiniGUI-Processes, and
|
|
* can be called only by the server, i.e. \a mginit.
|
|
*
|
|
* \sa Send2Client
|
|
*/
|
|
BOOL GUIAPI Send2ActiveWindow (const MG_Layer* layer,
|
|
UINT nMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
#endif /* _MGRM_PROCESSES */
|
|
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
|
|
/**
|
|
* \fn LRESULT PostSyncMessage (HWND hWnd, UINT nMsg,
|
|
* WPARAM wParam, LPARAM lParam)
|
|
* \brief Post a synchronical message to a window which is in different thread.
|
|
*
|
|
* This function posts the synchronical message specified by
|
|
* (\a nMsg, \a wParam, \a lParam) to the window \a hWnd which
|
|
* is in a different thread. This function will return until
|
|
* the message is handled by the window procedure of that window.
|
|
*
|
|
* \note The destination window must belong to other thread.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return The return value of the message handler.
|
|
*
|
|
* \sa SendMessage
|
|
*/
|
|
MG_EXPORT LRESULT GUIAPI PostSyncMessage (HWND hWnd, UINT nMsg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn LRESULT SendAsyncMessage (HWND hWnd, UINT nMsg,
|
|
* WPARAM wParam, LPARAM lParam)
|
|
* \brief Send an asynchronical message to a window.
|
|
*
|
|
* This function sends the asynchronical message specified by
|
|
* (\a nMsg, \a wParam, \a lParam) to the window \a hWnd
|
|
* which might be in a different thread. This function calls
|
|
* the window procedure immediately, so it is very dangerous.
|
|
* You should make sure that the message handler is thread safe.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return The return value of the message handler.
|
|
*
|
|
* \note This function may corrupt your data.
|
|
*
|
|
* \sa PostSyncMessage
|
|
*/
|
|
MG_EXPORT LRESULT GUIAPI SendAsyncMessage (HWND hWnd, UINT nMsg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
#else /* defined _MGHAVE_VIRTUAL_WINDOW */
|
|
|
|
/**
|
|
* \def SendAsyncMessage
|
|
* \brief An alias of \a SendMessage if _MGHAVE_VIRTUAL_WINDOW
|
|
* is not enabled.
|
|
*
|
|
* \sa SendMessage
|
|
*/
|
|
#define SendAsyncMessage SendMessage
|
|
|
|
#endif /* not defined _MGHAVE_VIRTUAL_WINDOW */
|
|
|
|
/**
|
|
* \fn int SendNotifyMessage (HWND hWnd, UINT nMsg,
|
|
* WPARAM wParam, LPARAM lParam)
|
|
* \brief Send a notification message to a window.
|
|
*
|
|
* This function sends the notification message specified by
|
|
* (\a nMsg, \a wParam, \a lParam) to the window \a hWnd. This function
|
|
* puts the notification message at the tail of the message queue and
|
|
* returns immediately.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return 0 if all OK, < 0 on error.
|
|
*
|
|
* \sa SendMessage, PostMessage
|
|
*/
|
|
MG_EXPORT int GUIAPI SendNotifyMessage (HWND hWnd, UINT nMsg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn int SendPriorNotifyMessage (HWND hWnd, UINT nMsg,
|
|
* WPARAM wParam, LPARAM lParam)
|
|
* \brief Send a prior notification message to a window.
|
|
*
|
|
* This function sends the notification message specified by
|
|
* (\a nMsg, \a wParam, \a lParam) to the window \a hWnd. This function
|
|
* puts the notification message at the head of the message queue and
|
|
* returns immediately.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return 0 if all OK, < 0 on error.
|
|
*
|
|
* \sa SendMessage, PostMessage
|
|
*/
|
|
MG_EXPORT int GUIAPI SendPriorNotifyMessage (HWND hWnd, UINT nMsg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn int GUIAPI NotifyWindow (HWND hWnd, LINT id, int code, DWORD dwAddData)
|
|
* \brief Send a notification message to a window.
|
|
*
|
|
* This function sends a notification message to the target window \a hWnd.
|
|
* By default, the notification will be packed as a MSG_NOTIFICATION message
|
|
* and be sent to the target window. This function will return immediately
|
|
* after putting the message to the message queue of the target window.
|
|
*
|
|
* If you have set the notification callback procedure for the target window,
|
|
* DispatchMessage will call the procedure in the context of the thread of
|
|
* that window, otherwise, the function will convert this message to a
|
|
* MSG_COMMAND message and dispatch the MSG_COMMAND message to the
|
|
* window procedure.
|
|
*
|
|
* \param hWnd The handle to target window.
|
|
* \param id The identifier of the source.
|
|
* \param code The notification code.
|
|
* \param dwAddData The additional data of the notification.
|
|
*
|
|
* \return 0 if all OK, < 0 on error.
|
|
*
|
|
* \sa MSG_COMMAND, MSG_NOTIFICATION, SetNotificationCallback
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT int GUIAPI NotifyWindow (HWND hWnd, LINT id, int code,
|
|
DWORD dwAddData);
|
|
|
|
/**
|
|
* \fn int BroadcastMessage (UINT nMsg, WPARAM wParam, LPARAM lParam)
|
|
* \brief Broadcast a message to all main windows on the desktop.
|
|
*
|
|
* This function posts the message specified by (\a nMsg, \a wParam, \a lParam)
|
|
* to all the main windows on the desktop.
|
|
*
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
* \return 0 if all OK, < 0 on error.
|
|
*
|
|
* \sa PostMessage
|
|
*/
|
|
MG_EXPORT int GUIAPI BroadcastMessage (UINT nMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
|
|
/**
|
|
* \fn int BroadcastMessageInThisThread (UINT nMsg,
|
|
* WPARAM wParam, LPARAM lParam)
|
|
* \brief Broadcast a message to all main/virtual windows in the current thread.
|
|
*
|
|
* This function posts the message specified by (\a nMsg, \a wParam, \a lParam)
|
|
* to all the main/virtual windows in the current thread.
|
|
*
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \return The number of windows posted the message; < 0 on error.
|
|
*
|
|
* \note This function only available when the support for virtual window
|
|
* is enabled. If the support for virtual window is not enabled,
|
|
* this function is defined as an alias of \a BroadcastMessage.
|
|
*
|
|
* \sa BroadcastMessage, PostMessage
|
|
*/
|
|
MG_EXPORT int GUIAPI BroadcastMessageInThisThread (UINT nMsg,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
#else /* defined _MGHAVE_VIRTUAL_WINDOW */
|
|
|
|
#define BroadcastMessageInThisThread BroadcastMessage
|
|
|
|
#endif /* not defined _MGHAVE_VIRTUAL_WINDOW */
|
|
|
|
/**
|
|
* \fn int PostQuitMessage (HWND hWnd)
|
|
* \brief Puts a MSG_QUIT message into the message queue of a main window.
|
|
*
|
|
* This function puts a MSG_QUIT message into the message queue of the
|
|
* main window \a hWnd. The next call to \a GetMessage will return 0.
|
|
*
|
|
* \param hWnd The handle to the main window.
|
|
* \return 0 if all OK, < 0 on error.
|
|
*
|
|
* \sa GetMessage
|
|
*/
|
|
MG_EXPORT int GUIAPI PostQuitMessage (HWND hWnd);
|
|
|
|
#define KBD_LAYOUT_DEFAULT "default"
|
|
#define KBD_LAYOUT_FRPC "frpc"
|
|
#define KBD_LAYOUT_FR "fr"
|
|
#define KBD_LAYOUT_DE "de"
|
|
#define KBD_LAYOUT_DELATIN1 "delatin1"
|
|
#define KBD_LAYOUT_IT "it"
|
|
#define KBD_LAYOUT_ES "es"
|
|
#define KBD_LAYOUT_ESCP850 "escp850"
|
|
#define KBD_LAYOUT_HEBREW "hebrew"
|
|
#define KBD_LAYOUT_ARABIC "arabic"
|
|
|
|
/**
|
|
* \fn BOOL SetKeyboardLayout (const char* kbd_layout)
|
|
* \brief Set a new keyboard layout.
|
|
*
|
|
* This function sets the keymaps to translate key scancodes to MSG_CHAR
|
|
* or MSG_KEYSYM messages. The default keymaps is for US PC keyboard
|
|
* layout, you can call this function to set a different keyboard layout.
|
|
* The argument of \a kbd_layout specifies the name of the keyboard layout.
|
|
*
|
|
* \param kbd_layout The keyboard layout name. It can be
|
|
* one of the following values:
|
|
*
|
|
* - KBD_LAYOUT_DEFAULT\n
|
|
* The default keyboard layout, i.e., US PC.
|
|
* - KBD_LAYOUT_FRPC\n
|
|
* The France PC keyboard layout.
|
|
* - KBD_LAYOUT_FR\n
|
|
* The France keyboard layout.
|
|
* - KBD_LAYOUT_DE\n
|
|
* The German keyboard layout.
|
|
* - KBD_LAYOUT_DELATIN1\n
|
|
* The German Latin1 keyboard layout.
|
|
* - KBD_LAYOUT_IT\n
|
|
* The Italian keyboard layout.
|
|
* - KBD_LAYOUT_ES\n
|
|
* The Spanish keyboard layout.
|
|
* - KBD_LAYOUT_ESCP850\n
|
|
* The Spanish CP850 keyboard layout.
|
|
* - KBD_LAYOUT_HEBREW\n
|
|
* The hebrew keyboard layout.
|
|
* - KBD_LAYOUT_ARABIC\n
|
|
* The arabic keyboard layout.
|
|
*
|
|
* \return TRUE for success, otherwise FALSE.
|
|
*
|
|
* \sa TranslateMessage, MSG_CHAR, MSG_KEYSYM
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetKeyboardLayout (const char* kbd_layout);
|
|
|
|
#ifdef _MGCHARSET_UNICODE
|
|
|
|
MG_EXPORT int GUIAPI ToUnicode (UINT keycode, const BYTE* kbd_state,
|
|
wchar_t* wcs, int wcs_len, const char* kbd_layout);
|
|
|
|
MG_EXPORT int GUIAPI ToAscii (UINT keycode, const BYTE* kbd_state,
|
|
WORD* ch, const char* kbd_layout);
|
|
|
|
#endif /* _MGCHARSET_UNICODE */
|
|
|
|
/**
|
|
* \fn BOOL TranslateMessage (PMSG pMsg)
|
|
* \brief Translates key down and key up messages to MSG_CHAR
|
|
* message and post it into the message queue.
|
|
*
|
|
* This function translates key down and key up message to an MSG_CHAR
|
|
* message or some MSG_KEYSYM messages, and send the message(s) to
|
|
* the window procedure as a notification message. If the message is
|
|
* not a key message, this function does nothing.
|
|
*
|
|
* The behavior of this function is inflected by the current
|
|
* keyboard layout. The default keyboard layout is US PC keyboard, but
|
|
* you can call \a SetKeyboardLayout function to set a different keyboard
|
|
* layout.
|
|
*
|
|
* \param pMsg The pointer of message.
|
|
* \return A boolean indicates whether the message is a key message.
|
|
*
|
|
* \sa SetKeyboardLayout, MSG_CHAR, MSG_KEYSYM
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI TranslateMessage (PMSG pMsg);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI TranslateKeyMsgToChar (int message, \
|
|
WPARAM wParam, LPARAM lParam, WORD *ch)
|
|
* \brief Translates a key down and key up message to a corresponding character.
|
|
*
|
|
* This function translates a key down and key up message to a character.
|
|
* If the message is not a key message, this function does nothing.
|
|
*
|
|
* The behavior of this function is inflected by the current
|
|
* keyboard layout. The default keyboard layout is US PC keyboard, but
|
|
* you can call \a SetKeyboardLayout function to set a different keyboard
|
|
* layout.
|
|
*
|
|
* \param message The type of message.
|
|
* \param wParam Message parameter.
|
|
* \param lParam Message parameter.
|
|
* \param ch A string buffer for storing translated characters.
|
|
*
|
|
* \return A boolean indicates whether the message is a key message.
|
|
*
|
|
* \sa TranslateMessage
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI TranslateKeyMsgToChar (int message,
|
|
WPARAM wParam, LPARAM lParam, WORD *ch);
|
|
|
|
/**
|
|
* \fn LRESULT DispatchMessage (PMSG pMsg)
|
|
* \brief Dispatches a message to the window's callback procedure.
|
|
*
|
|
* This function dispatches the message pointed to by \a pMsg to the
|
|
* target window's callback procedure.
|
|
*
|
|
* \param pMsg The pointer to the message.
|
|
* \return The return value of the message handler.
|
|
*
|
|
* \sa GetMessage
|
|
*
|
|
* Example:
|
|
*
|
|
* \include getmessage.c
|
|
*/
|
|
MG_EXPORT LRESULT GUIAPI DispatchMessage (PMSG pMsg);
|
|
|
|
/**
|
|
* \fn int ThrowAwayMessages (HWND pMainWnd)
|
|
* \brief Removes all messages in the message queue associated with a window.
|
|
*
|
|
* This function removes all messages which are associated with
|
|
* the specified window \a pMainWnd.
|
|
*
|
|
* \param pMainWnd The handle to the window.
|
|
* \return The number of thrown messages.
|
|
*
|
|
* \sa EmptyMessageQueue
|
|
*/
|
|
MG_EXPORT int GUIAPI ThrowAwayMessages (HWND pMainWnd);
|
|
|
|
/**
|
|
* \fn BOOL EmptyMessageQueue (HWND hWnd)
|
|
* \brief Empty a message queue.
|
|
*
|
|
* This function empties the message queue which is used by the window specified
|
|
* by \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the main window.
|
|
*
|
|
* \return TRUE on all success, FALSE on error.
|
|
*
|
|
* \sa ThrowAwayMessages
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI EmptyMessageQueue (HWND hWnd);
|
|
|
|
#ifdef _MGHAVE_MSG_STRING
|
|
|
|
/**
|
|
* \fn const char* GUIAPI Message2Str (UINT message)
|
|
* \brief Translates a message identifier to the message string.
|
|
*
|
|
* This function returns the message string of the message identifier \a message.
|
|
* E.g. this function will return the string of "MSG_CHAR" for MSG_CHAR message.
|
|
*
|
|
* \param message The message identifier.
|
|
* \return The message string.
|
|
*
|
|
* \note Only available if defined _MGHAVE_MSG_STRING.
|
|
*
|
|
* \sa PrintMessage
|
|
*/
|
|
MG_EXPORT const char* GUIAPI Message2Str (UINT message);
|
|
|
|
/**
|
|
* \fn void GUIAPI PrintMessage (FILE* fp, HWND hWnd, \
|
|
UINT nMsg, WPARAM wParam, LPARAM lParam)
|
|
* \brief Prints a message in readable string form to a stdio stream.
|
|
*
|
|
* This function prints the message specified by (\a nMsg, \a wParam, \a lParam)
|
|
* in readable string form to the stdio stream \a fp.
|
|
*
|
|
* \param fp The pointer to the FILE object.
|
|
* \param hWnd The target window of the message.
|
|
* \param nMsg The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
* \sa Message2Str
|
|
*/
|
|
MG_EXPORT void GUIAPI PrintMessage (FILE* fp, HWND hWnd,
|
|
UINT nMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
#endif /* defined _MGHAVE_MSG_STRING */
|
|
|
|
/** @} end of msg_pass_fns */
|
|
|
|
#ifdef HAVE_SELECT
|
|
/**
|
|
* \defgroup listenfd_fns Listening a file descriptor
|
|
*
|
|
* Register/Unregister a listening file descriptor to the message queue
|
|
* of the current thread.
|
|
*
|
|
* When you need to listen to a file descriptor, you can use \a select(2)
|
|
* system call. In MiniGUI, you can also register it to MiniGUI to
|
|
* be a listened fd, and when there is a read/write/except event on
|
|
* the registered fd, MiniGUI will sent a notification message to
|
|
* the registered window.
|
|
*
|
|
* The functions in this group are only available to MiniGUI-Processes
|
|
* and MiniGUI-Standalone before 5.0.0. Since 5.0.0, you can register a
|
|
* file descriptor to be listened for all runtime modes as long as the
|
|
* underlying system supports select().
|
|
*
|
|
* Example:
|
|
*
|
|
* \include listenfd.c
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \def MAX_NR_LISTEN_FD
|
|
* \brief The max number of listen fd which user can use.
|
|
*
|
|
* \note Deprecated since 5.0.0. MiniGUI will try to allocate enough space to
|
|
* manage all listening file descriptors.
|
|
*/
|
|
#define MAX_NR_LISTEN_FD 4
|
|
|
|
#ifdef WIN32
|
|
#ifndef POLLIN
|
|
#define POLLIN 0x001
|
|
#endif
|
|
|
|
#ifndef POLLOUT
|
|
#define POLLOUT 0x004
|
|
#endif
|
|
|
|
#ifndef POLLERR
|
|
#define POLLERR 0x008
|
|
#endif
|
|
|
|
#endif /* WIN32 */
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI RegisterListenFD (int fd, int type,
|
|
HWND hwnd, void* context)
|
|
* \brief Register a file descriptor to be listened in the message loop.
|
|
*
|
|
* This function registers the file desciptor \a fd to be listened in the
|
|
* message loop of the current message thread.
|
|
*
|
|
* When there is a read/write/except event on this \a fd, MiniGUI
|
|
* will post a MSG_FDEVENT message with wParam being equal to
|
|
* MAKELONG (fd, type), and the lParam being set to \a context
|
|
* to the target window \a hwnd.
|
|
*
|
|
* \param fd The file descriptor to be listened.
|
|
* \param type The type of the event to be listened, can be Or'd with
|
|
* one or more of POLLIN, POLLOUT, and POLLERR.
|
|
* \param hwnd The handle to the window will receive MSG_FDEVENT message.
|
|
* \param context The value will be passed to the window as lParam of
|
|
* MSG_FDEVENT message.
|
|
*
|
|
* \return TRUE if all OK, and FALSE on error.
|
|
*
|
|
* \note Only available when the underlying system has select().
|
|
*
|
|
* \sa UnregisterListenFD, system_msgs
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RegisterListenFD (int fd, int type,
|
|
HWND hwnd, void* context);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI UnregisterListenFD (int fd)
|
|
* \brief Unregister a being listened file descriptor.
|
|
*
|
|
* This function unregisters the being listened file descriptor \a fd.
|
|
*
|
|
* \param fd The file descriptor to be unregistered, should be a being
|
|
* listened file descriptor.
|
|
* \return TRUE if all OK, and FALSE on error.
|
|
*
|
|
* \note Only available when the underlying system has select().
|
|
*
|
|
* \sa RegisterListenFD
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI UnregisterListenFD (int fd);
|
|
|
|
/** @} end of listenfd_fns */
|
|
|
|
#endif /* defined HAVE_SELECT */
|
|
|
|
/**
|
|
* \defgroup msg_hook_fns Message or event hook functions
|
|
* @{
|
|
*/
|
|
|
|
#define HOOK_OP_MASK 0x00FF
|
|
#define HOOK_GOON 0x0000
|
|
#define HOOK_STOP 0x0001
|
|
|
|
#define HOOK_EVENT_MASK 0xFF00
|
|
#define HOOK_EVENT_KEY 0x0100
|
|
#define HOOK_EVENT_MOUSE 0x0200
|
|
#define HOOK_EVENT_EXTRA 0x0400
|
|
|
|
|
|
/**
|
|
* \var typedef int (* MSGHOOK) (void* context, HWND dst_wnd,
|
|
* UINT msg, WPARAM wparam, LPARAM lparam)
|
|
* \brief Type of message hook function.
|
|
*
|
|
* This is the type of a message hook function.
|
|
*
|
|
* \param context The context which was set when you registered
|
|
* the hook function.
|
|
* \param dst_wnd The handle of the original destination window of the message.
|
|
* \param msg The message identifier.
|
|
* \param wparam The first parameter of the message.
|
|
* \param lparam The second paramter of the message.
|
|
*
|
|
* \return A value indicating stopping or continuing the subsequent handling
|
|
* of the message, can be one of the following values:
|
|
* - HOOK_GOON\n
|
|
* Indicate continuing to handle the message.
|
|
* - HOOK_STOP\n
|
|
* Indicate stopping to handle the message.
|
|
*/
|
|
typedef int (* MSGHOOK) (void* context, HWND dst_wnd,
|
|
UINT msg, WPARAM wparam, LPARAM lparam);
|
|
|
|
/**
|
|
* \fn MSGHOOK GUIAPI RegisterEventHookFunc (int event_type,
|
|
* MSGHOOK hook, void* context)
|
|
* \brief Registers an input event message hook function.
|
|
*
|
|
* This function registers an input event message hook function pointed
|
|
* to by \a hook. When the desktop receives an input event message with
|
|
* the specified event type \a event_type, it will call the hook function
|
|
* first, and passes the \a context value to the hook as the first argument.
|
|
*
|
|
* \param event_type Which type of event to be hooked. The value of
|
|
* this argument should be a one of the following values:
|
|
* - HOOK_EVENT_KEY\n
|
|
* To hook all key events.
|
|
* - HOOK_EVENT_MOUSE\n
|
|
* To hook all mouse events.
|
|
* - HOOK_EVENT_EXTRA\n
|
|
* To hook all extra input events.
|
|
* \param hook The pointer to the hook function. This function will unregister
|
|
* the old hook for the specified event type if \a hook is NULL.
|
|
* \param context The context value will be passed to the hook function.
|
|
*
|
|
* \return The pointer to the old hook function for the specified event type.
|
|
*
|
|
* \note The hook function will be called in the context of
|
|
* desktop or event thread. you should note the thread safety when
|
|
* implementing the hook function.
|
|
*
|
|
* \sa RegisterEventHookWindow, MSGHOOK
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT MSGHOOK GUIAPI RegisterEventHookFunc (int event_type,
|
|
MSGHOOK hook, void* context);
|
|
|
|
/**
|
|
* \fn MSGHOOK GUIAPI RegisterKeyMsgHook (void* context, MSGHOOK hook)
|
|
* \brief Register a key message hook function.
|
|
*
|
|
* This function registers a key message hook pointed to by \a hook.
|
|
* When the desktop receives a key message, it will call the hook function
|
|
* first, and passes the \a context value to the hook as the first argument.
|
|
*
|
|
* \param context The context value will be passed to the hook.
|
|
* \param hook The pointer to the hook function. This function will
|
|
* unregister the old hook if \a hook is NULL.
|
|
*
|
|
* \return The pointer to the old hook function.
|
|
*
|
|
* \sa RegisterEventHookFunc, MSGHOOK
|
|
*/
|
|
static inline MSGHOOK GUIAPI RegisterKeyMsgHook (void* context, MSGHOOK hook)
|
|
{
|
|
return RegisterEventHookFunc (HOOK_EVENT_KEY, hook, context);
|
|
}
|
|
|
|
/**
|
|
* \fn MSGHOOK GUIAPI RegisterMouseMsgHook (void* context, MSGHOOK hook)
|
|
* \brief Register a mouse message hook function.
|
|
*
|
|
* This function registers a mouse message hook pointed to by \a hook.
|
|
* When the desktop receives a mouse message, it will call the hook function
|
|
* first, and passes the \a context value to the hook as the first argument.
|
|
*
|
|
* \param context The context value will be passed to the hook function.
|
|
* \param hook The pointer to the hook function. This function will
|
|
* unregister the old hook if \a hook is NULL.
|
|
*
|
|
* \return The pointer to the old hook function.
|
|
*
|
|
* \sa RegisterEventHookFunc, MSGHOOK
|
|
*/
|
|
static inline MSGHOOK GUIAPI RegisterMouseMsgHook (void* context, MSGHOOK hook)
|
|
{
|
|
return RegisterEventHookFunc (HOOK_EVENT_MOUSE, hook, context);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI RegisterEventHookWindow (HWND hwnd, DWORD flags)
|
|
* \brief Register an input event message hook window.
|
|
*
|
|
* This function registers the specified window \a hwnd as an input
|
|
* event message hook window. When MiniGUI receives an input event
|
|
* message, it will post it to the hook window first.
|
|
*
|
|
* \param hwnd The hook hwnd.
|
|
* \param flags The flags indicating the event types hooked event and whether stop
|
|
* or continue handling the hooked events. The value of this argument should
|
|
* be OR'd with one or more event types and HOOK_GOON or HOOK_STOP:
|
|
* - HOOK_EVENT_KEY\n
|
|
* To hook all key events.
|
|
* - HOOK_EVENT_MOUSE\n
|
|
* To hook all mouse events.
|
|
* - HOOK_EVENT_EXTRA\n
|
|
* To hook all extra input events.
|
|
* - HOOK_GOON\n
|
|
* Indicate continuing to handle the message.
|
|
* - HOOK_STOP\n
|
|
* Indicate stopping to handle the message.
|
|
*
|
|
* \return The handle of old hook window.
|
|
*
|
|
* \note This function be be called by a client of MiniGUI-Processes.
|
|
* For the server, you can use SetServerEventHook.
|
|
*
|
|
* \sa UnregisterEventHookWindow
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RegisterEventHookWindow (HWND hwnd, DWORD flags);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI UnregisterEventHookWindow (HWND hwnd)
|
|
* \brief Unregister an input event message hook window.
|
|
*
|
|
* This function unregisters the specified window \a hwnd from
|
|
* the hook list.
|
|
*
|
|
* \param hwnd The hook hwnd.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa RegisterEventHookWindow
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI UnregisterEventHookWindow (HWND hwnd);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI RegisterKeyHookWindow (HWND hwnd, DWORD flag)
|
|
* \brief Register a key message hook window.
|
|
*
|
|
* This function registers a window specified by \a hwnd as the key message
|
|
* hook window. When MiniGUI receives a key message, it will post it to the
|
|
* hooked window first.
|
|
*
|
|
* \param hwnd The handle of the hook window. This function will unregister
|
|
* the old hook if \a hwnd is HWND_NULL.
|
|
* \param flag Indicating whether stop or continue handling the hooked messages;
|
|
* HOOK_GOON to continue, HOOK_STOP to stop.
|
|
*
|
|
* \return The handle of old hook window.
|
|
*
|
|
* \sa UnregisterEventHookWindow, RegisterMouseHookWindow
|
|
*/
|
|
MG_EXPORT HWND GUIAPI RegisterKeyHookWindow (HWND hwnd, DWORD flag);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI RegisterMouseHookWindow (HWND hwnd, DWORD flag)
|
|
* \brief Registers a mouse message hook window.
|
|
*
|
|
* This function registers a window specified by \a hwnd as the mouse message
|
|
* hook window. When MiniGUI receives a mouse message, it will post it to the
|
|
* hooked window first.
|
|
*
|
|
* \param hwnd The handle of the hook window. This function will unregister
|
|
* the old hook if \a hwnd is HWND_NULL.
|
|
* \param flag Indicating whether stop or continue handling the hooked messages;
|
|
* HOOK_GOON to continue, HOOK_STOP to stop.
|
|
*
|
|
* \return The handle of old hook window.
|
|
*
|
|
* \sa UnregisterEventHookWindow, RegisterMouseHookWindow
|
|
*/
|
|
MG_EXPORT HWND GUIAPI RegisterMouseHookWindow (HWND hwnd, DWORD flag);
|
|
|
|
#ifndef _MGRM_THREADS
|
|
|
|
/**
|
|
* \var typedef int (* SRVEVTHOOK) (PMSG pMsg)
|
|
* \brief The type of the event hook.
|
|
*
|
|
* You can call \a SetServerEventHook to set an event hook
|
|
* in the server of the MiniGUI-Processes or under MiniGUI-Standalone
|
|
* runtime mode.
|
|
*
|
|
* If the event hook returns HOOK_GOON, MiniGUI will continue to
|
|
* handle the event, and post it to the active client.
|
|
* If the hook returns HOOK_STOP, MiniGUI will cancel subsequent handling.
|
|
*
|
|
* \note Deprecated since 5.0.0; Use \a RegisterEventHookFunc() instead.
|
|
*
|
|
* \sa SetServerEventHook, RegisterEventHookFunc
|
|
*/
|
|
typedef int (* SRVEVTHOOK) (PMSG pMsg);
|
|
|
|
/**
|
|
* \fn SRVEVTHOOK GUIAPI SetServerEventHook (SRVEVTHOOK SrvEvtHook)
|
|
* \brief Set an event hook in the server of MiniGUI-Processes.
|
|
*
|
|
* This function sets the event hook as \a SrvEvtHook for the server
|
|
* of MiniGUI-Processes or MiniGUI-Standalone.
|
|
*
|
|
* \param SrvEvtHook The pointer to the hook, NULL to cancel the hook.
|
|
*
|
|
* \return The old hook function.
|
|
*
|
|
* \note Only available for MiniGUI-Processes and MiniGUI-Standalone runtime
|
|
* modes. Under MiniGUI-Processes, only the server can call this function.
|
|
*
|
|
* \note Deprecated since 5.0.0; Use \a RegisterEventHookFunc() instead.
|
|
*
|
|
* \sa SRVEVTHOOK, RegisterEventHookFunc
|
|
*/
|
|
MG_EXPORT SRVEVTHOOK GUIAPI SetServerEventHook (SRVEVTHOOK SrvEvtHook);
|
|
|
|
#endif /* not defined _MGRM_THREADS */
|
|
|
|
/** @} end of msg_hook_fns */
|
|
|
|
/** @} end of msg_fns */
|
|
|
|
/** @} end of fns */
|
|
|
|
/**
|
|
* \defgroup styles Window styles
|
|
* @{
|
|
*/
|
|
|
|
#define WS_CTRLMASK 0x0000FFFFL
|
|
|
|
/**
|
|
* \def WS_NONE
|
|
* \brief None style.
|
|
*/
|
|
#define WS_NONE 0x00000000L
|
|
|
|
/* bits in this mask are only for main windows */
|
|
#define WS_CAPTIONBAR_MASK 0xF0000000L
|
|
|
|
/**
|
|
* \def WS_MINIMIZEBOX
|
|
* \brief Creates a window with minimizing box on caption.
|
|
* \note This style is valid only for main window.
|
|
*/
|
|
#define WS_MINIMIZEBOX 0x80000000L
|
|
|
|
/**
|
|
* \def WS_MAXIMIZEBOX
|
|
* \brief Creates a window with maximizing box on caption.
|
|
* \note This style is valid only for main window.
|
|
*/
|
|
#define WS_MAXIMIZEBOX 0x40000000L
|
|
|
|
/**
|
|
* \def WS_CAPTION
|
|
* \brief Creates a main window with caption.
|
|
*/
|
|
#define WS_CAPTION 0x20000000L
|
|
|
|
/**
|
|
* \def WS_SYSMENU
|
|
* \brief Creates a main window with system menu.
|
|
*/
|
|
#define WS_SYSMENU 0x10000000L
|
|
|
|
/* bits in this mask are both for main windows and controls */
|
|
#define WS_STATUS_MASK 0x0F000000L
|
|
|
|
/**
|
|
* \def WS_VISIBLE
|
|
* \brief Creates a window initially visible.
|
|
*/
|
|
#define WS_VISIBLE 0x08000000L
|
|
|
|
/**
|
|
* \def WS_DISABLED
|
|
* \brief Creates a window initially disabled.
|
|
*/
|
|
#define WS_DISABLED 0x04000000L
|
|
|
|
/* Main window states -- reserved for future use. */
|
|
#define WS_MINIMIZE 0x02000000L
|
|
#define WS_MAXIMIZE 0x01000000L
|
|
|
|
/* bits in this mask are reuse for main windows and controls;
|
|
bits have different meanings for main windows and controls.*/
|
|
#define WS_REUSE_MASK 0x00E00000L
|
|
|
|
/**
|
|
* \def WS_DLGFRAME
|
|
* \brief The main window has a fixed frame, i.e. user can not
|
|
* drag the border of the window.
|
|
*/
|
|
#define WS_DLGFRAME 0x00800000L
|
|
|
|
/**
|
|
* \def WS_THICKFRAME
|
|
* \brief Creates a main window with thick frame.
|
|
*/
|
|
#define WS_THICKFRAME 0x00400000L
|
|
|
|
/**
|
|
* \def WS_THINFRAME
|
|
* \brief Creates a main window with thin frame.
|
|
*/
|
|
#define WS_THINFRAME 0x00200000L
|
|
|
|
/**
|
|
* \def WS_GROUP
|
|
* \brief Indicates the control is the leader of a group.
|
|
* \note This style is valid only for controls.
|
|
*/
|
|
#define WS_GROUP 0x00800000L
|
|
|
|
/**
|
|
* \def WS_TABSTOP
|
|
* \brief Indicates the user can set the input focus to the control by
|
|
* using Tab key.
|
|
* \note This style is valid only for controls.
|
|
*/
|
|
#define WS_TABSTOP 0x00400000L
|
|
|
|
/**
|
|
* \def WS_ALWAYSTOP
|
|
* \brief Indicates the main window is always on top of others.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_ALWAYSTOP 0x00100000L
|
|
|
|
/* bits in this mask are both for main windows and controls */
|
|
#define WS_MISC_MASK 0x000F0000L
|
|
|
|
/**
|
|
* \def WS_CHILD
|
|
* \brief Indicates the window is a child.
|
|
*/
|
|
#define WS_CHILD 0x00080000L
|
|
|
|
/**
|
|
* \def WS_VSCROLL
|
|
* \brief Creates a window with vertical scroll bar.
|
|
*/
|
|
#define WS_VSCROLL 0x00040000L
|
|
|
|
/**
|
|
* \def WS_HSCROLL
|
|
* \brief Creates a window with horizontal scroll bar.
|
|
*/
|
|
#define WS_HSCROLL 0x00020000L
|
|
|
|
/**
|
|
* \def WS_BORDER
|
|
* \brief Creates a window with border.
|
|
*/
|
|
#define WS_BORDER 0x00010000L
|
|
|
|
/* Obsolete styles, back-compatibility definitions. */
|
|
#define WS_OVERLAPPED 0x00000000L
|
|
#define WS_ABSSCRPOS 0x00000000L
|
|
|
|
#define WS_MAINWIN_ONLY_MASK (WS_CAPTIONBAR_MASK | WS_ALWAYSTOP)
|
|
#define WS_CONTROL_ONLY_MASK (WS_CTRLMASK)
|
|
|
|
/**
|
|
* \def WS_EX_NONE
|
|
* \brief No any extended window style.
|
|
*/
|
|
#define WS_EX_NONE 0x00000000L
|
|
|
|
/**
|
|
* \def WS_EX_CONTROL_MASK
|
|
* \brief The extended style mask for control use.
|
|
*/
|
|
#define WS_EX_CONTROL_MASK 0x0000000FL
|
|
|
|
/**
|
|
* \defgroup main_window_type_styles Styles for main window types/levels
|
|
*
|
|
* Before 5.0.0, you can create a topmost main window with the style
|
|
* \a WS_EX_TOPMOST in order to show the main window
|
|
* above all normal windows, and if you use MiniGUI-Processes runtime mode,
|
|
* the server (`mginit`) will always create global main windows.
|
|
*
|
|
* Since 5.0.0, we introduce a concept of zorder levels for main windows.
|
|
* There are eight levels in MiniGUI from top to bottom:
|
|
*
|
|
* - The tooltip level.
|
|
* - The system/global level.
|
|
* - The screen lock level.
|
|
* - The docker level.
|
|
* - The higher level.
|
|
* - The normal level.
|
|
* - The launcher level.
|
|
* - The desktop or wallpaper.
|
|
*
|
|
* We use new styles like \a WS_EX_WINTYPE_GLOBAL to create main windows in
|
|
* different levels. For historical reasons, you can still use the style
|
|
* \a WS_EX_TOPMOST, but MiniGUI will create a main window in the higher
|
|
* level for this style.
|
|
*
|
|
* By default, without the style \a WS_EX_TOPMOST or a style like
|
|
* \a WS_EX_WINTYPE_GLOBAL, MiniGUI will create a main window in
|
|
* the normal level.
|
|
*
|
|
* The desktop is the only main window in the desktop level. Any MiniGUI
|
|
* process instance has a virtual desktop window. The desktop window is
|
|
* an internal window object, so no API is provided for app to create or
|
|
* manage it.
|
|
*
|
|
* Note that, under MiniGUI-Processes runtime mode, only the first client
|
|
* creates the first main window in a z-order level other than higher and
|
|
* normal levels can create another main window in the same z-order level.
|
|
* And only the server can create a main window in the global z-order level.
|
|
*
|
|
* This is a security design for the multi-process runtime environment.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_MASK
|
|
* \brief The style mask for main window type.
|
|
*
|
|
* \note This mask value is equal to the style mask \a WS_EX_CONTROL_MASK;
|
|
* The former is for main window, and the later for control.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_MASK 0x0000000FL
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_TOOLTIP
|
|
* \brief The type for a system/global main window.
|
|
*
|
|
* Use this style when you want to create a tooltip main window.
|
|
* A tooltip main window will be shown above other types of main windows.
|
|
*
|
|
* \note Under MiniGUI-Processes runtime mode, only the client which creates
|
|
* the first main window in the tooltip level can create other main
|
|
* windows in this level. For other clients, a main window in the higher
|
|
* level will be created.
|
|
* \note The maximal number of all main windows in the tooltip level is 8.
|
|
* MiniGUI will create a main windows in higher level if there is no room
|
|
* in the tooltip level.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_TOOLTIP 0x00000001L
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_GLOBAL
|
|
* \brief The type for a system/global main window.
|
|
*
|
|
* Use this style when you want to create a system/global main window.
|
|
* A system/global main window will be shown above other types of main windows.
|
|
*
|
|
* \note Under MiniGUI-Processes runtime mode, only the server (`mginit`) can
|
|
* create main windows in the system level, and any main windows created
|
|
* by the server is a system main window.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_GLOBAL 0x00000002L
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_SCREENLOCK
|
|
* \brief The type for a main window in the screen lock level.
|
|
*
|
|
* Use this style when you want to create a main window in the
|
|
* screen lock level. A main window in the screen lock level will
|
|
* be shown below the system main windows and above the other main windows.
|
|
*
|
|
* \note Under MiniGUI-Processes runtime mode, only the client which creates
|
|
* the first main window in the screen lock level can create other
|
|
* main windows in the this level. For other clients, a main window in
|
|
* the higher level will be created.
|
|
* \note The maximal number of all main windows in the screen lock level is 8.
|
|
* MiniGUI will create a main windows in higher level if there is no room
|
|
* in the screen lock level.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_SCREENLOCK 0x00000003L
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_DOCKER
|
|
* \brief The type for a main window in the docker level.
|
|
*
|
|
* Use this style when you want to create a main window in the
|
|
* docker level. A main window in the docker level will
|
|
* be shown below the main windows in the screen lock level and
|
|
* above the main windows in the higher level.
|
|
*
|
|
* \note Under MiniGUI-Processes runtime mode, only the client which creates
|
|
* the first main window in the docker level can create other main windows
|
|
* in the docker level. For other clients, a main window in the higher
|
|
* level will be created.
|
|
* \note The maximal number of all main windows in the docker level is 8.
|
|
* MiniGUI will create a main windows in higher level if there is no room
|
|
* in the docker level.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_DOCKER 0x00000004L
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_HIGHER
|
|
* \brief The type for a main window in the higher level.
|
|
*
|
|
* Use this style when you want to create a main window in the
|
|
* higher level. A main window in the higher level will
|
|
* be shown below the main windows in the docker level and
|
|
* above the main windows in the normal level.
|
|
*
|
|
* \note The maximal number of all main windows in the higher level is 16
|
|
* by default. An attempt to create a main window in higher level
|
|
* will fail if there is no room in the higher level.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_HIGHER 0x00000005L
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_NORMAL
|
|
* \brief The type for a main window in the normal level.
|
|
*
|
|
* Use this style when you want to create a main window in the
|
|
* normal level (default). A main window in the normal level will
|
|
* be shown below the main windows in the higher level and
|
|
* above the main windows in the launcher level.
|
|
*
|
|
* \note The maximal number of all main windows in the normal level is 128
|
|
* by default. An attempt to create a main window in normal level
|
|
* will fail if there is no room in the normal level.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_NORMAL 0x00000006L
|
|
|
|
/**
|
|
* \def WS_EX_WINTYPE_LAUNCHER
|
|
* \brief The type for a main window in the launcher level.
|
|
*
|
|
* Use this style when you want to create a main window in the
|
|
* launcher level. A main window in the launcher level will
|
|
* be shown below the main windows in the normal level and
|
|
* above the wallpaper.
|
|
*
|
|
* \note Under MiniGUI-Processes runtime mode, only the client which creates
|
|
* the first main window in the launcher level can create other
|
|
* main windows in the launcher level. For other clients, a main window
|
|
* in the normal level will be created.
|
|
* \note The maximal number of all main windows in the launcher level is 8.
|
|
* MiniGUI will create a main windows in normal level if there is no room
|
|
* in the launcher level.
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
#define WS_EX_WINTYPE_LAUNCHER 0x00000007L
|
|
|
|
/** @} end of main_window_type_styles */
|
|
|
|
/**
|
|
* \def WS_EX_TROUNDCNS
|
|
* \brief The window have round corners at top edge.
|
|
*/
|
|
#define WS_EX_TROUNDCNS 0x00000010L
|
|
|
|
/**
|
|
* \def WS_EX_BROUNDCNS
|
|
* \brief The window have round corners at bottom edge.
|
|
*/
|
|
#define WS_EX_BROUNDCNS 0x00000020L
|
|
|
|
/**
|
|
* \def WS_EX_USEPRIVATECDC
|
|
* \brief The window has its own private client device context.
|
|
*
|
|
* \sa CreatePrivateClientDC
|
|
*/
|
|
#define WS_EX_USEPRIVATECDC 0x00000040L
|
|
|
|
/**
|
|
* \def WS_EX_NOTDRAGGABLE
|
|
* \brief A style controlling whether a main window can be dragged by using mouse.
|
|
*/
|
|
#define WS_EX_NOTDRAGGABLE 0x00000080L
|
|
#define WS_EX_DRAGGABLE 0x00000000L
|
|
|
|
/**
|
|
* \def WS_EX_USEPARENTFONT
|
|
* \brief The window uses the font of its parent as the default font.
|
|
*/
|
|
#define WS_EX_USEPARENTFONT 0x00000100L
|
|
|
|
/**
|
|
* \def WS_EX_USEPARENTCURSOR
|
|
* \brief The window uses the cursor of its parent as the default cursor.
|
|
*/
|
|
#define WS_EX_USEPARENTCURSOR 0x00000200L
|
|
|
|
/**
|
|
* \def WS_EX_USEPARENTRDR
|
|
* \brief The window use the same window renderer as parent.
|
|
*/
|
|
#define WS_EX_USEPARENTRDR 0x00000400L
|
|
|
|
/**
|
|
* \def WS_EX_NOPARENTNOTIFY
|
|
* \brief The window will not send any notification to the parent.
|
|
*
|
|
* \sa NotifyParentEx
|
|
*/
|
|
#define WS_EX_NOPARENTNOTIFY 0x00000800L
|
|
|
|
/**
|
|
* \def WS_EX_AUTOSECONDARYDC
|
|
* \brief The window creates its own secondary device context automatically.
|
|
*
|
|
* \sa CreateSecondaryDC
|
|
*/
|
|
#define WS_EX_AUTOSECONDARYDC 0x00001000L
|
|
|
|
/**
|
|
* \def WS_EX_TRANSPARENT
|
|
* \brief The window is transparent.
|
|
* \note This style is only implemented for controls.
|
|
*/
|
|
#define WS_EX_TRANSPARENT 0x00002000L
|
|
|
|
/**
|
|
* \def WS_EX_TOPMOST
|
|
* \brief The main window is in the higher level.
|
|
*
|
|
* Before 5.0.0,
|
|
* you can create a main window with this style in order to show the main window
|
|
* above all normal windows, and if you use MiniGUI-Processes runtime mode,
|
|
* the server (`mginit`) will always create global main windows.
|
|
*
|
|
* Since 5.0.0, we introduce a concept of levels for main windows. We can
|
|
* use new styles like \a WS_EX_WINTYPE_GLOBAL to create main windows in
|
|
* different levels. For historical reasons, you can still use this style,
|
|
* but MiniGUI will create a main window in the higher level for this styele.
|
|
*
|
|
* \sa main_window_type_styles
|
|
*/
|
|
#define WS_EX_TOPMOST 0x00004000L
|
|
|
|
/**
|
|
* \def WS_EX_TOOLWINDOW
|
|
* \brief The main window is a tool window, which can not gain the input focus.
|
|
*/
|
|
#define WS_EX_TOOLWINDOW 0x00008000L
|
|
|
|
/* The group reserved for BIDI support */
|
|
#define WS_EX_RIGHT 0x00010000L
|
|
#define WS_EX_LEFT 0x00000000L
|
|
#define WS_EX_RTLREADING 0x00020000L
|
|
#define WS_EX_LTRREADING 0x00000000L
|
|
|
|
/**
|
|
* \def WS_EX_LEFTSCROLLBAR
|
|
* \brief The horizontal scroll bar of the window is located at left.
|
|
*/
|
|
#define WS_EX_LEFTSCROLLBAR 0x00040000L
|
|
|
|
/**
|
|
* \def WS_EX_RIGHTSCROLLBAR
|
|
* \brief The horizontal scroll bar of the window is located at right (default).
|
|
*/
|
|
#define WS_EX_RIGHTSCROLLBAR 0x00000000L
|
|
|
|
/**
|
|
* \def WS_EX_DLGHIDE
|
|
* \brief The dialog won't show immediately after it is created.
|
|
*/
|
|
#define WS_EX_DLGHIDE 0x00100000L
|
|
|
|
/**
|
|
* \def WS_EX_AUTOPOSITION
|
|
* \brief The position of the main window will be determined by system.
|
|
*
|
|
* If a main window has this extend style when creating it, MiniGUI will
|
|
* determine the position in the screen for the main window. If the width
|
|
* or the height of the window specified in MAINWINCREATE structure is zero,
|
|
* MiniGUI will also determine a default size for the main window.
|
|
*
|
|
* Under the compositing schema, the compositor is responsible to calculate
|
|
* the position and the size for a main window.
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
#define WS_EX_AUTOPOSITION 0x00200000L
|
|
|
|
/**
|
|
* \def WS_EX_NOCLOSEBOX
|
|
* \brief The main window has no closing box on its caption.
|
|
*/
|
|
#define WS_EX_NOCLOSEBOX 0x00400000L
|
|
|
|
/**
|
|
* \def WS_EX_CLIPCHILDREN
|
|
* \brief When paint the window, the children areas will be clipped.
|
|
*/
|
|
#define WS_EX_CLIPCHILDREN 0x00800000L
|
|
|
|
/**
|
|
* \def WS_EX_LFRDR_MASK
|
|
* \brief The style mask for LF renderer internal usage.
|
|
*/
|
|
#define WS_EX_LFRDR_MASK 0x0F000000L
|
|
|
|
/**
|
|
* \def WS_EX_LFRDR_CUSTOM1
|
|
* \brief The user-defined extended style. It's often used to process
|
|
* user-defined hotspot area.
|
|
*/
|
|
#define WS_EX_LFRDR_CUSTOM1 0x01000000L
|
|
|
|
/**
|
|
* \def WS_EX_LFRDR_CUSTOM2
|
|
* \brief The user-defined extended style.
|
|
*
|
|
* \sa WS_EX_LFRDR_CUSTOM1
|
|
*/
|
|
#define WS_EX_LFRDR_CUSTOM2 0x02000000L
|
|
|
|
/**
|
|
* \def WS_EX_LFRDR_CUSTOM3
|
|
* \brief The user-defined extended style.
|
|
*
|
|
* \sa WS_EX_LFRDR_CUSTOM1
|
|
*/
|
|
#define WS_EX_LFRDR_CUSTOM3 0x04000000L
|
|
|
|
/**
|
|
* \def WS_EX_LFRDR_CUSTOM4
|
|
* \brief The user-defined extended style.
|
|
*
|
|
* \sa WS_EX_LFRDR_CUSTOM1
|
|
*/
|
|
#define WS_EX_LFRDR_CUSTOM4 0x08000000L
|
|
|
|
/* Obsolete style, back-compatibility definitions. */
|
|
#define WS_EX_IMECOMPOSE 0x00000000L
|
|
|
|
/**
|
|
* \def WS_EX_INTERNAL_MASK
|
|
* \brief The style mask for internal use.
|
|
*
|
|
* Do not use the bits in this mask for applications.
|
|
*/
|
|
#define WS_EX_INTERNAL_MASK 0xF0000000L
|
|
|
|
/** @} end of styles */
|
|
|
|
/**
|
|
* \addtogroup fns Functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \defgroup lf_fns Look and Feel Renderer management functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \def WE_FONTS_NUMBER
|
|
* \brief The number of window element font attributes.
|
|
*/
|
|
#define WE_FONTS_NUMBER 4
|
|
|
|
/**
|
|
* \def WE_METRICS_NUMBER
|
|
* \brief The number of window element metric attributes.
|
|
*/
|
|
#define WE_METRICS_NUMBER 6
|
|
|
|
/**
|
|
* \def WE_COLORS_NUMBER
|
|
* \brief The number of window element color attributes.
|
|
*/
|
|
#define WE_COLORS_NUMBER 14
|
|
|
|
/* Window type mask */
|
|
#define WE_ATTR_TYPE_MASK 0xF000
|
|
#define WE_ATTR_TYPE_COLOR_MASK 0x0F00
|
|
#define WE_ATTR_INDEX_MASK 0x00FF
|
|
|
|
#define WE_ATTR_TYPE_FONT 0x1000
|
|
#define WE_ATTR_TYPE_METRICS 0x2000
|
|
|
|
#define WE_ATTR_TYPE_COLOR 0x3000
|
|
#define WE_ATTR_TYPE_FGC 0x3000
|
|
#define WE_ATTR_TYPE_BGCA 0x3100
|
|
#define WE_ATTR_TYPE_BGCB 0x3200
|
|
|
|
/* window element id */
|
|
#define WE_CAPTION 0
|
|
#define WE_MENU 1
|
|
#define WE_MESSAGEBOX 2
|
|
#define WE_TOOLTIP 3
|
|
#define WE_WND_BORDER 4
|
|
#define WE_SCROLLBAR 5
|
|
#define WE_INACTIVE_CAPTION 6
|
|
#define WE_WINDOW 7
|
|
#define WE_THREED_BODY 8
|
|
#define WE_SELECTED_ITEM 9
|
|
#define WE_DISABLED_ITEM 10
|
|
#define WE_HIGHLIGHT_ITEM 11
|
|
#define WE_SIGNIFICANT_ITEM 12
|
|
#define WE_DESKTOP 13
|
|
|
|
/* window element attr id */
|
|
|
|
/* Window caption */
|
|
#define WE_FONT_CAPTION (WE_CAPTION | WE_ATTR_TYPE_FONT)
|
|
#define WE_METRICS_CAPTION (WE_CAPTION | WE_ATTR_TYPE_METRICS)
|
|
#define WE_FGC_ACTIVE_CAPTION (WE_CAPTION | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGCA_ACTIVE_CAPTION (WE_CAPTION | WE_ATTR_TYPE_BGCA)
|
|
#define WE_BGCB_ACTIVE_CAPTION (WE_CAPTION | WE_ATTR_TYPE_BGCB)
|
|
|
|
/* Menu */
|
|
#define WE_FONT_MENU (WE_MENU | WE_ATTR_TYPE_FONT)
|
|
#define WE_METRICS_MENU (WE_MENU | WE_ATTR_TYPE_METRICS)
|
|
#define WE_FGC_MENU (WE_MENU | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGC_MENU (WE_MENU | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* Message box */
|
|
#define WE_FONT_MESSAGEBOX (WE_MESSAGEBOX | WE_ATTR_TYPE_FONT)
|
|
#define WE_FGC_MESSAGEBOX (WE_MESSAGEBOX | WE_ATTR_TYPE_FGC)
|
|
|
|
/* Tool tips */
|
|
#define WE_FONT_TOOLTIP (WE_TOOLTIP | WE_ATTR_TYPE_FONT)
|
|
#define WE_FGC_TOOLTIP (WE_TOOLTIP | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGC_TOOLTIP (WE_TOOLTIP | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* Window border */
|
|
#define WE_METRICS_WND_BORDER (WE_WND_BORDER | WE_ATTR_TYPE_METRICS)
|
|
#define WE_FGC_ACTIVE_WND_BORDER (WE_WND_BORDER | WE_ATTR_TYPE_FGC)
|
|
#define WE_FGC_INACTIVE_WND_BORDER (WE_WND_BORDER | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* Scroll bar */
|
|
#define WE_METRICS_SCROLLBAR (WE_SCROLLBAR | WE_ATTR_TYPE_METRICS)
|
|
|
|
/* Inactive caption */
|
|
#define WE_FGC_INACTIVE_CAPTION (WE_INACTIVE_CAPTION | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGCA_INACTIVE_CAPTION (WE_INACTIVE_CAPTION | WE_ATTR_TYPE_BGCA)
|
|
#define WE_BGCB_INACTIVE_CAPTION (WE_INACTIVE_CAPTION | WE_ATTR_TYPE_BGCB)
|
|
|
|
/* Window */
|
|
#define WE_FGC_WINDOW (WE_WINDOW | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGC_WINDOW (WE_WINDOW | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* 3d body */
|
|
#define WE_FGC_THREED_BODY (WE_THREED_BODY | WE_ATTR_TYPE_FGC)
|
|
#define WE_MAINC_THREED_BODY (WE_THREED_BODY | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* Selected items */
|
|
#define WE_FGC_SELECTED_ITEM (WE_SELECTED_ITEM | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGC_SELECTED_ITEM (WE_SELECTED_ITEM | WE_ATTR_TYPE_BGCA)
|
|
#define WE_BGC_SELECTED_LOSTFOCUS (WE_SELECTED_ITEM | WE_ATTR_TYPE_BGCB)
|
|
|
|
/* Invalidate items */
|
|
#define WE_FGC_DISABLED_ITEM (WE_DISABLED_ITEM | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGC_DISABLED_ITEM (WE_DISABLED_ITEM | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* Highlight items */
|
|
#define WE_FGC_HIGHLIGHT_ITEM (WE_HIGHLIGHT_ITEM | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGC_HIGHLIGHT_ITEM (WE_HIGHLIGHT_ITEM | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* Significant items */
|
|
#define WE_FGC_SIGNIFICANT_ITEM (WE_SIGNIFICANT_ITEM | WE_ATTR_TYPE_FGC)
|
|
#define WE_BGC_SIGNIFICANT_ITEM (WE_SIGNIFICANT_ITEM | WE_ATTR_TYPE_BGCA)
|
|
|
|
/* Desktop */
|
|
#define WE_BGC_DESKTOP (WE_DESKTOP | WE_ATTR_TYPE_BGCA)
|
|
|
|
#define WE_ATTR_TYPE_ICON 0x4000
|
|
#define WE_ATTR_TYPE_ICON_MASK 0x0F00
|
|
#define WE_ATTR_TYPE_SMALLICON 0x4000
|
|
#define WE_ATTR_TYPE_LARGEICON 0x4100
|
|
|
|
#define WE_LARGEICON_APPLICATION (WE_ATTR_TYPE_LARGEICON | 0x00)
|
|
#define WE_LARGEICON_HAND (WE_ATTR_TYPE_LARGEICON | 0x01)
|
|
#define WE_LARGEICON_QUESTION (WE_ATTR_TYPE_LARGEICON | 0x02)
|
|
#define WE_LARGEICON_EXCLAMATION (WE_ATTR_TYPE_LARGEICON | 0x03)
|
|
#define WE_LARGEICON_ASTERISK (WE_ATTR_TYPE_LARGEICON | 0x04)
|
|
#define WE_LARGEICON_STOP WE_LARGEICON_HAND
|
|
#define WE_LARGEICON_INFORMATION WE_LARGEICON_ASTERISK
|
|
|
|
#define WE_SMALLICON_APPLICATION (WE_ATTR_TYPE_SMALLICON | 0x00)
|
|
#define WE_SMALLICON_HAND (WE_ATTR_TYPE_SMALLICON | 0x01)
|
|
#define WE_SMALLICON_QUESTION (WE_ATTR_TYPE_SMALLICON | 0x02)
|
|
#define WE_SMALLICON_EXCLAMATION (WE_ATTR_TYPE_SMALLICON | 0x03)
|
|
#define WE_SMALLICON_ASTERISK (WE_ATTR_TYPE_SMALLICON | 0x04)
|
|
#define WE_SMALLICON_STOP WE_SMALLICON_HAND
|
|
#define WE_SMALLICON_INFORMATION WE_SMALLICON_ASTERISK
|
|
|
|
/**
|
|
* \def WE_ATTR_TYPE_RDR
|
|
* \brief The specific type for LF renderer.
|
|
*/
|
|
#define WE_ATTR_TYPE_RDR 0x5000
|
|
|
|
#define WE_LFFLAT_NUMBER 1
|
|
#ifdef _MGLF_RDR_FLAT
|
|
|
|
#define WE_LFFLAT_TAB_NRMLCLR (WE_ATTR_TYPE_RDR | 0)
|
|
#endif
|
|
|
|
#define WE_LFSKIN_NUMBER 28
|
|
#ifdef _MGLF_RDR_SKIN
|
|
#define WE_LFSKIN_WND_BKGND (WE_ATTR_TYPE_RDR | 0)
|
|
|
|
#define WE_LFSKIN_CAPTION (WE_ATTR_TYPE_RDR | 1)
|
|
#define WE_LFSKIN_CAPTION_BTN (WE_ATTR_TYPE_RDR | 2)
|
|
|
|
#define WE_LFSKIN_SCROLLBAR_VSHAFT (WE_ATTR_TYPE_RDR | 3)
|
|
#define WE_LFSKIN_SCROLLBAR_VTHUMB (WE_ATTR_TYPE_RDR | 4)
|
|
#define WE_LFSKIN_SCROLLBAR_HSHAFT (WE_ATTR_TYPE_RDR | 5)
|
|
#define WE_LFSKIN_SCROLLBAR_HTHUMB (WE_ATTR_TYPE_RDR | 6)
|
|
#define WE_LFSKIN_SCROLLBAR_ARROWS (WE_ATTR_TYPE_RDR | 7)
|
|
|
|
#define WE_LFSKIN_BORDER_TOP (WE_ATTR_TYPE_RDR | 8)
|
|
#define WE_LFSKIN_BORDER_BOTTOM (WE_ATTR_TYPE_RDR | 9)
|
|
#define WE_LFSKIN_BORDER_LEFT (WE_ATTR_TYPE_RDR | 10)
|
|
#define WE_LFSKIN_BORDER_RIGHT (WE_ATTR_TYPE_RDR | 11)
|
|
|
|
#define WE_LFSKIN_ARROWS (WE_ATTR_TYPE_RDR | 12)
|
|
#define WE_LFSKIN_ARROWS_SHELL (WE_ATTR_TYPE_RDR | 13)
|
|
|
|
#define WE_LFSKIN_RADIOBUTTON (WE_ATTR_TYPE_RDR | 14)
|
|
#define WE_LFSKIN_CHECKBUTTON (WE_ATTR_TYPE_RDR | 15)
|
|
#define WE_LFSKIN_PUSHBUTTON (WE_ATTR_TYPE_RDR | 16)
|
|
|
|
#define WE_LFSKIN_TREE (WE_ATTR_TYPE_RDR | 17)
|
|
|
|
#define WE_LFSKIN_HEADER (WE_ATTR_TYPE_RDR | 18)
|
|
#define WE_LFSKIN_TAB (WE_ATTR_TYPE_RDR | 19)
|
|
|
|
#define WE_LFSKIN_PROGRESS_HCHUNK (WE_ATTR_TYPE_RDR | 20)
|
|
#define WE_LFSKIN_PROGRESS_VCHUNK (WE_ATTR_TYPE_RDR | 21)
|
|
#define WE_LFSKIN_PROGRESS_HTRACKBAR (WE_ATTR_TYPE_RDR | 22)
|
|
#define WE_LFSKIN_PROGRESS_VTRACKBAR (WE_ATTR_TYPE_RDR | 23)
|
|
|
|
#define WE_LFSKIN_TBSLIDER_H (WE_ATTR_TYPE_RDR | 24)
|
|
#define WE_LFSKIN_TRACKBAR_VERT (WE_ATTR_TYPE_RDR | 25)
|
|
#define WE_LFSKIN_TRACKBAR_HORZ (WE_ATTR_TYPE_RDR | 26)
|
|
#define WE_LFSKIN_TBSLIDER_V (WE_ATTR_TYPE_RDR | 27)
|
|
#endif
|
|
|
|
/**
|
|
* \var typedef LRESULT (* WNDPROC)(HWND, int, WPARAM, LPARAM)
|
|
* \brief Type of the window callback procedure.
|
|
*/
|
|
typedef LRESULT (* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
/**
|
|
* \var typedef void (* NOTIFPROC)(HWND hwnd, LINT id, int nc, DWORD add_data)
|
|
* \brief Type of the notification callback procedure.
|
|
*
|
|
* This is the function type of notification callback procedure.
|
|
* If you set the notification callback procedure for a window.
|
|
* When MiniGUI got a notification message, MiniGUI will call this
|
|
* callback procedure in the context of the target window thread.
|
|
*
|
|
* If you have not set the notification callback procedure of the target
|
|
* window, MiniGUI will send a MSG_COMMAND message to the window procedure.
|
|
*
|
|
* Since 5.0.0, you can also set the notification callback procedure for
|
|
* a main window or a virtual window. You can call \a NotifyWindow function
|
|
* to send a notify message to the traget window.
|
|
*
|
|
* \note The type of \a id changed from int to LINT since v3.2.
|
|
*
|
|
* \sa SetNotificationCallback, NotifyWindow, NotifyParentEx
|
|
*/
|
|
typedef void (* NOTIFPROC) (HWND hwnd, LINT id, int nc, DWORD add_data);
|
|
|
|
/** The window element attributes structure. */
|
|
typedef struct _WINDOW_ELEMENT_ATTR {
|
|
/** The attribute identifier. */
|
|
int we_attr_id;
|
|
/** The attribute value. */
|
|
DWORD we_attr;
|
|
} WINDOW_ELEMENT_ATTR;
|
|
|
|
struct _WINDOW_ELEMENT_RENDERER;
|
|
typedef struct _WINDOW_ELEMENT_RENDERER* PWERENDERER;
|
|
|
|
#define SBS_NORMAL 0x00
|
|
#define SBS_DISABLED 0x01
|
|
#define SBS_HIDE 0x02
|
|
|
|
/**
|
|
* The scrollbar information structure in look and feel.
|
|
*/
|
|
typedef struct _LFSCROLLBARINFO {
|
|
/** The minimum value of scrollbar range. */
|
|
int minPos;
|
|
/** The max value of scrollbar range. */
|
|
int maxPos;
|
|
/** The current scrollbar pos. */
|
|
int curPos;
|
|
/** The step per page. */
|
|
int pageStep;
|
|
/** The length of arrow. */
|
|
int arrowLen;
|
|
/** The start pixel of thumb. */
|
|
int barStart;
|
|
/** The length of thumb. */
|
|
int barLen;
|
|
/** The status of scrollbar. */
|
|
int status;
|
|
} LFSCROLLBARINFO;
|
|
|
|
typedef LFSCROLLBARINFO* PLFSCROLLBARINFO;
|
|
|
|
/**
|
|
* The scrollbar data construction for scrollbar control.
|
|
*/
|
|
typedef struct _SCROLLBARDATA {
|
|
/** The minimum value of scrollbar range. */
|
|
int minPos;
|
|
/** The max value of scrollbar range. */
|
|
int maxPos;
|
|
/** The current scrollbar pos. */
|
|
int curPos;
|
|
/** The step per page. */
|
|
int pageStep;
|
|
/** The length of arrow. */
|
|
int arrowLen;
|
|
/** The start pixel of thumb. */
|
|
int barStart;
|
|
/** The length of thumb. */
|
|
int barLen;
|
|
/* mouse position before tracking thumb.
|
|
* it represents the distance from x mouse postion to barStart
|
|
* for horizontal scrollbar.
|
|
* it represents the distance from y mouse postion to barStart
|
|
* for vertical scrollbar.
|
|
*/
|
|
int track_pos;
|
|
/** The status of scrollbar. */
|
|
int status;
|
|
} SCROLLBARDATA;
|
|
|
|
typedef SCROLLBARDATA* PSCROLLBARDATA;
|
|
|
|
/** left or up arrow is in disabled state */
|
|
#define SBS_DISABLED_LTUP 0x0100
|
|
|
|
/** right or bottom arrow is in disabled state */
|
|
#define SBS_DISABLED_BTDN 0x0200
|
|
|
|
/** left or up arrow is in hilited state */
|
|
#define SBS_HILITE_LTUP 0x0400
|
|
|
|
/** right or bottom arrow is in hilited state */
|
|
#define SBS_HILITE_BTDN 0x0800
|
|
|
|
/** thumb is in hilite state as cursor is in the area of thumb */
|
|
#define SBS_HILITE_THUMB 0x0010
|
|
|
|
/** left or up arrow is in pressed state */
|
|
#define SBS_PRESSED_LTUP 0x0020
|
|
|
|
/** right or bottom arrow is in pressed state */
|
|
#define SBS_PRESSED_BTDN 0x0040
|
|
|
|
/** thumb is in pressed state as left button presses it */
|
|
#define SBS_PRESSED_THUMB 0x0080
|
|
|
|
|
|
#define LFRDR_WINTYPE_UNKNOWN 0
|
|
#define LFRDR_WINTYPE_DIALOG 1
|
|
#define LFRDR_WINTYPE_MAINWIN 2
|
|
#define LFRDR_WINTYPE_CONTROL 3
|
|
|
|
/** The window style information structure. Used by
|
|
* \a calc_we_metrics renderer function.
|
|
*/
|
|
typedef struct _LFRDR_WINSTYLEINFO
|
|
{
|
|
/** The styles of window.*/
|
|
int dwStyle;
|
|
|
|
/** The window type, can be one of the values:
|
|
* - LFRDR_WINTYPE_DIALOG\n
|
|
* For dialog.
|
|
* - LFRDR_WINTYPE_MAINWIN\n
|
|
* For main window.
|
|
* - LFRDR_WINTYPE_CONTROL\n
|
|
* For control.
|
|
*/
|
|
int winType;
|
|
} LFRDR_WINSTYLEINFO;
|
|
|
|
/**
|
|
* The scrollbar information structure. Used by
|
|
* \a draw_scrollbar and \a get_scrollbar_rect
|
|
* renderer function.
|
|
*/
|
|
typedef struct _LFRDR_TRACKBARINFO
|
|
{
|
|
int nMin;
|
|
int nMax;
|
|
int nPos;
|
|
int nTickFreq;
|
|
}LFRDR_TRACKBARINFO;
|
|
|
|
#define LFRDR_METRICS_MASK 0xFF00
|
|
#define LFRDR_METRICS_BORDER 0x0100
|
|
#define LFRDR_METRICS_CAPTION_H 0x0200
|
|
#define LFRDR_METRICS_ICON_H 0x0300
|
|
#define LFRDR_METRICS_ICON_W 0x0400
|
|
#define LFRDR_METRICS_MENU_H 0x0500
|
|
#define LFRDR_METRICS_VSCROLL_W 0x0600
|
|
#define LFRDR_METRICS_HSCROLL_H 0x0700
|
|
#define LFRDR_METRICS_MINWIN_WIDTH 0x0800
|
|
#define LFRDR_METRICS_MINWIN_HEIGHT 0x0900
|
|
|
|
#define LFRDR_SB_MINBARLEN 10
|
|
|
|
/**
|
|
* \def LEN_RENDERER_NAME
|
|
* \brief The maximum length of a renderer name.
|
|
*/
|
|
#define LEN_RENDERER_NAME 15
|
|
|
|
/* button status used by button and 3dbox. */
|
|
#define LFRDR_BTN_STATUS_MASK 0x03
|
|
#define LFRDR_BTN_STATUS_NORMAL 0x00
|
|
#define LFRDR_BTN_STATUS_HILITE 0x01
|
|
#define LFRDR_BTN_STATUS_PRESSED 0x02
|
|
#define LFRDR_BTN_STATUS_DISABLED 0x03
|
|
|
|
/* a flag used by radio button and check button. */
|
|
#define LFRDR_BTN_STATUS_SELECTED 0x04
|
|
|
|
/* a flag used by button on capton bar. */
|
|
#define LFRDR_BTN_STATUS_INACTIVE 0x08
|
|
|
|
/* thick or thin frame used by 3dbox. */
|
|
#define LFRDR_3DBOX_THICKFRAME 0x20
|
|
|
|
/* filled 3dbox */
|
|
#define LFRDR_3DBOX_FILLED 0x40
|
|
|
|
/*select status used by checkmark or radio.*/
|
|
#define LFRDR_MARK_SELECTED_MASK 0x05
|
|
#define LFRDR_MARK_ALL_SELECTED 0x01
|
|
#define LFRDR_MARK_HALF_SELECTED 0x04
|
|
|
|
/* a flag whether a checkmark or radio has a shell or not.*/
|
|
#define LFRDR_MARK_HAVESHELL 0x02
|
|
|
|
/*the direction of arrow.*/
|
|
#define LFRDR_ARROW_DIRECT_MASK 0x0F00
|
|
#define LFRDR_ARROW_LEFT 0x0000
|
|
#define LFRDR_ARROW_RIGHT 0x0100
|
|
#define LFRDR_ARROW_UP 0x0200
|
|
#define LFRDR_ARROW_DOWN 0x0300
|
|
|
|
/* hollow arrow or filled */
|
|
#define LFRDR_ARROW_NOFILL 0x1000
|
|
#define LFRDR_ARROW_HAVESHELL 0x2000
|
|
|
|
/* minimum of menu margin */
|
|
#define LFRDR_MENUITEMOFFY_MIN 4
|
|
|
|
#define LFRDR_3DBOX_COLOR_LIGHTEST 0x01
|
|
#define LFRDR_3DBOX_COLOR_DARKEST 0x02
|
|
#define LFRDR_3DBOX_COLOR_LIGHTER 0x03
|
|
#define LFRDR_3DBOX_COLOR_DARKER 0x04
|
|
|
|
/* flag of propsheet tab */
|
|
#define LFRDR_TAB_BOTTOM 0x0001
|
|
#define LFRDR_TAB_ACTIVE 0x0010
|
|
#define LFRDR_TAB_ICON 0x0100
|
|
|
|
/* for fold icon*/
|
|
#define LFRDR_TREE_WITHICON 0x08
|
|
#define LFRDR_TREE_FOLD 0x01
|
|
|
|
/* for connecting line*/
|
|
#define LFRDR_TREE_CHILD 0x02
|
|
#define LFRDR_TREE_NEXT 0x04
|
|
|
|
#define SYSICO_ITEM_NUMBER 5
|
|
|
|
/** The window element renderer structure. */
|
|
typedef struct _WINDOW_ELEMENT_RENDERER {
|
|
/** The renderer name. */
|
|
const char name[LEN_RENDERER_NAME+1];
|
|
|
|
/** The pointer to initialize function. It is used to initialize basic
|
|
* renderer information (metrics, color, font, icon, etc) and private
|
|
* information.
|
|
*/
|
|
int (*init) (PWERENDERER renderer);
|
|
|
|
/** The pointer to release function. It is used to release renderer
|
|
* resource.
|
|
* \sa init
|
|
*/
|
|
int (*deinit) (PWERENDERER renderer);
|
|
|
|
/** The function pointer to calculate lighter, lightest, darker
|
|
* and darkest color according to main color.
|
|
*
|
|
* \param color The main color.
|
|
* \param flag The color type, can be one of the values:
|
|
* - LFRDR_3DBOX_COLOR_DARKER \n
|
|
* darker color.
|
|
* - LFRDR_3DBOX_COLOR_DARKEST \n
|
|
* darkest color.
|
|
* - LFRDR_3DBOX_COLOR_LIGHTER \n
|
|
* lighter color.
|
|
* - LFRDR_3DBOX_COLOR_LIGHTEST \n
|
|
* lightest color.
|
|
*/
|
|
DWORD (*calc_3dbox_color) (DWORD color, int flag);
|
|
|
|
/** The pointer to draw 3dbox function.
|
|
*
|
|
* \param flag, can be OR'ed by the following values:
|
|
* - LFRDR_BTN_STATUS_NORMAL\n
|
|
* Normal status.
|
|
* - LFRDR_BTN_STATUS_HILITE\n
|
|
* Highlight status.
|
|
* - LFRDR_BTN_STATUS_PRESSED\n
|
|
* Pushed status.
|
|
* - LFRDR_BTN_STATUS_DISABLED\n
|
|
* Disabled status.
|
|
* - LFRDR_BTN_STATUS_SELECTED\n
|
|
* Selected status.
|
|
*
|
|
* - LFRDR_3DBOX_THICKFRAME\n
|
|
* Use thick/thin frame.
|
|
* - LFRDR_3DBOX_FILLED\n
|
|
* Filled rectangle.
|
|
*/
|
|
void (*draw_3dbox) (HDC hdc, const RECT* pRect, DWORD color, DWORD flag);
|
|
|
|
|
|
/** The pointer to draw radio function.
|
|
*
|
|
* \param status, can be OR'ed by the following values:
|
|
* - LFRDR_MARK_ALL_SELECTED\n
|
|
* All selected status.
|
|
* - LFRDR_MARK_HALF_SELECTED\n
|
|
* Half selected status.
|
|
* - LFRDR_MARK_HAVESHELL\n
|
|
* Have shell for mark.
|
|
*/
|
|
void (*draw_radio) (HDC hdc, const RECT* pRect, DWORD color, int status);
|
|
|
|
/** The pointer to draw checkbox function.
|
|
* \sa draw_radio
|
|
*/
|
|
void (*draw_checkbox) (HDC hdc, const RECT* pRect, DWORD color,
|
|
int status);
|
|
|
|
/** The pointer to draw checkmark function.
|
|
* \sa draw_radio
|
|
*/
|
|
void (*draw_checkmark) (HDC hdc, const RECT* pRect, DWORD color,
|
|
int status);
|
|
|
|
/** The pointer to draw arrow function.
|
|
*
|
|
* \param status, can be OR'ed by the following values:
|
|
* - LFRDR_ARROW_LEFT\n
|
|
* Left arrow.
|
|
* - LFRDR_ARROW_RIGHT\n
|
|
* Right arrow.
|
|
* - LFRDR_ARROW_UP\n
|
|
* Up arrow.
|
|
* - LFRDR_ARROW_DOWN\n
|
|
* Down arrow.
|
|
* - LFRDR_ARROW_NOFILL\n
|
|
* No filled arrow area.
|
|
* - LFRDR_ARROW_HAVESHELL\n
|
|
* Have shell for arrow.
|
|
*/
|
|
void (*draw_arrow) (HWND hWnd, HDC hdc, const RECT* pRect, DWORD color, int status);
|
|
|
|
/** The pointer to draw fold function, this function used
|
|
* by listview and treeview.
|
|
*
|
|
* \param status, can be OR'ed by the following values:
|
|
* - LFRDR_TREE_FOLD\n
|
|
* Draw opening/closing folder.
|
|
* - LFRDR_TREE_CHILD\n
|
|
* Draw connecting status between parent and child node.
|
|
* - LFRDR_TREE_NEXT\n
|
|
* Draw connecting status between current and next node.
|
|
*
|
|
* \param next The number of child node.
|
|
*/
|
|
void (*draw_fold) (HWND hWnd, HDC hdc, const RECT* pRect, DWORD color,
|
|
int status, int next);
|
|
|
|
/** The pointer to draw focus frame function.*/
|
|
void (*draw_focus_frame) (HDC hdc, const RECT *pRect, DWORD color);
|
|
|
|
/** The pointer to draw normal item function, this function used by listbox.*/
|
|
void (*draw_normal_item) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color);
|
|
|
|
/** The pointer to draw highlight item function, this function used by listbox.*/
|
|
void (*draw_hilite_item) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color);
|
|
|
|
/** The pointer to draw disabled item function, this function used by listbox. */
|
|
void (*draw_disabled_item) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color);
|
|
|
|
/** The pointer to draw significant item function, this function used by listbox.*/
|
|
void (*draw_significant_item) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color);
|
|
|
|
/** The pointer to draw push button function, this function used
|
|
* by button.
|
|
*
|
|
* \param status, can be OR'ed by the following values:
|
|
* - BST_NORMAL\n
|
|
* - BST_HILITE\n
|
|
* - BST_PUSHED\n
|
|
* - BST_DISABLE\n
|
|
* - BST_UNCHECKED\n
|
|
* - BST_CHECKED\n
|
|
* - BST_INDETERMINATE\n
|
|
* - BST_FOCUS\n
|
|
*/
|
|
void (*draw_push_button) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color1, DWORD color2, int status);
|
|
|
|
/** The pointer to draw radio button function, the function ued
|
|
* by button.
|
|
*
|
|
* \param status, can be OR'ed by the following values:
|
|
* - LFRDR_BTN_STATUS_NORMAL\n
|
|
* Normal status.
|
|
* - LFRDR_BTN_STATUS_HILITE\n
|
|
* Highlight status.
|
|
* - LFRDR_BTN_STATUS_PRESSED\n
|
|
* Pushed status.
|
|
* - LFRDR_BTN_STATUS_DISABLED\n
|
|
* Disabled status.
|
|
*
|
|
* - LFRDR_BTN_STATUS_SELECTED\n
|
|
* Selected status.
|
|
*/
|
|
void (*draw_radio_button) (HWND hWnd, HDC hdc, const RECT* pRect, int status);
|
|
|
|
/** The pointer to draw check button function, this function used
|
|
* by button.
|
|
*
|
|
* \param status, can be OR'ed by the following values:
|
|
* - LFRDR_BTN_STATUS_NORMAL\n
|
|
* Normal status.
|
|
* - LFRDR_BTN_STATUS_HILITE\n
|
|
* Highlight status.
|
|
* - LFRDR_BTN_STATUS_PRESSED\n
|
|
* Pushed status.
|
|
* - LFRDR_BTN_STATUS_DISABLED\n
|
|
* Disabled status.
|
|
*
|
|
* - LFRDR_BTN_STATUS_SELECTED\n
|
|
* Selected status.
|
|
*/
|
|
void (*draw_check_button) (HWND hWnd, HDC hdc, const RECT* pRect, int status);
|
|
|
|
/** The pointer to draw window border function.*/
|
|
void (*draw_border) (HWND hWnd, HDC hdc, BOOL is_active);
|
|
|
|
/** The pointer to draw window text and icon function.*/
|
|
void (*draw_caption) (HWND hWnd, HDC hdc, BOOL is_active);
|
|
|
|
/** The pointer to draw caption button function.
|
|
*
|
|
* \param ht_code The hittest code. If 0, it should draw all buttons.
|
|
* \param state The button state, can be one of the values:
|
|
* - LFRDR_BTN_STATUS_NORMAL\n
|
|
* Normal status.
|
|
* - LFRDR_BTN_STATUS_HILITE\n
|
|
* Highlight status.
|
|
* - LFRDR_BTN_STATUS_PRESSED\n
|
|
* Pushed status.
|
|
* - LFRDR_BTN_STATUS_DISABLED\n
|
|
* Disabled status.
|
|
*/
|
|
void (*draw_caption_button) (HWND hwnd, HDC hdc, int ht_code, int state);
|
|
|
|
/** The pointer to draw scrollbar function.
|
|
*
|
|
* \param sb_pos The position need to be paint.
|
|
* If 0, it should draw all the scrollbar.
|
|
* \param status, which is one of the value:
|
|
* - LFRDR_BTN_STATUS_NORMAL\n
|
|
* Normal status.
|
|
* - LFRDR_BTN_STATUS_HILITE\n
|
|
* Highlight status.
|
|
* - LFRDR_BTN_STATUS_PRESSED\n
|
|
* Pushed status.
|
|
* - LFRDR_BTN_STATUS_DISABLED\n
|
|
* Disabled status.
|
|
*/
|
|
void (*draw_scrollbar) (HWND hWnd, HDC hdc, int sb_pos);
|
|
|
|
/** The pointer to get trackbar rect function. */
|
|
void (*calc_trackbar_rect) (HWND hWnd, LFRDR_TRACKBARINFO *info,
|
|
DWORD dwStyle, const RECT* rcClient, RECT* rcRuler,
|
|
RECT* rcBar, RECT* rcBorder);
|
|
|
|
/** The pointer to draw trackbar function. */
|
|
void (*draw_trackbar) (HWND hWnd, HDC hdc, LFRDR_TRACKBARINFO *info);
|
|
|
|
/** The pointer to calculate window element area function.
|
|
*
|
|
* \param which The hit test code of the part to be calculated.
|
|
* \param we_area The reactangle for calculating result.
|
|
*
|
|
* */
|
|
int (*calc_we_area) (HWND hWnd, int which, RECT* we_area);
|
|
|
|
/** The pointer to calculate window element metrics function.
|
|
*
|
|
* \param which, can be one of the following values:
|
|
* - LFRDR_METRICS_BORDER\n
|
|
* The metrics of window border.
|
|
* - LFRDR_METRICS_CAPTION_H\n
|
|
* The height of window caption.
|
|
* - LFRDR_METRICS_MENU_H\n
|
|
* The height of window menu.
|
|
* - LFRDR_METRICS_VSCROLL_W\n
|
|
* The width of vertical scrollbar.
|
|
* - LFRDR_METRICS_HSCROLL_H\n
|
|
* The height of horizontal scrollbar.
|
|
* - LFRDR_METRICS_ICON_H\n
|
|
* The height of window icon.
|
|
* - LFRDR_METRICS_ICON_W\n
|
|
* The width of window icon.
|
|
* - LFRDR_METRICS_MINWIN_WIDTH\n
|
|
* The minimize width of window.
|
|
* - LFRDR_METRICS_MINWIN_HEIGHT\n
|
|
* The minimize height of window.
|
|
*/
|
|
int (*calc_we_metrics) (HWND hWnd,
|
|
LFRDR_WINSTYLEINFO* style_info, int which);
|
|
|
|
/** The pointer to hittest function.
|
|
*
|
|
* \param x, y The position of the mouse in screen coordinates.
|
|
* \return HT_XXX or HT_USER_XXX, hittest value.
|
|
*/
|
|
int (*hit_test) (HWND hWnd, int x, int y);
|
|
|
|
/** The pointer to user-defined hotspot function.*/
|
|
int (*on_click_hotspot) (HWND hWnd, int which);
|
|
|
|
/** The pointer to draw user-defined hotspot function.
|
|
*
|
|
* \param ht_code The hittest code. If 0, it should draw all
|
|
* user-defined hotspot.
|
|
* \param state The button state, can be one of the values:
|
|
* - LFRDR_BTN_STATUS_NORMAL\n
|
|
* - LFRDR_BTN_STATUS_HILITE\n
|
|
* - LFRDR_BTN_STATUS_PRESSED\n
|
|
*/
|
|
void (*draw_custom_hotspot) (HWND hWnd, HDC hdc, int ht_code, int state);
|
|
|
|
/** The pointer to calculate scrollbar's thumb area function.
|
|
*
|
|
* \param vertical Vertical scrollbar or Horizontal scrollbar.
|
|
* \param sb_info The scrollbar information for calculating result.
|
|
*
|
|
*/
|
|
void (*calc_thumb_area) (HWND hWnd, BOOL vertical,
|
|
LFSCROLLBARINFO* sb_info);
|
|
|
|
/** The pointer to output disabled text function.*/
|
|
void (*disabled_text_out) (HWND hWnd, HDC hdc, const char* spText,
|
|
PRECT rc, DWORD dt_fmt);
|
|
|
|
/** The pointer to draw propsheet's tab function.
|
|
*
|
|
* \param flag, can be OR'ed by the following values:
|
|
* - LFRDR_TAB_BOTTOM\n
|
|
* Use bottom tab.
|
|
* - LFRDR_TAB_ACTIVE\n
|
|
* Active tab.
|
|
* - LFRDR_TAB_ICON\n
|
|
* With icon.
|
|
*/
|
|
void (*draw_tab) (HWND hWnd, HDC hdc, RECT *rect, char *title,
|
|
DWORD color, int flag, HICON icon);
|
|
|
|
/** The pointer to draw progressbar's chunk/bar function.*/
|
|
void (*draw_progress) (HWND hWnd, HDC hdc,
|
|
int nMax, int nMin, int nPos, BOOL fVertical);
|
|
|
|
/** The pointer to draw table header function.
|
|
* this function used by listview and gridview.
|
|
*/
|
|
void (*draw_header) (HWND hWnd, HDC hdc, const RECT* pRect, DWORD color);
|
|
|
|
/** The pointer to get renderer private data function.
|
|
*
|
|
* \param we_attr_id The id pointed renderer private data.
|
|
*/
|
|
DWORD (*on_get_rdr_attr) (struct _WINDOW_ELEMENT_RENDERER*, int we_attr_id);
|
|
|
|
/** The pointer to set renderer private data function.
|
|
*
|
|
* \param we_attr_id The id pointed renderer private data.
|
|
* \param we_attr The new renderer private data.
|
|
*
|
|
*/
|
|
DWORD (*on_set_rdr_attr) (struct _WINDOW_ELEMENT_RENDERER*, int we_attr_id, DWORD we_attr, BOOL change);
|
|
|
|
/** The pointer to erase background function.*/
|
|
void (*erase_background) (HWND hWnd, HDC hdc, const RECT *rect);
|
|
|
|
/** The pointer to draw menu normal item function. */
|
|
void (*draw_normal_menu_item) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color);
|
|
|
|
/** The pointer to draw menu highlight item function. */
|
|
void (*draw_hilite_menu_item) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color);
|
|
|
|
/** The pointer to draw menu disabled item function. */
|
|
void (*draw_disabled_menu_item) (HWND hWnd, HDC hdc, const RECT* pRect,
|
|
DWORD color);
|
|
|
|
/** The window element metrics information. */
|
|
int we_metrics [WE_METRICS_NUMBER];
|
|
|
|
/** The window element color information. */
|
|
DWORD we_colors [WE_COLORS_NUMBER][3];
|
|
|
|
/** The window element font information. */
|
|
PLOGFONT we_fonts [WE_FONTS_NUMBER];
|
|
|
|
/** The renderer icon information. */
|
|
HICON we_icon [2][SYSICO_ITEM_NUMBER];
|
|
|
|
/** The reference count. */
|
|
unsigned int refcount;
|
|
|
|
/** The private information. */
|
|
const void* private_info;
|
|
} WINDOW_ELEMENT_RENDERER;
|
|
|
|
/**
|
|
* The window information structure.
|
|
*
|
|
* \note The layout of this structure changed since 5.0.0 to
|
|
* support virtual window.
|
|
*/
|
|
typedef struct _WINDOWINFO
|
|
{
|
|
unsigned char _padding1;
|
|
unsigned char _padding2;
|
|
unsigned short _padding3;
|
|
void* _padding4;
|
|
|
|
/** The caption of window.*/
|
|
const char* spCaption;
|
|
|
|
/** The identifier of window.
|
|
* \note The type changed from int to LINT since 3.2.
|
|
*/
|
|
LINT id;
|
|
|
|
/** The window procedure */
|
|
WNDPROC WinProc;
|
|
|
|
/** The notification callback procedure. */
|
|
NOTIFPROC NotifProc;
|
|
|
|
/** The first additional data of this window */
|
|
DWORD dwAddData;
|
|
/** The second additional data of this window */
|
|
DWORD dwAddData2;
|
|
|
|
void* _padding5;
|
|
void* _padding6;
|
|
void* _padding7;
|
|
void* _padding8;
|
|
void* _padding9;
|
|
|
|
/** The position and size of the window. N/A for virtual window. */
|
|
int left, top;
|
|
int right, bottom;
|
|
|
|
/** The position and size of client area. N/A for virtual window. */
|
|
int cl, ct;
|
|
int cr, cb;
|
|
|
|
/** The styles of window. N/A for virtual window. */
|
|
DWORD dwStyle;
|
|
/** The extended styles of window. N/A for virtual window. */
|
|
DWORD dwExStyle;
|
|
|
|
/** The index of z-node for this window
|
|
* (only for a main window and a control as main window.
|
|
* N/A for virtual window. */
|
|
int idx_znode;
|
|
|
|
/** The background pixel value of this window. N/A for virtual window. */
|
|
gal_pixel iBkColor;
|
|
|
|
/** The handle of menu. N/A for virtual window. */
|
|
HMENU hMenu;
|
|
/** The handle of accelerator table. N/A for virtual window. */
|
|
HACCEL hAccel;
|
|
/** The handle of cursor. N/A for virtual window. */
|
|
HCURSOR hCursor;
|
|
/** The handle of icon. N/A for virtual window. */
|
|
HICON hIcon;
|
|
/** The handle of system menu. N/A for virtual window. */
|
|
HMENU hSysMenu;
|
|
/** The pointer to logical font. N/A for virtual window. */
|
|
PLOGFONT pLogFont;
|
|
|
|
/** The vertical scrollbar information. N/A for virtual window. */
|
|
LFSCROLLBARINFO vscroll;
|
|
/** The horizontal scrollbar information. N/A for virtual window. */
|
|
LFSCROLLBARINFO hscroll;
|
|
|
|
/** The window renderer. N/A for virtual window. */
|
|
WINDOW_ELEMENT_RENDERER* we_rdr;
|
|
} WINDOWINFO;
|
|
|
|
/**
|
|
* \fn const WINDOWINFO* GUIAPI GetWindowInfo (HWND hWnd)
|
|
* \brief Get the handle of window information.
|
|
*
|
|
* This function gets the handle to the window information \
|
|
* from the specified window handle \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The handle to the window information.
|
|
*/
|
|
static inline const WINDOWINFO* GUIAPI GetWindowInfo (HWND hWnd)
|
|
{
|
|
return (WINDOWINFO*)hWnd;
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI InitWindowElementAttrs (PWERENDERER rdr)
|
|
*
|
|
* This function initializes window element attributes of the
|
|
* specified renderer \a rdr according to the appropriate section
|
|
* in configuration file.
|
|
*
|
|
* \param rdr The pointer to the specified renderer.
|
|
*
|
|
* \return If succeed, return TRUE; otherwise return FALSE.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI InitWindowElementAttrs (PWERENDERER rdr);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI GetWindowElementAttr (HWND hwnd, int we_attr_id)
|
|
* \brief Get a window element data.
|
|
*
|
|
* This function gets a window element data which is identified by
|
|
* \a we_attr_id.
|
|
*
|
|
* \param hwnd The handle to the window.
|
|
* \param we_attr_id The window element id number, can be one of the
|
|
* following values:
|
|
*
|
|
* - WE_FONT_CAPTION\n
|
|
* The caption font.
|
|
* - WE_FONT_MENU\n
|
|
* The menu font. Used by menu and listbox.
|
|
* - WE_FONT_MESSAGEBOX\n
|
|
* The messagebox font. Resevered.
|
|
* - WE_FONT_TOOLTIP\n
|
|
* The tooltip font. Used by tooltip window.
|
|
*
|
|
* - WE_METRICS_CAPTION\n
|
|
* The caption size.
|
|
* - WE_METRICS_CAPTION_BUTTON\n
|
|
* The caption button size.
|
|
* - WE_METRICS_MENU\n
|
|
* The menu size.
|
|
* - WE_METRICS_WND_BORDER\n
|
|
* The border size.
|
|
* - WE_METRICS_SCROLLBAR\n
|
|
* The scrollbar size.
|
|
*
|
|
* - WE_FGC_ACTIVE_CAPTION\n
|
|
* The active caption foreground color.
|
|
* - WE_BGCA_ACTIVE_CAPTION\n
|
|
* The active caption background color A.
|
|
* - WE_BGCB_ACTIVE_CAPTION\n
|
|
* The active caption background color B.
|
|
* - WE_FGC_MENU\n
|
|
* The menu foreground color.
|
|
* - WE_BGC_MENU\n
|
|
* The menu background color.
|
|
* - WE_FGC_MESSAGEBOX\n
|
|
* The messagebox foreground color. Reserved.
|
|
* - WE_FGC_TOOLTIP\n
|
|
* The tooltip foreground color. Only used by tooltip window.
|
|
* - WE_BGC_TOOLTIP\n
|
|
* The tooltip background color. Only used by tooltip window.
|
|
* - WE_FGC_ACTIVE_WND_BORDER\n
|
|
* The active border foreground color.
|
|
* - WE_FGC_INACTIVE_WND_BORDER\n
|
|
* The inactive border foreground color.
|
|
* - WE_FGC_INACTIVE_CAPTION\n
|
|
* The inactive caption foreground color.
|
|
* - WE_BGCA_INACTIVE_CAPTION\n
|
|
* The inactive caption background color A.
|
|
* - WE_BGCB_INACTIVE_CAPTION\n
|
|
* The inactive caption background color B.
|
|
* - WE_FGC_WINDOW\n
|
|
* The window foreground color. Used by window and control.
|
|
* - WE_BGC_WINDOW\n
|
|
* The window background color. Used by window and control.
|
|
* - WE_FGC_THREED_BODY\n
|
|
* The 3dbox foreground color. Mainly used by drawing 3dbox
|
|
* object, such as dialog and button, etc.
|
|
* - WE_MAINC_THREED_BODY\n
|
|
* The 3dbox background color. Mainly used by drawing menubar,
|
|
* dialog, header and button, etc.
|
|
* - WE_FGC_SELECTED_ITEM\n
|
|
* The selected item foreground color. Used by menu and control.
|
|
* - WE_BGC_SELECTED_ITEM\n
|
|
* The selected item background color. Used by menu and control.
|
|
* - WE_BGC_SELECTED_LOSTFOCUS\n
|
|
* The lostfocus selected item background color. Only Used by mledit.
|
|
* - WE_FGC_DISABLED_ITEM\n
|
|
* The disabled item foreground color. Used by menu and control.
|
|
* - WE_BGC_DISABLED_ITEM\n
|
|
* The disabled item background color. Used by menu and control.
|
|
* - WE_FGC_HIGHLIGHT_ITEM\n
|
|
* The highlight item foreground color. Used by menu and control.
|
|
* - WE_BGC_HIGHLIGHT_ITEM\n
|
|
* The highlight item background color. Used by menu and control.
|
|
* - WE_FGC_SIGNIFICANT_ITEM\n
|
|
* The significant item foreground color. Used by listbox.
|
|
* - WE_BGC_SIGNIFICANT_ITEM\n
|
|
* The significant item background color. Used by listbox.
|
|
* - WE_BGC_DESKTOP\n
|
|
* The desktop background color. Only used by desktop.
|
|
*
|
|
* \return If succeed, return the window element data; otherwise return -1.
|
|
*
|
|
* \sa SetWindowElementAttr
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI GetWindowElementAttr (HWND hwnd, int we_attr_id);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI SetWindowElementAttr (HWND hwnd, int we_attr_id, \
|
|
DWORD we_attr)
|
|
* \brief Set a new window element data specified by \a we_attr_id.
|
|
*
|
|
* This function sets a new window element data \a we_attr to MiniGUI,
|
|
* which is identified by \a we_attr_id.
|
|
*
|
|
* \param hwnd The handle to the window.
|
|
* \param we_attr_id The window element id.
|
|
* \param we_attr The new window element data.
|
|
*
|
|
* \return If succeed, return the old window element data; otherwise return -1.
|
|
*
|
|
* \sa GetWindowElementAttr
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI SetWindowElementAttr (HWND hwnd, int we_attr_id,
|
|
DWORD we_attr);
|
|
|
|
/**
|
|
* \fn gal_pixel GUIAPI GetWindowElementPixelEx (HWND hwnd, \
|
|
HDC hdc, int we_attr_id)
|
|
* \brief Get the pixel value of a window element.
|
|
*
|
|
* This function gets the pixel value of a window element which is identified
|
|
* by \a we_attr_id and \a hdc.
|
|
*
|
|
* \param hwnd The handle to the window.
|
|
* \param hdc The device context. If -1, it will return pixel value according
|
|
* to window handle \a hwnd; otherwise return pixel value according
|
|
* to pixel format in \a hdc.
|
|
* \param we_attr_id The window element id number.
|
|
*
|
|
* \return If succeed, return the window element pixel color data; otherwise
|
|
* return -1.
|
|
*
|
|
* \sa GetWindowElementAttr
|
|
*/
|
|
MG_EXPORT gal_pixel GUIAPI GetWindowElementPixelEx (HWND hwnd,
|
|
HDC hdc, int we_attr_id);
|
|
|
|
/**
|
|
* \fn WINDOW_ELEMENT_RENDERER* GUIAPI GetWindowRendererFromName (const char* name)
|
|
* \brief Get window renderer from name.
|
|
*
|
|
* \param name The renderer name.
|
|
*
|
|
* This function gets window renderer from the specified name \a name,
|
|
* which is case-insensitive.
|
|
*
|
|
* \return The pointer to the window renderer for success, NULL for failure.
|
|
*
|
|
* \note The prototype had changed since MiniGUI v3.2; the old one returns
|
|
* a const value.
|
|
*/
|
|
MG_EXPORT WINDOW_ELEMENT_RENDERER*
|
|
GUIAPI GetWindowRendererFromName (const char* name);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI AddWindowElementRenderer (const char* name, \
|
|
const WINDOW_ELEMENT_RENDERER* we_rdr)
|
|
* \brief Add a window element renderer to the system.
|
|
*
|
|
* This function adds a new window renderer to MiniGUI system.
|
|
*
|
|
* \param name The renderer name.
|
|
* \param we_rdr The pointer to a new renderer.
|
|
*
|
|
* \return TRUE for success, FALSE for failure.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI AddWindowElementRenderer (const char* name,
|
|
const WINDOW_ELEMENT_RENDERER* we_rdr);
|
|
|
|
/**
|
|
* \fn BOOL BOOL GUIAPI RemoveWindowElementRenderer (const char* name)
|
|
* \brief Remove a window renderer from MiniGUI.
|
|
*
|
|
* This function only removes a window renderer named by \a name.
|
|
*
|
|
* \param name The renderer name.
|
|
*
|
|
* \return TRUE for success, FALSE for failure.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RemoveWindowElementRenderer (const char* name);
|
|
|
|
/**
|
|
* \fn WINDOW_ELEMENT_RENDERER* GUIAPI GetDefaultWindowElementRenderer (void)
|
|
* \brief Get the default window renderer.
|
|
*
|
|
* This function gets the default window renderer in MiniGUI.
|
|
*
|
|
* \return the pointer to the default renderer.
|
|
*
|
|
* \note The prototype had changed since MiniGUI v3.2; the old one returns
|
|
* a const value.
|
|
*/
|
|
MG_EXPORT WINDOW_ELEMENT_RENDERER*
|
|
GUIAPI GetDefaultWindowElementRenderer (void);
|
|
|
|
/**
|
|
* \fn const char* GUIAPI SetDefaultWindowElementRenderer (const char* name)
|
|
* \brief Set a window element renderer as the default system renderer.
|
|
*
|
|
* This function sets a window element renderer as the default system
|
|
* renderer.
|
|
*
|
|
* \param name The renderer name.
|
|
*
|
|
* \return the old renderer's name for success, NULL for failure.
|
|
*/
|
|
MG_EXPORT const char* GUIAPI SetDefaultWindowElementRenderer (const char* name);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowElementRenderer (HWND hwnd, \
|
|
const char* werdr_name, \
|
|
const WINDOW_ELEMENT_ATTR* we_attrs)
|
|
*
|
|
* \brief Set a window element renderer and window element attributes
|
|
* for window specified by \a hwnd.
|
|
*
|
|
* This function sets the window handled by \a hWnd to use a different
|
|
* window element renderer OR'ed window element attributes and updates
|
|
* window in time.
|
|
*
|
|
* \param hwnd The handle to the window.
|
|
* \param werdr_name The renderer name.
|
|
* \param we_attrs The pointer to new window element attributes.
|
|
*
|
|
* \return TRUE for success, FALSE for failure.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetWindowElementRenderer (HWND hWnd,
|
|
const char* werdr_name, const WINDOW_ELEMENT_ATTR* we_attrs);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI InitRendererSystemIcon (const char* rdr_name, \
|
|
HICON *large_icon, HICON *small_icon);
|
|
* \brief Initialize large and small system icons in the specified renderer
|
|
* \a rdr_name.
|
|
*
|
|
* \param rdr_name The renderer name.
|
|
* \param large_icon The pointer to large system icons.
|
|
* \param small_icon The pointer to small system icons.
|
|
*
|
|
* \return TRUE for success, FALSE for failure.
|
|
*/
|
|
MG_EXPORT BOOL InitRendererSystemIcon (const char* rdr_name,
|
|
HICON *small_icon, HICON *large_icon);
|
|
|
|
/**
|
|
* \fn void GUIAPI TermRendererSystemIcon (HICON *large_icon, \
|
|
HICON *small_icon);
|
|
* \brief Release large and small system icon resources.
|
|
*
|
|
* \param large_icon The pointer to large system icons.
|
|
* \param small_icon The pointer to small system icons.
|
|
*
|
|
* \sa InitRendererSystemIcon
|
|
*/
|
|
MG_EXPORT void TermRendererSystemIcon (HICON *small_icon,
|
|
HICON *large_icon);
|
|
|
|
/** @} end of lf_fns */
|
|
|
|
/**
|
|
* \defgroup res_manage Resource managment functions
|
|
* @{
|
|
*/
|
|
/**
|
|
* \fn BOOL GUIAPI RegisterResFromFile (HDC hdc, const char* file);
|
|
* \brief Register a device-dependent bitmap from a file.
|
|
*
|
|
* This function load a device-dependent bitmap from a file and register it to
|
|
* bitmap cache.
|
|
*
|
|
* \param hdc The device context.
|
|
* \param file The name of image file. The suffix indicates image type such as
|
|
* bmp, png, jpg etc.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RegisterResFromFile (HDC hdc, const char* file);
|
|
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI RegisterResFromMem (HDC hdc, const char* file, \
|
|
* const unsigned char* data, size_t data_size);
|
|
*
|
|
* \brief Register a device-dependent bitmap to bitmap cache from memory.
|
|
*
|
|
* This function load a device-dependent bitmap from memory and register it to
|
|
* bitmap cache.
|
|
*
|
|
* \param hdc The device context.
|
|
* \param file The name of image file. The suffix indicates image type such as
|
|
* bmp, png, jpg etc.
|
|
* \param data The pointer to image data.
|
|
* \param data_size The size of image data.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RegisterResFromMem (HDC hdc, const char* file,
|
|
const unsigned char* data, size_t data_size);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI RegisterResFromBitmap (const char* file, const BITMAP* bmp);
|
|
* \brief Register a device-dependent bitmap to bitmap cache.
|
|
*
|
|
* This function register a device-dependent bitmap to bitmap cache.
|
|
*
|
|
* \param file The name of image file. The suffix indicates image type such as
|
|
* bmp, png, jpg etc.
|
|
* \param bmp The pointer to a BITMAP object.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RegisterResFromBitmap (const char* file, const BITMAP* bmp);
|
|
|
|
/**
|
|
* \fn const BITMAP* RetrieveRes (const char *file)
|
|
* \brief Get a BITMAP object from cache according to the specified resource
|
|
* file name.
|
|
*
|
|
* This function gets a BITMAP object from cache according to the specified
|
|
* resource file name \a file.
|
|
*
|
|
* \param file The specified file name.
|
|
*
|
|
* \return a BITMAP object for success, NULL for error.
|
|
*/
|
|
MG_EXPORT const BITMAP* GUIAPI RetrieveRes (const char *file);
|
|
|
|
/**
|
|
* \fn void UnregisterRes (const char *file)
|
|
* \brief Unregister the BITMAP object from cache according to the specified
|
|
* resource file name.
|
|
*
|
|
* This function unregister the BITMAP object from cache according to the
|
|
* specified resource file name \a file and the BITMAP \a bmp.
|
|
*
|
|
* \param file The specified file name.
|
|
*
|
|
* \return None.
|
|
*
|
|
*/
|
|
MG_EXPORT void GUIAPI UnregisterRes (const char *file);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI RegisterSystemBitmap (HDC hdc, const char* rdr_name,
|
|
* const char* id);
|
|
* \brief Register a device-dependent bitmap from id to BITMAP cache.
|
|
*
|
|
* This function loads a device-dependent bitmap for the specified window
|
|
* elemeent renderer named \a rdr_name and the identifier \a id, and registers
|
|
* it to the system BITMAP cache.
|
|
*
|
|
* \param hdc The device context.
|
|
* \param rdr_name The name of window element renderer. NULL for default
|
|
* renderer.
|
|
* \param id The identifier of the system bitmap.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa UnregisterSystemBitmap
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RegisterSystemBitmap (HDC hdc, const char* rdr_name,
|
|
const char* id);
|
|
|
|
/**
|
|
* \fn void GUIAPI UnregisterSystemBitmap (HDC hdc, const char* rdr_name,
|
|
* const char* id);
|
|
* \brief Unregister a BITMAP object from the system BITMAP cache.
|
|
*
|
|
* This function unregisters the BITMAP object identified by \a id for the
|
|
* window element renderer named by \a rdr_name.
|
|
*
|
|
* \param hdc The device context.
|
|
* \param rdr_name The name of window element renderer. NULL for default
|
|
* renderer.
|
|
* \param id The id of system image.
|
|
*
|
|
* \sa RegisterSystemBitmap
|
|
*/
|
|
MG_EXPORT void GUIAPI UnregisterSystemBitmap (HDC hdc, const char* rdr_name,
|
|
const char* id);
|
|
|
|
/* define the key of resource */
|
|
typedef DWORD RES_KEY;
|
|
#define RES_KEY_INVALID 0
|
|
|
|
/* define the incore res type */
|
|
typedef struct _INNER_RES {
|
|
RES_KEY key;
|
|
const Uint8* data;
|
|
size_t data_len;
|
|
|
|
/* A special param recognized by the TYPE_OPS; normally is NULL.
|
|
* If the data is a raw png, jpeg, bmp file content,
|
|
* it should be the extention name of the filename:
|
|
* INNER_RES res[]= { ... { ..., ... ,.., "png" } .. };
|
|
* */
|
|
const void* additional;
|
|
} INNER_RES;
|
|
|
|
/** The type of resource */
|
|
enum emResType {
|
|
RES_TYPE_INVALID = 0xFF,
|
|
|
|
/**
|
|
* Images supported by MiniGUI, such as PNG, JPEG, BMP and so on.
|
|
* Fot this type, LoadResource returns a BITMAP object.
|
|
*/
|
|
RES_TYPE_IMAGE = 0,
|
|
|
|
/**
|
|
* All kinds of image supported by MiniGUI.
|
|
* For this type, LoadResource returns a MYBITMAP object.
|
|
*/
|
|
RES_TYPE_MYBITMAP,
|
|
|
|
/**
|
|
* The icon file or data.
|
|
* For this type, LoadResource loads the icon and returns HICON.
|
|
*/
|
|
RES_TYPE_ICON,
|
|
|
|
#ifdef _MGHAVE_CURSOR
|
|
/**
|
|
* The cursor file or data.
|
|
* For this type, LoadResource returns HCURSOR.
|
|
*/
|
|
RES_TYPE_CURSOR,
|
|
#endif
|
|
|
|
/**
|
|
* The runtime config file or data support by MiniGUI.
|
|
* For this type, LoadResource returns GHANDLE.
|
|
* You can use it for \a GetValueFromEtc and \a GetIntValueFromEtc.
|
|
*/
|
|
RES_TYPE_ETC,
|
|
|
|
/* NOT IMPLEMENT */
|
|
RES_TYPE_TEXT,
|
|
/* NOT IMPLEMENT */
|
|
RES_TYPE_MENU,
|
|
/* NOT IMPLEMENT */
|
|
RES_TYPE_WINDOW,
|
|
|
|
/**
|
|
* The type for inner resource..
|
|
* Fot this type, LoadResource returns the raw data of INNER_RES,
|
|
* it's a pointer of MEM_RES.
|
|
* Only support incore Resource, if the resource is stored in file
|
|
* LoadResource will return NULL.
|
|
*/
|
|
RES_TYPE_MEM_RES,
|
|
|
|
/**
|
|
* Make the LoadResource return a logfont object.
|
|
*/
|
|
RES_TYPE_FONT,
|
|
|
|
/**
|
|
* The beginning of user defined resource type.
|
|
*/
|
|
RES_TYPE_USER,
|
|
|
|
/*
|
|
* The max valid value of resource type;
|
|
* the user defined type must less this value.
|
|
*/
|
|
RES_TYPE_USER_MAX = 0x7F
|
|
};
|
|
|
|
/* the return value of LoadResource with type RES_TYPE_MEM_RES */
|
|
typedef struct _MEM_RES {
|
|
Uint8 *data;
|
|
size_t data_len;
|
|
} MEM_RES;
|
|
|
|
typedef struct _FONT_RES {
|
|
LOGFONT logfont;
|
|
RES_KEY key;
|
|
} FONT_RES;
|
|
|
|
/* the original source of resource
|
|
* depend on the values, the res manager
|
|
* would select corrent loader to
|
|
* load resource form disk or mem
|
|
*/
|
|
|
|
#define REF_SRC_NOTYPE 0x00
|
|
|
|
/* indicate that the resource is stored in disk */
|
|
#define REF_SRC_FILE 0x01
|
|
|
|
/* indicate that the resource is stored in memory*/
|
|
#define REF_SRC_INNER 0x02
|
|
|
|
/* indicate that the resource is stored in shared memory*/
|
|
#define REF_SRC_SHARED 0x03
|
|
|
|
/* indicate that the resource is stored in outside( NOT SUPPORTED) */
|
|
#define REF_SRC_OUTSIDE 0x04
|
|
|
|
/* indicate that the resource is stored in a stream object (NOT SUPPORTED) */
|
|
#define REF_SRC_STREAM 0x05
|
|
|
|
/* indicate that the resource is create by MiniGUI */
|
|
#define REF_SRC_LOGIC 0x06
|
|
|
|
/* the RESOUCE type for loadding */
|
|
typedef struct _RESOURCE {
|
|
void* data; // store the pointer of cached resource
|
|
union {
|
|
void* src;
|
|
INNER_RES* inner;
|
|
char* file;
|
|
} source; // indicate the stored format of resource
|
|
} RESOURCE;
|
|
|
|
/* The operations of one type of resource */
|
|
typedef struct _RES_TYPE_OPS {
|
|
/* To get a resource
|
|
* return the buffered resource pointer
|
|
* param res the in and out param of resource.
|
|
* param src_type, one of REF_SRC_XXX
|
|
* param usr_param
|
|
* */
|
|
void* (*get_res_data)(RESOURCE* res, int src_type, DWORD usr_param);
|
|
/* To unload a buffered resource
|
|
*/
|
|
void (*unload)(RESOURCE* res, int src_type);
|
|
} RES_TYPE_OPS;
|
|
|
|
/* Return value and error code of resource manager */
|
|
enum emResReturn {
|
|
RES_RET_OK = 0,
|
|
RES_RET_INVALID_PARAM,
|
|
RES_RET_NOT_EXIST_KEY, //RES_KEY is not exist
|
|
RES_RET_LOAD_FILE_FAILED,
|
|
RES_RET_LOAD_MEM_FAILED,
|
|
RES_RET_UNKNOWN_TYPE,
|
|
RES_RET_NOT_IMPLEMENTED,
|
|
RES_RET_INUSED //the res or object is in used, cannot be unloaded
|
|
};
|
|
|
|
/**
|
|
* \fn const char* GetResPath (void)
|
|
* \brief Get the currrent user's resource path.
|
|
*
|
|
* \return the user's resource path; NULL if have not been set.
|
|
*
|
|
* \sa SetResPath
|
|
*
|
|
**/
|
|
MG_EXPORT const char* GetResPath (void);
|
|
|
|
/**
|
|
* \fn int SetResPath (const char* path);
|
|
* \brief Set user's resource path into the search paths of resource manager.
|
|
*
|
|
* If you set this value, resource mamanger will try to find a resource in the path.
|
|
*
|
|
* \param path The path which store the resources. It can be an absolute path or relative path.
|
|
*
|
|
* \return RES_RET_OK for success or error code.
|
|
*
|
|
* \sa GetResPath
|
|
*
|
|
**/
|
|
MG_EXPORT int SetResPath (const char* path);
|
|
|
|
/**
|
|
* \fn int AddInnerRes (const INNER_RES* inner_res, int count, BOOL copy)
|
|
* \brief Add some incore resource into the resource manager in order to
|
|
* call LoadResource to get those resource.
|
|
*
|
|
* \param inner_res The pointer to the incore resource entry array.
|
|
* \param count The number of the inner resource entries.
|
|
* \param copy TRUE indicate that resource manager will copy the entries of
|
|
* the inner resource array, or the resource manager will just save the
|
|
* pointer.
|
|
*
|
|
* \return RES_RET_OK for success or error code.
|
|
*/
|
|
MG_EXPORT int AddInnerRes (INNER_RES* inner_res, int count, BOOL copy);
|
|
|
|
/*
|
|
* NOT IMPLEMENT
|
|
*/
|
|
MG_EXPORT int AddSharedRes (const char* shared_name);
|
|
|
|
/**
|
|
* \fn int RegisterResType (int type, RES_TYPE_OPS* ops)
|
|
* \brief Register a new user-defined type into resource manager,
|
|
* so that the LoadResource can load the special resource automatically.
|
|
*
|
|
* \param type The user-defined type. It must >=RES_TYPE_USER and <RES_TYPE_USER_MAX
|
|
* \param ops the operations of the resource.
|
|
*
|
|
* \return RES_RET_OK for success or error code
|
|
*
|
|
* \sa RES_TYPE_OPS, enum emResType, UnregisterResType
|
|
*/
|
|
MG_EXPORT int RegisterResType (int type, RES_TYPE_OPS* ops);
|
|
|
|
/**
|
|
* \fn int UnregisterResType (int type)
|
|
* \brief Unregister a user-defined resource type
|
|
*
|
|
* \param type The user-defined type registered by calling RegisterResType.
|
|
*
|
|
* \return RES_RET_OK or error code
|
|
*
|
|
* \sa RegisterResType
|
|
*/
|
|
MG_EXPORT int UnregisterResType (int type);
|
|
|
|
/**
|
|
* \fn void* LoadResource (const char* res_name, int type, DWORD usr_param)
|
|
* \brief Load a resource from disk or memory.
|
|
*
|
|
* This function loads a resource from disk or memory. If the resource is loaded,
|
|
* it will return the buffered one and increase the reference count. This
|
|
* function will try to find a loader for the resource first according to
|
|
* \a type.
|
|
*
|
|
* \param res_name The resource name. If res_name is an absolute path
|
|
* (the leading character is '/'), it will load resource from disk directly,
|
|
* else it will:
|
|
* - step 1) try to find the resource in loaded buffer.
|
|
* - step 2) if step 1 failed, try to load from incore memory.
|
|
* - step 3) if step 2 failed, try to find the file in the path set by SetResPath and load it.
|
|
* - step 4) if step 3 failed, try to find the file in the path where MiniGUI.cfg locates.
|
|
* - step 5) return NULL if all steps faild
|
|
*
|
|
* \param type The resource type what you want to load. It must be one of the following values:
|
|
* - RES_TYPE_IMAGE: A BITMAP object (BITMAP*).
|
|
* - RES_TYPE_MYBITMAP: A MYBITMAP object (MYBITMAP*).
|
|
* - RES_TYPE_ICON: An icon (HICON).
|
|
* - RES_TYPE_CURSOR: A cursor (HCURSOR).
|
|
* - RES_TYPE_ETC: A configuration (GHANDLE).
|
|
* - RES_TYPE_TEXT: NOT implemented.
|
|
* - RES_TYPE_MENU: NOT implemented.
|
|
* - RES_TYPE_WINDOW: NOT implemented.
|
|
* - RES_TYPE_MEM_RES: A in-memory resource (MEM_RES*).
|
|
* - RES_TYPE_USER ~ RES_TYPE_USER_MAX: A user-defined resource type (void*).
|
|
*
|
|
* \param usr_param The param pass to RES_TYPE_OPS.get_res_data. For resource type
|
|
* RES_TYPE_IMAGE and RES_TYPE_ICON, it must be a handle to DC.
|
|
*
|
|
* \return The pointer of resource, see the parameter type.
|
|
*
|
|
* \sa enum emResType, MEM_RES, SetResPath, AddInnerRes, RegisterResType, GetResource
|
|
*/
|
|
MG_EXPORT void* LoadResource (const char* res_name, int type, DWORD usr_param);
|
|
|
|
/**
|
|
* \fn void* GetResource (RES_KEY key);
|
|
* \brief Retrieve and return a buffered resource by the key.
|
|
*
|
|
* You should call LoadResource firstly, and then call GetResource when you need it.
|
|
* Note that GetResource will not increase the reference count automatically.
|
|
*
|
|
* \param key The key of the resource (use Str2Key(res_name) to get the key).
|
|
*
|
|
* \return the pointer to the resource; NULL if the resource does not exist.
|
|
*
|
|
* \sa LoadResource, Str2Key
|
|
*/
|
|
MG_EXPORT void* GetResource (RES_KEY key);
|
|
|
|
/**
|
|
* \fn int AddResRef(RES_KEY key);
|
|
*
|
|
* \brief Increase the reference count of a buffered resource.
|
|
*
|
|
* When you get a resource, you should call this function to ensure that
|
|
* the resource can not be unloaded when you still use it.
|
|
* This function must be called after GetResource.
|
|
*
|
|
* \param key The key of resource (use Str2Key(res_name) to get the key).
|
|
*
|
|
* \return The reference count; -1 if the resource does not exist.
|
|
*
|
|
* \sa LoadResource, GetResource, ReleaseRes, Str2Key
|
|
*/
|
|
MG_EXPORT int AddResRef (RES_KEY key);
|
|
|
|
/**
|
|
* \fn int ReleaseRes (RES_KEY key);
|
|
* \brief Release the buffered resource. It will decrease the reference count of
|
|
* the resource. If the reference count is less then 0, the resource will be released.
|
|
*
|
|
* \param key The key of the resource (use Str2Key(res_name) to get the key).
|
|
*
|
|
* \return The reference count; -1 if the resource does not exist.
|
|
*
|
|
* \sa LoadResource, GetResource, AddResRef, Str2Key
|
|
*/
|
|
MG_EXPORT int ReleaseRes (RES_KEY key);
|
|
|
|
#define LoadMyBitmapFromRes(res_name, pal) \
|
|
(MYBITMAP*)LoadResource(res_name, \
|
|
RES_TYPE_MYBITMAP, (DWORD)(pal))
|
|
|
|
#define GetMyBitmapFromRes(key) \
|
|
(MYBITMAP*)GetResource(key)
|
|
|
|
#define LoadBitmapFromRes(hdc, res_name) \
|
|
(BITMAP*)LoadResource(res_name, RES_TYPE_IMAGE, (DWORD)hdc)
|
|
|
|
#define GetBitmapFromRes(key) \
|
|
(BITMAP*)GetResource(key)
|
|
|
|
#define GetIconFromRes(key) \
|
|
(HICON)GetResource(key)
|
|
|
|
#ifndef _MGHAVE_CURSOR
|
|
#define GetCursorFromRes(key) \
|
|
(HCURSOR)GetResource(key)
|
|
#endif
|
|
|
|
#define GetEtcFromRes(key) \
|
|
(GHANDLE)GetResource(key)
|
|
|
|
#define LoadLogicFontFromRes(font_name) \
|
|
(PLOGFONT)LoadResource(font_name, RES_TYPE_FONT, 0)
|
|
|
|
#define GetLogicFontFromRes(font_name) \
|
|
(PLOGFONT)GetResource(Str2Key(font_name))
|
|
|
|
#define ReleaseLogicFont(font) \
|
|
ReleaseRes(((FONT_RES*)(font))->key)
|
|
|
|
#define ReleaseLogicFontByName(font_name) \
|
|
ReleaseRes(Str2Key(font_name))
|
|
|
|
/**
|
|
* \fn RES_KEY Str2Key (const char* str);
|
|
* \brief Translate a string to an unsigned long (RES_KEY), which is used to
|
|
* find a resource in the resource manager.
|
|
*
|
|
* \param str The name of resource. Normaly, it's a path and filename of the resource.
|
|
*
|
|
* \return The key.
|
|
*
|
|
* \sa GetResource, AddResRef, ReleaseRes
|
|
*/
|
|
MG_EXPORT RES_KEY Str2Key (const char* str);
|
|
|
|
|
|
#ifdef __TARGET_MSTUDIO__
|
|
/**
|
|
* \fn int GUIAPI GetWindowZOrder(HWND hWnd);
|
|
* \brief Get The Control ZOrder in the parent window
|
|
*
|
|
* \param hWnd Handler of a control
|
|
*
|
|
* \return return index of ZOrder or 0 if hWnd is a MainWindow or -1 if error
|
|
*
|
|
*/
|
|
MG_EXPORT int GUIAPI GetWindowZOrder(HWND hWnd);
|
|
|
|
/**
|
|
* \fn int GUIAPI SetWindowZOrder(HWND hWnd, int zorder);
|
|
* \brief Set The Control ZOrder in the parent window
|
|
*
|
|
* \param hWnd handler of a control
|
|
* \param zorder the index of ZOrder
|
|
*
|
|
* \return return the new index of ZOrder or 0 if hWnd is a MainWindow
|
|
*/
|
|
MG_EXPORT int GUIAPI SetWindowZOrder(HWND hWnd, int zorder);
|
|
#endif /* defined __TARGET_MSTUDIO__ */
|
|
|
|
/** @} end of res_manage */
|
|
|
|
/**
|
|
* \defgroup window_fns Windowing functions
|
|
* @{
|
|
*/
|
|
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
/**
|
|
* \defgroup virtual_window_fns Virtual Window
|
|
*
|
|
* You know that we can post or send a message to other windows which
|
|
* may run in another thread under MiniGUI-Threads. The MiniGUI
|
|
* messaging functions such as \a PostMessage(), \a SendMessage(),
|
|
* \a SendNotifyMessage(), and the window callback procedure
|
|
* provide a flexible, efficient, safe, and easy-to-use data transfer
|
|
* and synchronization mechanism for your multithreaded applications.
|
|
*
|
|
* For example, you can send or post a message to a window from a
|
|
* general purpose thread which may download a file from the remote
|
|
* server under MiniGUI-Threads.
|
|
*
|
|
* But can we use the MiniGUI messaging mechanism under
|
|
* MiniGUI-Processes and MiniGUI-Standalone runtime modes for
|
|
* multithreading purpose? For example, we may download a file in a
|
|
* general thread and inform a window when the file is ready.
|
|
*
|
|
* Furthermore, if we want to use the MiniGUI messaging mechanism in
|
|
* a general thread to handle messages from other threads, how to do this?
|
|
*
|
|
* The virtual window provides a solution for the requirements above.
|
|
* A virtual window is a special window object which does not have
|
|
* a visible window area. But after you create a virtual window in
|
|
* a different thread, you can use the MiniGUI messaging mechanism
|
|
* to post or send messages between the current main window thread
|
|
* and the new thread.
|
|
*
|
|
* In MiniGUI, we call a thread creating a main window as a GUI thread,
|
|
* and a thread creating a virtual window as a message thread.
|
|
*
|
|
* It is important to know the following key points about virtual
|
|
* window:
|
|
*
|
|
* - It is enabled automatically under MiniGUI-Threads runtime mode.
|
|
* - It can be enabled by using the compile-time configuration option
|
|
* `--enable-virtualwindow`, or define `_MGHAVE_VIRTUAL_WINDOW` macro
|
|
* under MiniGUI-Processes and MiniGUI-Standalone runtime modes.
|
|
* - You can create multiple GUI threads under MiniGUI-Threads, but you
|
|
* cannot create multiple GUI threads under MiniGUI-Processes and
|
|
* MiniGUI-Standalone runtime modes.
|
|
* - Regardless of the runtime mode, you can create multiple message
|
|
* threads, and you can also create multiple virtual windows in
|
|
* one message thread.
|
|
* - It is possible to create a virtual window in a GUI thread, although
|
|
* we do not encourage to do this. In other words, a GUI
|
|
* thread is also a message thread. On the other hand, you cannot
|
|
* create a main window in a message thread.
|
|
* - Essentially, a virtual window is a simplified main window.
|
|
* It consumes very little memory space, but provides a complete
|
|
* MiniGUI messaging mechanism for a general multithreaded app.
|
|
* - When virtual window is enabled (or under MiniGUI-Threads runtime mode),
|
|
* you can use the MiniGUI messaging facilities to post or send messages
|
|
* to a window, or notify a window from a general thread.
|
|
*
|
|
* A virtual window will get the following system messages in its life
|
|
* life-cycle:
|
|
*
|
|
* - MSG_CREATE: this message will be sent to the virtual window when
|
|
* you call \a CreateVirtualWindow function.
|
|
* - MSG_CLOSE: this message will be sent to the virtual window when
|
|
* the system asks to close the virtual window.
|
|
* - MSG_DESTROY: this message will be sent to the virtual window when
|
|
* the system tries to destroy the virtual window, or after you
|
|
* called \a DestroyVirtualWindow function.
|
|
* - MSG_IDLE: When there is no any message in the message queue, all
|
|
* virtual windows living in the message thread will get this idle
|
|
* message.
|
|
* - MSG_TIMER: When a timer expired after you call \a SetTimer to
|
|
* set up a timer for a virtual window.
|
|
* - MSG_QUIT: quit the message loop.
|
|
* - MSG_GETTEXT: Send to window procedure to get the caption.
|
|
* - MSG_SETTEXT: Send to window procedure to set the caption.
|
|
* - MSG_GETTEXTLENGTH: Send to window procedure to get the length of caption.
|
|
* - MSG_FDEVENT: Send to window procedure when there is a read/write/except
|
|
* event on a listened file descriptor.
|
|
*
|
|
* The following functions work for a virtual window:
|
|
*
|
|
* - DefaultWindowProc
|
|
* - GetWindowId
|
|
* - SetWindowId
|
|
* - GetThreadByWindow
|
|
* - GetWindowAdditionalData
|
|
* - SetWindowAdditionalData
|
|
* - GetWindowAdditionalData2
|
|
* - SetWindowAdditionalData2
|
|
* - GetClassName: always returns 'VIRTWINDOW' for a virtual window.
|
|
* - GetWindowCallbackProc
|
|
* - SetWindowCallbackProc
|
|
* - GetWindowCaption
|
|
* - SetWindowCaption
|
|
* - GetWindowTextLength
|
|
* - GetWindowText
|
|
* - SetWindowText
|
|
* - GetNotificationCallback
|
|
* - SetNotificationCallback
|
|
* - SetWindowLocalData
|
|
* - GetWindowLocalData
|
|
* - RemoveWindowLocalData
|
|
* - RegisterEventHookWindow
|
|
* - UnregisterEventHookWindow
|
|
* - RegisterKeyHookWindow
|
|
* - RegisterMouseHookWindow
|
|
* - RegisterListenFD
|
|
* - UnregisterListenFD
|
|
*
|
|
* Since 5.0.0.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \fn int GUIAPI CreateThreadForMessaging (pthread_t* thread,
|
|
* pthread_attr_t* attr, void * (*start_routine)(void *), void* arg,
|
|
* BOOL joinable, size_t stack_size)
|
|
* \brief Create a message thread for main windows or virtual windows.
|
|
*
|
|
* The function creates a message thread for main windows or virtual windows
|
|
* by calling the POSIX thread function \a pthread_create(), and setting up
|
|
* the message queue for the thread.
|
|
*
|
|
* \param thread The buffer to return the thread identifier if
|
|
* the thread was successfully created.
|
|
* \param attr The pointer to the thread attribute.
|
|
* \param start_routine The entry function of the thread.
|
|
* \param arg The argument will be passed to \a start_routine.
|
|
* \param joinable Whether to create a joinable thread.
|
|
* \param stack_size The stack size in kilobytes, zero for default (4KiB).
|
|
*
|
|
* \return On success, it returns 0; on error, an error number returned.
|
|
* Exception the error numbers defined by pthread_create(), this
|
|
* function may return ENOMEM when failed to allocate memory for
|
|
* message queue.
|
|
*
|
|
* \note The last two arguments work only when \a attr is NULL.
|
|
*
|
|
* \sa pthread_create
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT int GUIAPI CreateThreadForMessaging (pthread_t* thread,
|
|
pthread_attr_t* attr, void * (*start_routine)(void *), void* arg,
|
|
BOOL joinable, size_t stack_size);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetThreadByWindow (HWND hWnd, pthread_t* thread)
|
|
* \brief Get the thread identifier which a window belongs to.
|
|
*
|
|
* \param hWnd The handle to a window, which may be a main window,
|
|
* virtual window, or a control.
|
|
* \param thread The buffer to store the thread identifier.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetThreadByWindow (HWND hWnd, pthread_t* thread);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsWindowInThisThread (HWND hWnd)
|
|
* \brief Determine whether a window was created in this thread.
|
|
*
|
|
* \param hWnd The handle to a window, which may be a main window,
|
|
* virtual window, or a control.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsWindowInThisThread (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI VirtualWindowCleanup (HWND hVirtWnd)
|
|
* \brief Cleanup the system resource associated with a virtual window.
|
|
*
|
|
* This function cleans up the system resource such as the message queue
|
|
* associated with the virual window \a hVirtWnd. \a DestroyVirtualWindow
|
|
* does not destroy all resource used by the virtual window, therefore,
|
|
* you should call this function after calling \a DestroyVirtualWindow and
|
|
* skipping out from the message loop. After calling this function, the
|
|
* virtual window object will be destroyed actually.
|
|
*
|
|
* \param hVirtWnd The handle to the virtual window.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa DestroyVirtualWindow
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI VirtualWindowCleanup (HWND hVirtWnd);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateVirtualWindow (HWND hHosting, WNDPROC WndProc,
|
|
* const char* spCaption, LINT id, DWORD dwAddData)
|
|
* \brief Create a virtual window.
|
|
*
|
|
* This function creates a virtual window for the purpose of
|
|
* multi-thread messaging.
|
|
*
|
|
* \param hHosting The hosting virutal window.
|
|
* \param WndProc The window callback procedure.
|
|
* \param spCaption The caption of the virtual window.
|
|
* \param id The long integer (pointer size) identifier of the virtual window.
|
|
* \param dwAddData The additional data for the window.
|
|
*
|
|
* \return The handle to the new virtual window;
|
|
* HWND_INVALID indicates an error.
|
|
*
|
|
* \sa VirtualWindowCleanup
|
|
*
|
|
* Example:
|
|
*
|
|
* \include createvirtualwindow.c
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
MG_EXPORT HWND GUIAPI CreateVirtualWindow (HWND hHosting, WNDPROC WndProc,
|
|
const char* spCaption, LINT id, DWORD dwAddData);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI DestroyVirtualWindow (HWND hWnd)
|
|
* \brief Destroy a virtual window.
|
|
*
|
|
* This function destroys a virtual window.
|
|
*
|
|
* \param hWnd The handle to the virtual window.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa VirtualWindowCleanup
|
|
*
|
|
* Example:
|
|
*
|
|
* \include createvirtualwindow.c
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI DestroyVirtualWindow (HWND hWnd);
|
|
|
|
/** @} end of virtual_window_fns */
|
|
|
|
#endif /* defined _MGHAVE_VIRTUAL_WINDOW */
|
|
|
|
/**
|
|
* \defgroup window_create_fns Window creating/destroying
|
|
* @{
|
|
*/
|
|
|
|
extern MG_EXPORT HWND __mg_hwnd_desktop;
|
|
|
|
/**
|
|
* \def HWND_DESKTOP
|
|
* \brief Desktop window handle.
|
|
*/
|
|
#define HWND_DESKTOP __mg_hwnd_desktop
|
|
|
|
/**
|
|
* \def HWND_NULL
|
|
* \brief Null window handle.
|
|
*/
|
|
#define HWND_NULL ((HWND)0)
|
|
|
|
/**
|
|
* \def HWND_INVALID
|
|
* \brief Invalid window handle.
|
|
*/
|
|
#define HWND_INVALID ((HWND)-1)
|
|
|
|
#define HWND_OTHERPROC ((HWND)-1)
|
|
|
|
/**
|
|
* Structure defines a main window.
|
|
*/
|
|
typedef struct _MAINWINCREATE {
|
|
/** The style of the main window */
|
|
DWORD dwStyle;
|
|
|
|
/** The extended style of the main window */
|
|
DWORD dwExStyle;
|
|
|
|
/** The caption of the main window */
|
|
const char* spCaption;
|
|
|
|
/** The handle to the menu of the main window */
|
|
HMENU hMenu;
|
|
|
|
/** The handle to the cursor of the main window */
|
|
HCURSOR hCursor;
|
|
|
|
/** The handle to the icon of the main window */
|
|
HICON hIcon;
|
|
|
|
/** The hosting main window */
|
|
HWND hHosting;
|
|
|
|
/** The window callback procedure */
|
|
LRESULT (*MainWindowProc)(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
/** The position of the main window in the screen coordinates */
|
|
int lx, ty, rx, by;
|
|
|
|
/**
|
|
* The background pixel value of the main window.
|
|
*/
|
|
gal_pixel iBkColor;
|
|
|
|
/** The first private data associated with the main window */
|
|
DWORD dwAddData;
|
|
|
|
/** Reserved, do not use */
|
|
DWORD dwReserved;
|
|
} MAINWINCREATE;
|
|
typedef MAINWINCREATE* PMAINWINCREATE;
|
|
|
|
#ifdef _MGRM_THREADS
|
|
/**
|
|
* \fn int GUIAPI CreateThreadForMainWindow (pthread_t* thread,
|
|
* pthread_attr_t* attr, void * (*start_routine)(void *), void* arg)
|
|
* \brief Create a thread for main window.
|
|
*
|
|
* The function creates a thread for main window by calling the POSIX
|
|
* thread function pthread_create().
|
|
*
|
|
* \param thread The buffer to return the thread identifier if
|
|
* successfully created.
|
|
* \param attr The pointer to the thread attribute.
|
|
* \param start_routine The function which is the entry of the thread.
|
|
* \param arg The argument will be passed to \a start_routine.
|
|
*
|
|
* \return The return value of pthread_create (0 on success).
|
|
*
|
|
* \sa CreateThreadForMessaging, pthread_create
|
|
*/
|
|
static inline int GUIAPI CreateThreadForMainWindow (pthread_t* thread,
|
|
pthread_attr_t* attr, void * (*start_routine)(void *), void* arg)
|
|
{
|
|
return CreateThreadForMessaging (thread, attr, start_routine, arg,
|
|
TRUE, 16);
|
|
}
|
|
|
|
/**
|
|
* \fn pthread_t GUIAPI GetMainWinThread (HWND hMainWnd)
|
|
* \brief Get the thread identifier which main window belongs to.
|
|
*
|
|
* \param hMainWnd The handle to the main window.
|
|
*
|
|
* \return The thread identifier.
|
|
*
|
|
* \note Deprecated; use \a GetThreadByWindow() instead.
|
|
*/
|
|
static inline pthread_t GUIAPI GetMainWinThread (HWND hMainWnd)
|
|
{
|
|
#ifdef WIN32
|
|
pthread_t ret;
|
|
memset (&ret, 0, sizeof (pthread_t));
|
|
#else
|
|
pthread_t ret = 0;
|
|
#endif
|
|
|
|
GetThreadByWindow (hMainWnd, &ret);
|
|
return ret;
|
|
}
|
|
|
|
/**
|
|
* \fn int GUIAPI WaitMainWindowClose (HWND hWnd, void** retval)
|
|
* \brief Suspend execution of the calling thread which main window belongs
|
|
* to until the target thread terminates, unless the target thread has already
|
|
* terminated.
|
|
*
|
|
* This function waits for the terminate of the thread which the main window
|
|
* \a hWnd belongs to by calling the system POSIX thread function
|
|
* \a pthread_join().
|
|
*
|
|
* \param hWnd The handle to the main window.
|
|
* \param retval The buffer used to return the exit code of the target thread.
|
|
*
|
|
* \return The return value of pthread_join (0 on success).
|
|
*
|
|
* \note Deprecated; use GetThreadByWindow() and pthread_join() instead.
|
|
*
|
|
* \sa GetThreadByWindow
|
|
*/
|
|
MG_EXPORT int GUIAPI WaitMainWindowClose (HWND hWnd, void** returnval);
|
|
#endif /* defined _MGRM_THREADS */
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI MainWindowCleanup (HWND hMainWnd)
|
|
* \brief Cleans up system resource associated with a main window.
|
|
*
|
|
* This function cleans up the system resource such as the message queue
|
|
* associated with the main window \a hMainWnd. \a DestroyMainWindow does not
|
|
* destroy all resource used by a main window, therefore, you should call
|
|
* this function after calling \a DestroyMainWindow and skipping out from
|
|
* the message loop. After calling this function, the main window object
|
|
* will be destroyed actually.
|
|
*
|
|
* \param hMainWnd The handle to the main window.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa DestroyMainWindow
|
|
*
|
|
* \note Since 5.0.0, this function returns a BOOL value. If you try
|
|
* to clean up a main window in a thread other than it belongs to,
|
|
* the function will fail.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI MainWindowCleanup (HWND hMainWnd);
|
|
|
|
/**
|
|
* \fn BOOL MainWindowThreadCleanup (HWND hMainWnd)
|
|
* \brief Cleanup the main window.
|
|
*
|
|
* \param hMainWnd The handle to the main window.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \note Deprecated; please use \a MainWindowCleanup() instead.
|
|
*
|
|
* \sa MainWindowCleanup
|
|
*/
|
|
static inline BOOL MainWindowThreadCleanup (HWND hMainWnd)
|
|
{
|
|
return MainWindowCleanup (hMainWnd);
|
|
}
|
|
|
|
/* The flags for the surface pixel format */
|
|
#define ST_PIXEL_MASK 0x00FF
|
|
#define ST_PIXEL_DEFAULT 0x0000
|
|
#define ST_PIXEL_ARGB4444 0x0001
|
|
#define ST_PIXEL_ARGB1555 0x0002
|
|
#define ST_PIXEL_ARGB8888 0x0003
|
|
|
|
/* other flags for future use */
|
|
|
|
/* for default surface flags */
|
|
#define ST_DEFAULT (ST_PIXEL_DEFAULT)
|
|
|
|
#define CT_SYSTEM_MASK 0X0000FF
|
|
#define CT_OPAQUE 0x000000
|
|
#define CT_COLORKEY 0x000001
|
|
#define CT_ALPHACHANNEL 0x000002
|
|
#define CT_LOGICALPIXEL 0x000003
|
|
#define CT_ALPHAPIXEL 0x000004
|
|
#define CT_BLURRED 0x000005
|
|
#define CT_MAX_VALUE 0xFFFFFF
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateMainWindowEx2 (PMAINWINCREATE create_info, LINT id,
|
|
* const char* werdr_name, const WINDOW_ELEMENT_ATTR* we_attrs,
|
|
* unsigned int surf_flag, DWORD bkgnd_color,
|
|
* int compos_type, DWORD ct_arg)
|
|
* \brief Creates a main window with specified compositing type and identifier.
|
|
*
|
|
* This function creates a main window by using information and the specified
|
|
* compositing type and identifier, then returns the handle to the main window.
|
|
*
|
|
* \param create_info The pointer to a MAINWINCREATE structure.
|
|
* \param werdr_name The name of window element renderer. NULL for default
|
|
* renderer.
|
|
* \param we_attrs The pointer to window element attribute table. NULL for
|
|
* default window attribute table.
|
|
* \param id The window identifier.
|
|
* \param surf_flag The flag for the surface of the main window
|
|
* under compositing schema. The value of this argument can be one
|
|
* of the following values:
|
|
* - ST_PIXEL_DEFAULT\n
|
|
* Creating a surface which compliant to HDC_SCREEN.
|
|
* - ST_PIXEL_ARGB4444\n
|
|
* Creating a surface for this main window with
|
|
* the pixel format ARGB4444.
|
|
* - ST_PIXEL_ARGB1555\n
|
|
* Creating a surface for this main window with
|
|
* the pixel format ARGB1555.
|
|
* - ST_PIXEL_ARGB8888\n
|
|
* Creating a surface for this main window with
|
|
* the pixel format ARGB8888.
|
|
* \param bkgnd_color The background color of the main window if you specify
|
|
* the main window's surface type other than the default. In this case,
|
|
* you must use this argument to specify the background color of the main
|
|
* window instead of the pixel value of the field (\a iBkColor) in
|
|
* \a MAINWINCREATE structure.
|
|
* The value of this field is a 32-bit RGBA quadruple essentially.
|
|
* You can use a value returned by \a MakeRGBA macro for this argument.
|
|
* Note that if you use the surface type \a ST_PIXEL_DEFAULT when creating
|
|
* the main window, you can still use the pixel values specified in
|
|
* \a MAINWINCREATE structure which is compliant to \a HDC_SCREEN, e.g.,
|
|
* a value in \a SysPixelIndex array.
|
|
* \param compos_type The compositing type of the main window.
|
|
* \param ct_arg The compositing argument of the main window.
|
|
*
|
|
* \return The handle to the new main window; HWND_INVALID indicates an error.
|
|
*
|
|
* \note Note When you specify a surface type other than ST_PIXEL_DEFAULT, you
|
|
* must use \a bkgnd_color to specify the background color of
|
|
* the main window.
|
|
*
|
|
* \sa CreateMainWindowEx, CreateMainWindow, MAINWINCREATE, styles
|
|
*
|
|
* Example:
|
|
*
|
|
* \include createmainwindow.c
|
|
*/
|
|
MG_EXPORT HWND GUIAPI CreateMainWindowEx2 (PMAINWINCREATE create_info, LINT id,
|
|
const char* werdr_name, const WINDOW_ELEMENT_ATTR* we_attrs,
|
|
unsigned int surf_flag, DWORD bkgnd_color,
|
|
int compos_type, DWORD ct_arg);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateMainWindowEx (PMAINWINCREATE pCreateInfo, \
|
|
* const char* werdr_name, const WINDOW_ELEMENT_ATTR* we_attrs, \
|
|
* const char* window_name, const char* layer_name);
|
|
* \brief Creates a main window.
|
|
*
|
|
* This function creates a main window by using some information, and returns
|
|
* the handle to the main window.
|
|
*
|
|
* \param pCreateInfo The pointer to a MAINWINCREATE structure.
|
|
* \param werdr_name The name of window element renderer. NULL for default
|
|
* renderer.
|
|
* \param we_attrs The pointer to window element attribute table. NULL for
|
|
* default window attribute table.
|
|
* \param window_name The window name, ignored currently.
|
|
* \param layer_name The layer name, ignored currently.
|
|
*
|
|
* \return The handle to the new main window; HWND_INVALID indicates an error.
|
|
*
|
|
* \sa CreateMainWindow, MAINWINCREATE, styles
|
|
*
|
|
* \note Since 5.0.0, this function is implemented as an inline function calling
|
|
* \a CreateMainWindowEx2. When calling CreateMainWindowEx2:
|
|
* - We pass 0 for the identifier.
|
|
* - We pass 0xFFFFFFFFUL for the background color.
|
|
* - We discard the values passed to window_name and layer_name.
|
|
*
|
|
* Example:
|
|
*
|
|
* \include createmainwindow.c
|
|
*
|
|
* \sa CreateMainWindowEx2
|
|
*/
|
|
static inline HWND GUIAPI CreateMainWindowEx (PMAINWINCREATE pCreateInfo,
|
|
const char* werdr_name, const WINDOW_ELEMENT_ATTR* we_attrs,
|
|
const char* window_name, const char* layer_name)
|
|
{
|
|
return CreateMainWindowEx2 (pCreateInfo, 0L, werdr_name, we_attrs,
|
|
ST_DEFAULT, 0xFFFFFFFFUL, CT_OPAQUE, 0);
|
|
}
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateMainWindow (PMAINWINCREATE pCreateInfo)
|
|
* \brief A simplified version of CreateMainWindowEx.
|
|
*
|
|
* This function creates a main window by calling CreateMainWindow function
|
|
* and passing NULL for werdr_name, we_attrs, window_name, and layer_name
|
|
* parameters.
|
|
*
|
|
* \sa CreateMainWindowEx
|
|
*/
|
|
static inline HWND GUIAPI CreateMainWindow (PMAINWINCREATE pCreateInfo)
|
|
{
|
|
return CreateMainWindowEx (pCreateInfo, NULL, NULL, NULL, NULL);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI DestroyMainWindow (HWND hWnd)
|
|
* \brief Destroys a main window.
|
|
*
|
|
* This function destroys the main window specified by \a hWnd.
|
|
* It does not release all system resource used by the main window.
|
|
* You should call \a MainWindowThreadCleanup to destroy the main window
|
|
* actually.
|
|
*
|
|
* \param hWnd The handle to the main window.
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa MainWindowThreadCleanup
|
|
*
|
|
* Example:
|
|
*
|
|
* \include destroymainwindow.c
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI DestroyMainWindow (HWND hWnd);
|
|
|
|
typedef void (*CB_FREE_LOCAL_DATA) (DWORD local_data);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowLocalData (HWND hwnd, const char* data_name,
|
|
DWORD local_data, CB_FREE_LOCAL_DATA cb_free)
|
|
* \brief Set the local data bound with a name for a window.
|
|
*
|
|
* This function sets the local data as \a local_data which is bound with the
|
|
* name \a data_name for the specified window \a hwnd. If you passed a non-NULL
|
|
* function pointer for \a cb_free, the system will call this function to free
|
|
* the local data when you destroy the window, remove the local data, or when
|
|
* you call this function to overwrite the old local data for the name.
|
|
*
|
|
* \param hwnd The handle to the window, which can be a main window, a virtual
|
|
* window or a control.
|
|
* \param data_name The name of the local data.
|
|
* \param local_data The value of the local data.
|
|
* \param cb_free A callback function which will be called automatically by the
|
|
* system to free the local data when the window is being destroyed or the local
|
|
* data is being removed or overwritten. If it is NULL, the system does nothing
|
|
* to the local data.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa GetWindowLocalData, RemoveWindowLocalData
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetWindowLocalData (HWND hwnd, const char* data_name,
|
|
DWORD local_data, CB_FREE_LOCAL_DATA cb_free);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI RemoveWindowLocalData (HWND hwnd, const char* data_name)
|
|
* \brief Remove the local data bound with a name for a window.
|
|
*
|
|
* This function removes the local data which is bound with the
|
|
* name \a data_name for the specified window \a hwnd. When you pass NULL
|
|
* for \a data_name, this function will remove all local data of the window.
|
|
* Note that this function will call the callback procedure for releasing
|
|
* the local data, if you had set it, when removing the local data.
|
|
*
|
|
* \param hwnd The handle to the window, which can be a main window, a virtual
|
|
* window or a control.
|
|
* \param data_name The name for the local data.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetWindowLocalData, GetWindowLocalData
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RemoveWindowLocalData (HWND hwnd, const char* data_name);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetWindowLocalData (HWND hwnd, const char* data_name,
|
|
DWORD *local_data, CB_FREE_LOCAL_DATA* cb_free)
|
|
* \brief Retrieve the local data bound with a name for a window.
|
|
*
|
|
* This function retrieves the local data which is bound with the
|
|
* name \a data_name for the specified window \a hwnd.
|
|
*
|
|
* \param hwnd The handle to the window, which can be a main window, a virtual
|
|
* window or a control.
|
|
* \param data_name The name for the local data.
|
|
* \param local_data The pointer to a DWORD variable to return the local data
|
|
* if it is not NULL.
|
|
* \param cb_free The pointer to a CB_FREE_LOCAL_DATA variable to return
|
|
* the pointer to the callback function which is used to free the local data
|
|
* if it is not NULL.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetWindowLocalData, RemoveWindowLocalData
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetWindowLocalData (HWND hwnd, const char* data_name,
|
|
DWORD *local_data, CB_FREE_LOCAL_DATA* cb_free);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowMask (HWND hWnd, const MYBITMAP* mask)
|
|
*
|
|
* \brief Set window (a main window, or a child window which is
|
|
* also known as "control")'s Mask Rect with MYBITMAP data.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param mask The mask of the window which indicate the transparency of
|
|
* each pixel on this window.
|
|
*
|
|
* \return return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa SetWindowRegion
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetWindowMask (HWND hWnd, const MYBITMAP* mask);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowMaskEx (HWND hWnd, HDC hdc, const BITMAP* mask)
|
|
*
|
|
* \brief Set window (a main window, or a child window which is
|
|
* also known as "control")'s Mask Rect with BITMAP data,
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param hdc The reference dc which indicate the colorformat of the \a mask.
|
|
* \param mask The mask of the window which indicate the transparency of
|
|
* each pixel on this window.
|
|
*
|
|
* \return return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa SetWindowRegion
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetWindowMaskEx (HWND hWnd, HDC hdc, const BITMAP* mask);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetMainWindowAlwaysTop (HWND hWnd, BOOL fSet)
|
|
* \brief Set or cancel a main window being always top.
|
|
*
|
|
* This function set or cancel a main window being always top on others.
|
|
* If it succeed, the main window will have the style \a WS_ALWAYSTOP.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param fSet Set or cancel the always top style; TRUE to set, FALSE to cancel.
|
|
*
|
|
* \return return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa GetWindowStyle, WS_ALWAYSTOP
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetMainWindowAlwaysTop (HWND hWnd, BOOL fSet);
|
|
|
|
#ifdef _MGSCHEMA_COMPOSITING
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetMainWindowCompositing (HWND hWnd,
|
|
int type, DWORD arg)
|
|
* \brief Set the compositing type of a main window.
|
|
*
|
|
* This function set the compositing type of a main window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param type The compositing type, can be one of the following values:
|
|
* - CT_OPAQUE\n
|
|
* The main window is opaque. This is the default compositing type of
|
|
* a main window. The control as main window always use this
|
|
* compositing type.
|
|
* - CT_COLORKEY\n
|
|
* Use the specified color as the transparency key. You should also specify
|
|
* the color along with the parameter \a arg in a RGBA quadruple value.
|
|
* - CT_ALPHACHANNEL\n
|
|
* Use the specified alpha channel value. You should also specify
|
|
* the alpha channel value (0~255) along with the parameter \a arg.
|
|
* - CT_LOGICALPIXEL\n
|
|
* Do the given color logical operation. You should specify the color
|
|
* logical raster operation along with the pararmeter \a arg. See \a BitBlt.
|
|
* - CT_ALPHAPIXEL\n
|
|
* The alpha component value of the source and/or the destination pixel go
|
|
* into effect. You can specify the color blend method along
|
|
* with the pararmeter \a arg. See \a ColorBlendMethod. Note that a specific
|
|
* compositor may not support this compositing type. The built-in `fallback`
|
|
* compositor ignores the blend mode argument and only always uses the
|
|
* Porter Duff blend mode: source over destination (COLOR_BLEND_PD_SRC_OVER).
|
|
* - CT_BLURRED\n
|
|
* Apply a Gaussian blur to the background of the main window. You should
|
|
* also specify the radius of the blur (0 ~ 255) in pixles along with the
|
|
* paramter \a arg. It defines the value of the standard deviation to the
|
|
* Gaussian function, i.e., how many pixels on the screen blend into each
|
|
* other; thus, a larger value will create more blur. A value of 0 leaves
|
|
* the input unchanged. Note that the built-in `fallback` compositor
|
|
* does not support this compositing type.
|
|
* \param arg The compositing argument.
|
|
*
|
|
* \return return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \note This function only available when _MGSCHEMA_COMPOSITING is defined.
|
|
*
|
|
* \note A customized compositor can also define other compositing type.
|
|
* Please make sure that the customized compositing type should be
|
|
* less than \a CT_MAX_VALUE.
|
|
*
|
|
* \sa CreateMainWindowEx
|
|
*
|
|
* Since 5.0.0
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetMainWindowCompositing (HWND hWnd,
|
|
int type, DWORD arg);
|
|
|
|
#endif /* defined _MGSCHEMA_COMPOSITING */
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowRegion (HWND hWnd, const CLIPRGN* region)
|
|
* \brief Set window's Mask Rect with CLIPRGN data.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param region The region to indicate which part of the window is visible.
|
|
*
|
|
* \return return TRUE on success, otherwise FALSE.
|
|
*/
|
|
BOOL GUIAPI SetWindowRegion (HWND hWnd, const CLIPRGN* region);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetWindowRegion (HWND hWnd, CLIPRGN* region)
|
|
* \brief The function obtains a copy of the window region of a window.
|
|
*
|
|
* This function obtains a copy of the window region of a window.
|
|
* The window region of a window is set by calling the SetWindowRegion
|
|
* or SetWindowMaskEx function. The window region determines the area
|
|
* within the window where the system permits drawing. The system
|
|
* does not display any portion of a window that lies outside of
|
|
* the window region.
|
|
*
|
|
* \param hWnd Handle to the window whose window region is to be obtained.
|
|
* \param region Pointer to the region which will be modified to
|
|
* represent the window region.
|
|
*
|
|
* \return return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa SetWindowRegion, SetWindowMaskEx
|
|
*/
|
|
BOOL GUIAPI GetWindowRegion (HWND hWnd, CLIPRGN* region);
|
|
|
|
LRESULT GUIAPI PreDefMainWinProc (HWND hWnd, UINT message,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
LRESULT GUIAPI PreDefDialogProc (HWND hWnd,
|
|
UINT message, WPARAM wParam, LPARAM lParam);
|
|
|
|
LRESULT GUIAPI PreDefControlProc (HWND hWnd, UINT message,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
LRESULT GUIAPI PreDefVirtualWinProc (HWND hWnd, UINT message,
|
|
WPARAM wParam, LPARAM lParam);
|
|
#endif
|
|
|
|
/**
|
|
* \fn LRESULT DefaultWindowProc (HWND hWnd, UINT message, \
|
|
WPARAM wParam, LPARAM lParam)
|
|
* \brief The default window callback procedure.
|
|
*
|
|
* This window procedure can be used for main windows, dialog boxes,
|
|
* and child windows.
|
|
*
|
|
* This function is the default window callback procedure.
|
|
* You should call this function for all messages you do not want to handle
|
|
* in your window procedure.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param message The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*/
|
|
MG_EXPORT LRESULT GUIAPI DefaultWindowProc (HWND hWnd, UINT message,
|
|
WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \var WNDPROC __mg_def_proc[]
|
|
* \brief The default window callback procedure array.
|
|
*
|
|
*/
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
extern MG_EXPORT WNDPROC __mg_def_proc[4];
|
|
#else
|
|
extern MG_EXPORT WNDPROC __mg_def_proc[3];
|
|
#endif
|
|
|
|
/**
|
|
* \def DefaultMainWinProc
|
|
* \brief Is the default main window callback procedure.
|
|
*
|
|
* This function is the default main window callback procedure.
|
|
* You should call this function for all messages, you do not want to handle
|
|
* in your main window procedure.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param message The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*
|
|
*/
|
|
#define DefaultMainWinProc (__mg_def_proc[0])
|
|
|
|
/**
|
|
* \def DefaultDialogProc
|
|
* \brief The default dialog box procedure.
|
|
*
|
|
* This function is the default dialog box procedure.
|
|
* You should call this function in your dialog box procedure
|
|
* to process the unhandled messages.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param message The message identifier.
|
|
* \param wParam The first message parameter.
|
|
* \param lParam The second message parameter.
|
|
*
|
|
* \return The return value of the message handler.
|
|
*
|
|
*/
|
|
#define DefaultDialogProc (__mg_def_proc[1])
|
|
|
|
/**
|
|
* \def DefaultControlProc
|
|
* \brief The default control callback procedure.
|
|
*
|
|
* This function is the default control callback procedure.
|
|
* You should call this function for all messages, you do not want to handle
|
|
* in your own control procedure.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param message The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*/
|
|
#define DefaultControlProc (__mg_def_proc[2])
|
|
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
/**
|
|
* \def DefaultVirtualWinProc
|
|
* \brief The default window callback procedure for virtual windows.
|
|
*
|
|
* This function is the default window callback procedure for virtual windows.
|
|
* You should call this function for any message which you do not want to handle
|
|
* in your own callback procedure.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param message The message identifier.
|
|
* \param wParam The first parameter of the message.
|
|
* \param lParam The second parameter of the message.
|
|
*/
|
|
#define DefaultVirtualWinProc (__mg_def_proc[3])
|
|
#endif /* defined _MGHAVE_VIRTUAL_WINDOW */
|
|
|
|
#ifdef _DEBUG
|
|
MG_EXPORT void GUIAPI DumpWindow (FILE* fp, HWND hWnd);
|
|
#endif /* _DEBUG */
|
|
|
|
/** @} end of window_create_fns */
|
|
|
|
/**
|
|
* \defgroup window_general_fns General window operations
|
|
* @{
|
|
*/
|
|
|
|
#define SW_HIDE 0x0000
|
|
#define SW_SHOW 0x0010
|
|
#define SW_SHOWNORMAL 0x0100
|
|
|
|
/**
|
|
* \fn void GUIAPI UpdateWindow (HWND hWnd, BOOL bErase)
|
|
* \brief Updates a window.
|
|
*
|
|
* This function updates the window specified by \a hWnd.
|
|
* It will redraw the caption, the frame, and the menu bar of the window.
|
|
* It will invalidate the client area of the window as well, and
|
|
* if \b bErase is TRUE, the client area will be erased by using
|
|
* background color.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param bErase Indicates whether to erase the client area of the window.
|
|
*
|
|
* \sa InvalidateRect
|
|
*/
|
|
MG_EXPORT void GUIAPI UpdateWindow (HWND hWnd, BOOL bErase);
|
|
|
|
/**
|
|
* \fn void GUIAPI UpdateInvalidClient (HWND hWnd, BOOL bErase)
|
|
* \brief Updates the invalid client areas in a window.
|
|
*
|
|
* This function updates the client areas specified by \a hWnd.
|
|
* It will redraw the invalid client area of the window, and
|
|
* if \b bErase is TRUE, the client area will be erased by using
|
|
* background color.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param bErase Indicates whether to erase the client area of the window.
|
|
*
|
|
* \sa UpdateWindow
|
|
*/
|
|
MG_EXPORT void GUIAPI UpdateInvalidClient (HWND hWnd, BOOL bErase);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ShowWindow (HWND hWnd, int iCmdShow)
|
|
* \brief Shows or hides a window.
|
|
*
|
|
* This function shows or hides the window specified by \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iCmdShow The command to show or hide, can be one of
|
|
* the following values:
|
|
* - SW_SHOW\n
|
|
* Shows the window.
|
|
* - SW_HIDE\n
|
|
* Hides the window.
|
|
* - SW_SHOWNORMAL\n
|
|
* Shows the window, and if the window is a main window
|
|
* sets it to be the top most main window.
|
|
* \return TRUE on sucess, otherwise FALSE.
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ShowWindow (HWND hWnd, int iCmdShow);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI EnableWindow (HWND hWnd, BOOL fEnable)
|
|
* \brief Enables of disables a window.
|
|
*
|
|
* This function enables or disables mouse and keyboard input
|
|
* to the specified window \a hWnd. When input is disabled, the window
|
|
* does not receive input such as mouse clicks and key presses.
|
|
* When input is enabled, the window receives all input.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param fEnable Indicates whether to enable or disable the window,
|
|
* TRUE for enable.
|
|
* \return The old enable state of the window.
|
|
*
|
|
* \sa IsWindowEnabled
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI EnableWindow (HWND hWnd, BOOL fEnable);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsWindowEnabled (HWND hWnd)
|
|
* \brief Determine whether the specified window is enabled for mouse
|
|
* and keyboard input.
|
|
*
|
|
* This function returns the enable/disable state of the window specified by
|
|
* \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The enable/disable state of the window, TRUE for enabled.
|
|
*
|
|
* \sa EnableWindow
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsWindowEnabled (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetClientRect(HWND hWnd, PRECT prc)
|
|
* \brief Retrieve the client rectangle of a window.
|
|
*
|
|
* This function retrieves the coordinates of the client area of
|
|
* the window specified by \a hWnd. The client coordinates specify
|
|
* the upper-left and lower-right corners of the client area.
|
|
* Because client coordinates are relative to the upper-left corner of
|
|
* a window's client area, the coordinates of the upper-left corner
|
|
* are always (0,0).
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param prc The pointer to a RECT structure receives the client rectangle.
|
|
*
|
|
* \return TRUE on sucess, otherwise FALSE.
|
|
*
|
|
* \note Note that the coordinates of the upper-left corner are always zero.
|
|
*
|
|
* \sa MoveWindow
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetClientRect(HWND hWnd, PRECT prc);
|
|
|
|
/**
|
|
* \fn gal_pixel GUIAPI DWORD2PixelByWindow (HWND hWnd, DWORD dwColor)
|
|
* \brief Convert a DWORD color to gal_pixel for a window.
|
|
*
|
|
* This function converts a color in DWORD to the pixel value according to
|
|
* the surface of the main window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param dwColor The color value in DWORD.
|
|
*
|
|
* \return The converted pixel value.
|
|
*/
|
|
MG_EXPORT gal_pixel GUIAPI DWORD2PixelByWindow (HWND hWnd, DWORD dwColor);
|
|
|
|
/**
|
|
* \fn gal_pixel GUIAPI GetWindowBkColor (HWND hWnd)
|
|
* \brief Returns the current background color of a window.
|
|
*
|
|
* This function returns the pixel value of the current background color of
|
|
* the window specified by \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The pixel value of the background color.
|
|
*
|
|
* \note The type of return value changed from int to gal_pixel since v3.2.
|
|
*
|
|
* \sa SetWindowBkColor
|
|
*/
|
|
MG_EXPORT gal_pixel GUIAPI GetWindowBkColor (HWND hWnd);
|
|
|
|
/**
|
|
* \fn gal_pixel GUIAPI SetWindowBkColor (HWND hWnd, gal_pixel new_bkcolor)
|
|
* \brief Set the background color of a window.
|
|
*
|
|
* This function sets the background color of the specified window \a hWnd
|
|
* to be new pixel value \a new_backcolor. You should call \a UpdateWindow
|
|
* or \a InvalidateRect in order that the new background color runs into
|
|
* affect.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param new_bkcolor The pixel value of the new background color.
|
|
* \return The pixel value of the old background color.
|
|
*
|
|
* \note The type of return value and \a new_bkcolor changed from int to
|
|
* gal_pixel since v3.2.
|
|
*
|
|
* \sa GetWindowBkColor
|
|
*/
|
|
MG_EXPORT gal_pixel GUIAPI SetWindowBkColor (HWND hWnd, gal_pixel new_bkcolor);
|
|
|
|
/**
|
|
* \fn PLOGFONT GUIAPI GetWindowFont (HWND hWnd)
|
|
* \brief Retrieve the default font of a window.
|
|
*
|
|
* This function retrieves the default font of the specified
|
|
* window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The default logical font of the window.
|
|
*
|
|
* \sa SetWindowFont
|
|
*/
|
|
MG_EXPORT PLOGFONT GUIAPI GetWindowFont (HWND hWnd);
|
|
|
|
/**
|
|
* \fn PLOGFONT GUIAPI SetWindowFont (HWND hWnd, PLOGFONT pLogFont)
|
|
* \brief Set the default font of a window.
|
|
*
|
|
* This function sets the default font of the specified window \a hWnd
|
|
* to be the logical font \a pLogFont. This function will send an
|
|
* MSG_FONTCHANGING message to the window. If the handler of the message
|
|
* returns non-zero value, this function will return immediately with the
|
|
* unchanged default font. Or, after the new default font set, this function
|
|
* will send an MSG_FONTCHANGED message to the window as a notification.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param pLogFont The new default logical font. If it is NULL, this function
|
|
* will set the default font to be the system wchar font.
|
|
*
|
|
* \return The old default logical font of the window, NULL on error.
|
|
*
|
|
* \sa GetWindowFont, GetSystemFont
|
|
*/
|
|
MG_EXPORT PLOGFONT GUIAPI SetWindowFont (HWND hWnd, PLOGFONT pLogFont);
|
|
|
|
/**
|
|
* \fn HCURSOR GUIAPI GetWindowCursor (HWND hWnd)
|
|
* \brief Retrieve the current cursor of a window.
|
|
*
|
|
* This function retrieves the current cursor of the specified
|
|
* window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The handle to the cursor.
|
|
*
|
|
* \sa SetWindowCursor
|
|
*/
|
|
MG_EXPORT HCURSOR GUIAPI GetWindowCursor (HWND hWnd);
|
|
|
|
/**
|
|
* \fn HCURSOR GUIAPI SetWindowCursor (HWND hWnd, HCURSOR hNewCursor)
|
|
* \brief Set the current cursor of a window.
|
|
*
|
|
* This function sets the current cursor of the specified window \a hWnd with
|
|
* argument \a hNewCursor.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param hNewCursor The handle to the new cursor.
|
|
* \return The handle to the old cursor.
|
|
*
|
|
* \sa GetWindowCursor
|
|
*/
|
|
MG_EXPORT HCURSOR GUIAPI SetWindowCursor (HWND hWnd, HCURSOR hNewCursor);
|
|
|
|
/**
|
|
* \fn HICON GUIAPI GetWindowIcon (HWND hWnd)
|
|
* \brief Retrieve the current icon of a window.
|
|
*
|
|
* This function retrieves the current icon of the specified
|
|
* window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The handle to the icon.
|
|
*
|
|
* \sa SetWindowIcon
|
|
*/
|
|
MG_EXPORT HICON GUIAPI GetWindowIcon (HWND hWnd);
|
|
|
|
/**
|
|
* \fn HICON GUIAPI SetWindowIcon (HWND hWnd, HICON hIcon, BOOL bRedraw)
|
|
* \brief Set the current icon of a window.
|
|
*
|
|
* This function sets the current icon of the specified window \a hWnd with
|
|
* argument \a hIcon.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param hIcon The handle to the new icon.
|
|
* \param bRedraw Indicates whether to update the whole window.
|
|
*
|
|
* \return The handle to the old icon.
|
|
*
|
|
* \note Note that MiniGUI only provides icon support for main window so far.
|
|
*
|
|
* \sa GetWindowIcon
|
|
*/
|
|
MG_EXPORT HICON GUIAPI SetWindowIcon (HWND hWnd, HICON hIcon, BOOL bRedraw);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI GetWindowStyle (HWND hWnd)
|
|
* \brief Retrieve the style of a window.
|
|
*
|
|
* This function retrieves the style of the window specified by \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The style of the window.
|
|
*
|
|
* \sa GetWindowExStyle
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI GetWindowStyle (HWND hWnd);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI GetWindowExStyle (HWND hWnd)
|
|
* \brief Retrieve the extended style of a window.
|
|
*
|
|
* This function retrieves the extended style of the window specified by \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The extended style of the window.
|
|
*
|
|
* \sa GetWindowStyle
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI GetWindowExStyle (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ExcludeWindowStyle (HWND hWnd, DWORD dwStyle)
|
|
* \brief Removes the specific style of a window.
|
|
*
|
|
* This function removes the specific style of the window
|
|
* specified by \a hWnd.
|
|
*
|
|
* Note that you should be very careful with changing the styles of a window
|
|
* on the fly by calling this function. You are strongly recommended to only
|
|
* change the customizable window styles (bits in WS_CTRLMASK) by calling
|
|
* this function.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param dwStyle The specific style which will be removed.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa ExcludeWindowStyle
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ExcludeWindowStyle (HWND hWnd, DWORD dwStyle);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IncludeWindowStyle (HWND hWnd, DWORD dwStyle)
|
|
* \brief Includes the specific style of a window.
|
|
*
|
|
* This function includes the specific style of the window
|
|
* specified by \a hWnd.
|
|
*
|
|
* Note that you should be very careful with changing the styles of a window
|
|
* on the fly by calling this function. You are strongly recommended to only
|
|
* change the customizable window styles (bits in WS_CTRLMASK) by calling
|
|
* this function.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param dwStyle The specific style which will be included.
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa IncludeWindowStyle
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IncludeWindowStyle (HWND hWnd, DWORD dwStyle);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ExcludeWindowExStyle (HWND hWnd, DWORD dwStyle)
|
|
* \brief Removes the specific extended style of a window.
|
|
*
|
|
* This function removes the specific extended style of the window
|
|
* specified by \a hWnd.
|
|
*
|
|
* Note that you should be very careful with changing the extended styles of
|
|
* a window on the fly by calling this function. You are strongly recommended
|
|
* to only change the customizable window styles (bits in
|
|
* WS_EX_CONTROL_MASK | WS_EX_CONTROL_MASK) by calling this function.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param dwStyle The specific extended style which will be removed.
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa ExcludeWindowStyle
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ExcludeWindowExStyle (HWND hWnd, DWORD dwStyle);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IncludeWindowExStyle (HWND hWnd, DWORD dwStyle)
|
|
* \brief Includes the specific extended style of a window.
|
|
*
|
|
* This function includes the specific extended style of the window
|
|
* specified by \a hWnd.
|
|
*
|
|
* Note that you should be very careful with changing the extended styles of
|
|
* a window on the fly by calling this function. You are strongly recommended
|
|
* to only change the customizable window styles (bits in
|
|
* WS_EX_CONTROL_MASK | WS_EX_CONTROL_MASK) by calling this function.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param dwStyle The specific extended style which will be included.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa IncludeWindowStyle
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IncludeWindowExStyle (HWND hWnd, DWORD dwStyle);
|
|
|
|
/**
|
|
* \fn WNDPROC GUIAPI GetWindowCallbackProc (HWND hWnd)
|
|
* \brief Retrieve the callback procedure of a window.
|
|
*
|
|
* This function retrieves the window callback procedure of the specified window
|
|
* \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The callback procedure of the window.
|
|
*
|
|
* \sa SetWindowCallbackProc
|
|
*/
|
|
MG_EXPORT WNDPROC GUIAPI GetWindowCallbackProc (HWND hWnd);
|
|
|
|
/**
|
|
* \fn WNDPROC GUIAPI SetWindowCallbackProc (HWND hWnd, WNDPROC newProc)
|
|
* \brief Set the callback procedure of a window.
|
|
*
|
|
* This function sets the window callback procedure of the specified window
|
|
* \a hWnd to be the procedure \a newProc.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param newProc The new callback procedure of the window.
|
|
* \return The old callback procedure of the window.
|
|
*
|
|
* \sa GetWindowCallbackProc
|
|
*
|
|
* Example:
|
|
*
|
|
* \include subclass.c
|
|
*/
|
|
MG_EXPORT WNDPROC GUIAPI SetWindowCallbackProc (HWND hWnd, WNDPROC newProc);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI GetWindowAdditionalData (HWND hWnd)
|
|
* \brief Retrieve the first additional data of a window.
|
|
*
|
|
* This function retrieves the first additional data of the specified window
|
|
* \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The first additional data of the window.
|
|
*
|
|
* \sa SetWindowAdditionalData
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI GetWindowAdditionalData (HWND hWnd);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI SetWindowAdditionalData (HWND hWnd, DWORD newData)
|
|
* \brief Set the first additional data of a window.
|
|
*
|
|
* This function sets the first additional data of the specified window
|
|
* \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param newData The new first additional data of the window.
|
|
* \return The old first additional data of the window.
|
|
*
|
|
* \note For a dialog box created by \a DialogBoxIndirectParam,
|
|
* its second additional data used internally by the system to save
|
|
* the return value of the box. So you should avoid setting the
|
|
* second additional data of a dialog box.
|
|
*
|
|
* \sa GetWindowAdditionalData
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI SetWindowAdditionalData (HWND hWnd, DWORD newData);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI GetWindowAdditionalData2 (HWND hWnd)
|
|
* \brief Retrieve the second additional data of a window.
|
|
*
|
|
* This function retrieves the second additional data of the specified window
|
|
* \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The second additional data of the window.
|
|
*
|
|
* \sa SetWindowAdditionalData2
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI GetWindowAdditionalData2 (HWND hWnd);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI SetWindowAdditionalData2 (HWND hWnd, DWORD newData)
|
|
* \brief Set the second additional data of a window.
|
|
*
|
|
* This function sets the second additional data of the specified window
|
|
* \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param newData The new second additional data of the window.
|
|
* \return The old second additional data of the window.
|
|
*
|
|
* \note For a control created by \a CreateWindowEx, its second additional
|
|
* data is reserved for internal use. So you should avoid setting
|
|
* the second additional data of a control.
|
|
*
|
|
* \sa GetWindowAdditionalData2
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI SetWindowAdditionalData2 (HWND hWnd, DWORD newData);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI GetWindowClassAdditionalData (HWND hWnd)
|
|
* \brief Retrieve the additional data of a control class.
|
|
*
|
|
* This function retrieves the additional data of the control class to which
|
|
* the specified control \a hWnd belongs.
|
|
*
|
|
* \param hWnd The handle to the control.
|
|
*
|
|
* \return The additional data of the control class to which the control
|
|
* belongs.
|
|
*
|
|
* \note Note that this function always returns zero for the main window.
|
|
*
|
|
* \sa SetWindowClassAdditionalData
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI GetWindowClassAdditionalData (HWND hWnd);
|
|
|
|
/**
|
|
* \fn DWORD GUIAPI SetWindowClassAdditionalData (HWND hWnd, DWORD newData)
|
|
* \brief Set the additional data of a control class.
|
|
*
|
|
* This function sets the additional data of the control class to which
|
|
* the specified control \a hWnd belongs.
|
|
*
|
|
* \param hWnd The handle to the control.
|
|
* \param newData The new additional data of the control class.
|
|
* \return The old additional data of the control class.
|
|
*
|
|
* \note This function always does nothing and returns zero for the main window.
|
|
*
|
|
* \sa SetWindowClassAdditionalData
|
|
*/
|
|
MG_EXPORT DWORD GUIAPI SetWindowClassAdditionalData (HWND hWnd, DWORD newData);
|
|
|
|
/**
|
|
* \fn const char* GUIAPI GetWindowCaption (HWND hWnd)
|
|
* \brief Retrieve the caption of a window.
|
|
*
|
|
* This function retrieves the caption of the specified window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The pointer to the caption string of the window.
|
|
*
|
|
* \sa SetWindowCaption
|
|
*/
|
|
MG_EXPORT const char* GUIAPI GetWindowCaption (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowCaption (HWND hWnd, const char* spCaption)
|
|
* \brief Set the caption of a window.
|
|
*
|
|
* This function sets the caption of the specified window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param spCaption The pointer to the new caption of the window.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa GetWindowCaption, SetWindowText
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetWindowCaption (HWND hWnd, const char* spCaption);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI InvalidateRect (HWND hWnd, const RECT* prc, BOOL bEraseBkgnd)
|
|
* \brief Makes a rectangle region in the client area of a window invalid.
|
|
*
|
|
* This function adds a rectangle pointed to by \a prc to the specified
|
|
* window's update region. The update region represents the portion of
|
|
* the window's client area that must be redrawn, and erase background
|
|
* if argument \a bReaseBkgnd is set.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param prc The pointer to a RECT structure which defines the
|
|
* invalid rectangle.
|
|
* \param bEraseBkgnd Indicates whether the background should be erased.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa MSG_PAINT
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI InvalidateRect (HWND hWnd,
|
|
const RECT* prc, BOOL bEraseBkgnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI InvalidateRegion (HWND hWnd, const CLIPRGN* pRgn, BOOL bErase)
|
|
* \brief Invalidates the client area within the specified region.
|
|
*
|
|
* This function invalidates the client area within the specified region
|
|
* by adding it to the current update region of a window. The invalidated
|
|
* region, along with all other areas in the update region, is marked for
|
|
* painting when the next MSG_PAINT message occurs.
|
|
*
|
|
* \param hWnd Handle to the window with an update region that is to be
|
|
* modified.
|
|
* \param pRgn Pointer to the region to be added to the update region.
|
|
* The region is assumed to have client coordinates. If this
|
|
* parameter is NULL, the entire client area is added to the
|
|
* update region.
|
|
* \param bErase Specifies whether the background within the
|
|
* update region should be erased when the update region is processed.
|
|
* If this parameter is TRUE, the background is erased. If the
|
|
* parameter is FALSE, the background remains unchanged.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \note Invalidated areas accumulate in the update region until the
|
|
* next MSG_PAINT message is processed or until the region is
|
|
* validated by using the ValidateRect or ValidateRegion function.
|
|
* MiniGUI sends a MSG_PAINT message to a window whenever its
|
|
* update region is not empty and there are no other messages
|
|
* in the application queue for that window.
|
|
* The specified region must have been created by using one of
|
|
* the region functions.
|
|
* If the bErase parameter is TRUE for any part of the update region,
|
|
* the background in the entire region is erased, not just in
|
|
* the specified part.
|
|
*
|
|
* \sa MSG_PAINT, InvalidateRect, ValidateRegion
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI InvalidateRegion (HWND hWnd, const CLIPRGN* pRgn, BOOL bErase);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ValidateRect (HWND hWnd, const RECT* rect)
|
|
* \brief Validates the client area within a rectangle by removing
|
|
* the rectangle from the update region of the specified window.
|
|
*
|
|
* This function validates the client area within a rectangle by
|
|
* removing the rectangle from the update region of the specified window.
|
|
*
|
|
* \param hWnd Handle to the window whose update region is to be modified.
|
|
* \param rect Pointer to a RECT structure that contains the client
|
|
* coordinates of the rectangle to be removed from the update region.
|
|
* If this parameter is NULL, the entire client area is removed.
|
|
*
|
|
* \return If the function succeeds, the return value is nonzero.
|
|
* If the function fails, the return value is zero.
|
|
*
|
|
* \note The BeginPaint function automatically validates the entire
|
|
* client area. Neither the ValidateRect nor ValidateRegion function
|
|
* should be called if a portion of the update region must be
|
|
* validated before the next MSG_PAINT message is generated.
|
|
* The system continues to generate MSG_PAINT messages until
|
|
* the current update region is validated.
|
|
*
|
|
* \sa MSG_PAINT, BeginPaint, ValidateRegion, InvalidateRect
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ValidateRect (HWND hWnd, const RECT* rect);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ValidateRegion (HWND hWnd, const CLIPRGN* pRgn)
|
|
* \brief Validates the client area within a region by removing the
|
|
* region from the current update region of the specified window.
|
|
*
|
|
* This function validates the client area within a region by removing
|
|
* the region \a pRgn from the current update region of the specified
|
|
* window \a hWnd.
|
|
*
|
|
* \param hWnd Handle to the window whose update region is to be modified.
|
|
* \param pRgn A region that defines the area to be removed from the
|
|
* update region. If this parameter is NULL, the entire client area
|
|
* is removed.
|
|
*
|
|
* \return If the function succeeds, the return value is nonzero.
|
|
* If the function fails, the return value is zero.
|
|
*
|
|
* \note The specified region must have been created by a region function.
|
|
* The region coordinates are assumed to be client coordinates.
|
|
* The BeginPaint function automatically validates the entire client area.
|
|
* Neither the ValidateRect nor ValidateRegion function should be called
|
|
* if a portion of the update region must be validated before the
|
|
* next MSG_PAINT message is generated.
|
|
*
|
|
* \sa MSG_PAINT, BeginPaint, ValidateRect, InvalidateRegion
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ValidateRegion (HWND hWnd, const CLIPRGN* pRgn);
|
|
|
|
/**
|
|
* \fn HDC GUIAPI BeginPaint(HWND hWnd)
|
|
* \brief Prepares a window for painting.
|
|
*
|
|
* This function prepares the specified window \a hWnd for painting.
|
|
* This function is called in the handler of MSG_PAINT message normally.
|
|
* It returns a device context including the update region of the window.
|
|
* When you are done with the device context, you should call \a EndPaint
|
|
* to finish the painting of the window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The device context.
|
|
*
|
|
* \sa EndPaint
|
|
*/
|
|
MG_EXPORT HDC GUIAPI BeginPaint(HWND hWnd);
|
|
|
|
/**
|
|
* \fn void GUIAPI EndPaint(HWND hWnd, HDC hdc)
|
|
* \brief Marks the end of painting in a window.
|
|
*
|
|
* This function marks the end of painting in the specified window.
|
|
* This function is required for each call to the \a BeginPaint function,
|
|
* but only after painting is complete.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param hdc The device context returned by BeginPaint.
|
|
*
|
|
* \sa BeginPaint
|
|
*/
|
|
MG_EXPORT void GUIAPI EndPaint(HWND hWnd, HDC hdc);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetUpdateRect (HWND hWnd, RECT* update_rect)
|
|
* \brief Retrieve the bounding box of the update region of a window.
|
|
*
|
|
* This function retrieves the bounding box of the update region of
|
|
* the specified window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param update_rect The pointer to a RECT structure which will contains
|
|
* the bounding box of the update region.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa InvalidateRect
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetUpdateRect (HWND hWnd, RECT* update_rect);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetUpdateRegion (HWND hWnd, PCLIPRGN pRgn)
|
|
* \brief Copy the update region of a window to a region.
|
|
*
|
|
* This function copies the update region of the specified window \a hWnd
|
|
* into the region \a pRgn.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param pRgn The pointer to a region which receives the update region
|
|
* of the window.
|
|
*
|
|
* \return The region type.
|
|
* \retval NULLREGION Region is empty.
|
|
* \retval SIMPLEREGION Region is a single rectangle.
|
|
* \retval COMPLEXREGION Region is more than one rectangle.
|
|
* \retval -1 An error occurred.
|
|
*
|
|
* \sa GetUpdateRect
|
|
*/
|
|
MG_EXPORT int GUIAPI GetUpdateRegion (HWND hWnd, PCLIPRGN pRgn);
|
|
|
|
/**
|
|
* \fn int GUIAPI ClientWidthToWindowWidthEx (DWORD dwStyle, \
|
|
int win_type, int cw)
|
|
* \brief Calculates main window width from the width of the client area.
|
|
*
|
|
* This function calculates the window width from the width of the
|
|
* client area.
|
|
*
|
|
* \param dwStyle The style of window.
|
|
* \param win_type The type of window.
|
|
* \param cw The width of the client area.
|
|
*
|
|
* \return The width of the main window.
|
|
*
|
|
* \sa ClientHeightToWindowHeightEx
|
|
*/
|
|
MG_EXPORT int GUIAPI ClientWidthToWindowWidthEx (DWORD dwStyle,
|
|
int win_type, int cw);
|
|
|
|
/**
|
|
* \fn int GUIAPI ClientHeightToWindowHeightEx (DWORD dwStyle, int win_type, \
|
|
int ch, BOOL hasMenu)
|
|
* \brief Calculates window height from the height of the client area.
|
|
*
|
|
* This function calculates the main window height from the height of
|
|
* the client area.
|
|
*
|
|
* \param dwStyle The style of window.
|
|
* \param win_type The type of window.
|
|
* \param ch The height of the client area.
|
|
* \param hasMenu Indicates whether the main window has menu.
|
|
* \return The height of the main window.
|
|
*
|
|
* \sa ClientWidthToWindowWidthEx
|
|
*/
|
|
MG_EXPORT int GUIAPI ClientHeightToWindowHeightEx (DWORD dwStyle,
|
|
int win_type, int ch, BOOL hasMenu);
|
|
|
|
#define ClientWidthToWindowWidth(dwStyle, cw) \
|
|
ClientWidthToWindowWidthEx (dwStyle, LFRDR_WINTYPE_MAINWIN, cw)
|
|
|
|
#define ClientHeightToWindowHeight(dwStyle, ch, hasMenu) \
|
|
ClientHeightToWindowHeightEx (dwStyle, LFRDR_WINTYPE_MAINWIN, ch, hasMenu)
|
|
|
|
/**
|
|
* \fn BOOL AdjustWindowRectEx (RECT* pRect, DWORD dwStyle, BOOL bMenu,
|
|
DWORD dwExStyle)
|
|
* \brief Calculates the required size of the window rectangle
|
|
* based on the desired size of the client rectangle.
|
|
*
|
|
* This function calculates the required size of the window rectangle,
|
|
* based on the desired size of the client rectangle. The window rectangle
|
|
* can then be passed to the CreateMainWindow or CreateWindow function to
|
|
* create a window whose client area is the desired size.
|
|
*
|
|
* A client rectangle is the smallest rectangle that completely encloses
|
|
* a client area. A window rectangle is the smallest rectangle that
|
|
* completely encloses the window, which includes the client area and
|
|
* the nonclient area.
|
|
*
|
|
* The AdjustWindowRectEx function does not add extra space when a menu bar
|
|
* wraps to two or more rows.
|
|
*
|
|
* The AdjustWindowRectEx function takes the WS_VSCROLL or WS_HSCROLL
|
|
* styles into account.
|
|
*
|
|
* \param pRect Pointer to a RECT structure that contains the coordinates
|
|
* of the top-left and bottom-right corners of the desired client area.
|
|
* When the function returns, the structure contains the coordinates
|
|
* of the top-left and bottom-right corners of the window to
|
|
* accommodate the desired client area.
|
|
* \param dwStyle Specifies the window style of the window whose required
|
|
* size is to be calculated.
|
|
* \param bMenu Specifies whether the window has a menu.
|
|
* \param dwExStyle Specifies the extended window style of the window whose
|
|
* required size is to be calculated.
|
|
*
|
|
* \return If the function succeeds, the return value is nonzero.
|
|
* If the function fails, the return value is zero.
|
|
*
|
|
* \sa ClientWidthToWindowWidth, ClientHeightToWindowHeight
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI AdjustWindowRectEx (RECT* pRect, DWORD dwStyle,
|
|
BOOL bMenu, DWORD dwExStyle);
|
|
|
|
/**
|
|
* \fn void GUIAPI ClientToScreen (HWND hWnd, int* x, int* y)
|
|
* \brief Converts the client coordinates of a point to screen coordinates.
|
|
*
|
|
* This function converts the client coordinates of the specified point
|
|
* \a (*x,*y) in the specified window \a hWnd to screen coordinates.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param x The pointer to the x coordinate.
|
|
* \param y The pointer to the y coordinate.
|
|
*
|
|
* \sa ScreenToClient
|
|
*/
|
|
MG_EXPORT void GUIAPI ClientToScreen (HWND hWnd, int* x, int* y);
|
|
|
|
/**
|
|
* \fn void GUIAPI ScreenToClient (HWND hWnd, int* x, int* y)
|
|
* \brief Converts the screen coordinates of a point to client coordinates.
|
|
*
|
|
* This function converts the screen coordinates of the specified point
|
|
* \a (*x,*y) to client coordinates of the specified window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param x The pointer to the x coordinate.
|
|
* \param y The pointer to the y coordinate.
|
|
*
|
|
* \sa ClientToScreen
|
|
*/
|
|
MG_EXPORT void GUIAPI ScreenToClient (HWND hWnd, int* x, int* y);
|
|
|
|
/**
|
|
* \fn void GUIAPI ClientToWindow (HWND hWnd, int* x, int* y)
|
|
* \brief Converts the client coordinates to the window coordinates.
|
|
*
|
|
* This function converts the client coordinates of the specified point
|
|
* \a (*x,*y) in the specified window \a hWnd to the window coordinates.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param x The pointer to the x coordinate.
|
|
* \param y The pointer to the y coordinate.
|
|
*
|
|
* \sa WindowToClient
|
|
*/
|
|
MG_EXPORT void GUIAPI ClientToWindow(HWND hWnd, int* x, int* y);
|
|
|
|
/**
|
|
* \fn void GUIAPI WindowToClient (HWND hWnd, int* x, int* y)
|
|
* \brief Converts the window coordinates to client coordinates.
|
|
*
|
|
* This function converts the window coordinates of the specified point
|
|
* \a (*x,*y) in the specified window \a hWnd to the client coordinates.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param x The pointer to the x coordinate.
|
|
* \param y The pointer to the y coordinate.
|
|
*
|
|
* \sa WindowToScreen
|
|
*/
|
|
MG_EXPORT void GUIAPI WindowToClient(HWND hWnd, int* x, int* y);
|
|
|
|
|
|
/**
|
|
* \fn void GUIAPI WindowToScreen (HWND hWnd, int* x, int* y)
|
|
* \brief Converts the window coordinates of a point to screen coordinates.
|
|
*
|
|
* This function converts the window coordinates of the specified point
|
|
* \a (*x,*y) in the specified window \a hWnd to the screen coordinates.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param x The pointer to the x coordinate.
|
|
* \param y The pointer to the y coordinate.
|
|
*
|
|
* \sa ScreenToWindow
|
|
*/
|
|
MG_EXPORT void GUIAPI WindowToScreen (HWND hWnd, int* x, int* y);
|
|
|
|
/**
|
|
* \fn void GUIAPI ScreenToWindow (HWND hWnd, int* x, int* y)
|
|
* \brief Converts the screen coordinates of a point to window coordinates.
|
|
*
|
|
* This function converts the screen coordinates of the specified point
|
|
* \a (*x,*y) to the window coordinates of the specfied window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param x The pointer to the x coordinate.
|
|
* \param y The pointer to the y coordinate.
|
|
*
|
|
* \sa WindowToScreen
|
|
*/
|
|
MG_EXPORT void GUIAPI ScreenToWindow (HWND hWnd, int* x, int* y);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsMainWindow (HWND hWnd)
|
|
* \brief Determine whether a window is a main window.
|
|
*
|
|
* This function determines whether the specified window \a hWnd is
|
|
* a main window or not.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return TRUE for main window, otherwise FALSE.
|
|
*
|
|
* \sa IsControl, IsWindow
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsMainWindow (HWND hWnd);
|
|
|
|
#ifdef _MGHAVE_VIRTUAL_WINDOW
|
|
/**
|
|
* \fn BOOL GUIAPI IsVirtualWindow (HWND hWnd)
|
|
* \brief Determine whether a window is a virtual window.
|
|
*
|
|
* This function determines whether the specified window \a hWnd is
|
|
* a virtual window or not.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return TRUE for a virtual window, otherwise FALSE.
|
|
*
|
|
* \sa IsMainWindow, IsWindow, IsControl
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsVirtualWindow (HWND hWnd);
|
|
#endif /* defined _MGHAVE_VIRTUAL_WINDOW */
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsControl (HWND hWnd)
|
|
* \brief Determine whether a window is a control.
|
|
*
|
|
* This function determines whether the specified window \a hWnd is a control.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return TRUE for control, otherwise FALSE.
|
|
*
|
|
* \sa IsMainWindow, IsWindow
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsControl (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsWindow (HWND hWnd)
|
|
* \brief Determine whether a window handle identifies an existing window.
|
|
*
|
|
* This function determines whether the specified window handle \a hWnd
|
|
* identifies an existing window.
|
|
*
|
|
* \param hWnd The window handle.
|
|
*
|
|
* \return TRUE for window, otherwise FALSE.
|
|
*
|
|
* \sa IsMainWindow, IsControl
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsWindow (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsDialog (HWND hWnd)
|
|
* \brief Determine whether a window handle identifies a dialog window.
|
|
*
|
|
* This function determines whether the specified window handle \a hWnd
|
|
* identifies a dialog window.
|
|
*
|
|
* \param hWnd The window handle.
|
|
*
|
|
* \return TRUE for dialog window, otherwise FALSE.
|
|
*
|
|
* \sa IsMainWindow, IsControl
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsDialog (HWND hWnd);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetParent (HWND hWnd)
|
|
* \brief Retrieve the handle to a child window's parent window.
|
|
*
|
|
* This function retrieves the handle to the specified child window's
|
|
* parent window.
|
|
*
|
|
* \param hWnd The handle to the child window.
|
|
*
|
|
* \return The handle to the parent, HWND_INVALID indicates an error.
|
|
*
|
|
* \note For a main window, this function always returns HWNL_NULL.
|
|
* For HWND_DESKTOP or an invalid window handle,
|
|
* HWND_INVALID will be returned.
|
|
*
|
|
* \sa GetMainWindowHandle
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetParent (HWND hWnd);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetMainWindowHandle (HWND hWnd)
|
|
* \brief Retrieve the handle to the main window contains a window.
|
|
*
|
|
* This function retrieves the handle to the main window which contains the
|
|
* specified window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The handle to the main window, HWND_INVALID indicates an error.
|
|
*
|
|
* \note For a main window, this function always returns the handle to itself.
|
|
* For HWND_DESKTOP, HWND_DESKTOP is returned.
|
|
*
|
|
* \sa GetParent
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetMainWindowHandle (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsWindowVisible (HWND hWnd)
|
|
* \brief Retrieve the visibility state of the specified window.
|
|
*
|
|
* This function retrieves the visibility state of the specified window \a hWnd.
|
|
*
|
|
* \param hWnd Handle to the window to test.
|
|
*
|
|
* \return If the specified window, its parent window, its parent's parent
|
|
* window, and so forth, all have the WS_VISIBLE style, the return
|
|
* value is nonzero. Otherwise the return value is zero.
|
|
*
|
|
* \sa ShowWindow
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsWindowVisible (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetWindowRect (HWND hWnd, PRECT prc)
|
|
* \brief Retrieve the dimensions of the bounding rectangle of a window.
|
|
*
|
|
* This function retrieves the dimension of the bounding rectangle of
|
|
* the specified window \a hWnd. The dimensions are given in parent's
|
|
* client coordinates (screen coordinates for main window) that are
|
|
* relative to the upper-left corner of the parent's client area (screen).
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param prc The pointer to a RECT structure which will contains the
|
|
* window rectangle.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa GetClientRect
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetWindowRect (HWND hWnd, PRECT prc);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetNextChild (HWND hWnd, HWND hChild)
|
|
* \brief Retrieve the next control in a window.
|
|
*
|
|
* This function retrieves the next child of the specified
|
|
* window \a hWnd. If you pass HWND_NULL for the argument
|
|
* of \a hChild, the function will return the first child of the window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param hChild The handle to a child of the window.
|
|
* \return The handle of the next child. If you pass HWND_NULL for
|
|
* the argument of \a hChild, it will return the first child of the
|
|
* window. When the child you passed is the last one, this function
|
|
* will return HWND_NULL. If hWnd is not the parent of hChild,
|
|
* this function will return HWND_INVALID.
|
|
*
|
|
* \sa GetNextMainWindow
|
|
*
|
|
* \note Do not use HWND_DESKTOP for \a hWnd or \a hChild.
|
|
*
|
|
* Example:
|
|
*
|
|
* \include nextcontrol.c
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetNextChild (HWND hWnd, HWND hChild);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetNextMainWindow (HWND hMainWnd)
|
|
* \brief Retrieve the next main window in the system according to the zorder.
|
|
*
|
|
* This function retrieves the next main window of the specified
|
|
* main window \a hMainWnd.
|
|
*
|
|
* \param hMainWnd The handle to the main window.
|
|
*
|
|
* \return The handle of the next main window. If you pass HWND_NULL
|
|
* for the argument of \a hMainWnd, it will return the topmost main
|
|
* window. When the main window you passed is the bottommost one,
|
|
* this function will return HWND_NULL. If hMainWnd is not a main
|
|
* window, the function will return HWND_INVALID.
|
|
*
|
|
* \sa GetNextChild
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetNextMainWindow (HWND hMainWnd);
|
|
|
|
#define WIN_SEARCH_METHOD_MASK 0xFF00
|
|
#define WIN_SEARCH_METHOD_BFS 0x0000
|
|
#define WIN_SEARCH_METHOD_DFS 0x0100
|
|
|
|
#define WIN_SEARCH_FILTER_MASK 0x00FF
|
|
#define WIN_SEARCH_FILTER_MAIN 0x0001
|
|
#define WIN_SEARCH_FILTER_VIRT 0x0002
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetHostedById (HWND hHosting,
|
|
* LINT lId, DWORD dwSearchFflags)
|
|
* \brief Retrieve a hosted main window or virtual window by identifier.
|
|
*
|
|
* All main windows and/or virtual windows in a thread form a window tree.
|
|
* The root window of the tree may be HWND_DESKTOP or the first main/virtual
|
|
* window created in the thread.
|
|
*
|
|
* This function retrieves the first window which has the specified identifier
|
|
* \a id in the window tree of the current thread.
|
|
*
|
|
* \param hHosting The handle to a main or virtual window in the thread,
|
|
* which will be the root of the sub window tree to search. If it is
|
|
* HWND_NULL, this function will use the root window of the current thread.
|
|
* \param lId The identifier.
|
|
* \param dwSearchFflags The search flags, should be OR'd with a search method
|
|
* value and one or two search filter values:
|
|
* - WIN_SEARCH_METHOD_BFS\n
|
|
* use BFS (breadth-first search).
|
|
* - WIN_SEARCH_METHOD_DFS\n
|
|
* use DFS (depth-first search).
|
|
* - WIN_SEARCH_FILTER_MAIN\n
|
|
* search main windows.
|
|
* - WIN_SEARCH_FILTER_VIRT\n
|
|
* search virtual windows.
|
|
*
|
|
* \return The handle to the first main window or virtual window which has the
|
|
* specified identifier in the searching sub window tree.
|
|
* If the current thread is not a message thread, it returns HWND_INVALID.
|
|
* If there is no window matches the identifier and the search flags,
|
|
* it returns HWND_NULL.
|
|
*
|
|
* \sa GetRootWindow, GetHosting, GetFirstHosted, GetNextHosted
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetHostedById (HWND hHosting,
|
|
LINT lId, DWORD dwSearchFlags);
|
|
|
|
/**
|
|
* \fn LINT GUIAPI GetWindowId (HWND hWnd)
|
|
* \brief Get the identifier of a window.
|
|
*
|
|
* This function returns the identifier of the specified window \a hWnd.
|
|
*
|
|
* \return The identifier of the window. This function returns -1 for
|
|
* an invalid window handle. Therefore, you should avoid to use -1 as
|
|
* a valid identifier of a window.
|
|
*
|
|
* \sa SetWindowId
|
|
*/
|
|
MG_EXPORT LINT GUIAPI GetWindowId (HWND hWnd);
|
|
|
|
/**
|
|
* \fn LINT GUIAPI SetWindowId (HWND hWnd, LINT lNewId)
|
|
* \brief Set the identifier of a window.
|
|
*
|
|
* This function sets the identifier of the specified window \a hWnd to
|
|
* \a lNewId and returns the old identifier.
|
|
*
|
|
* \return The old identifier of the window. This function returns -1 for
|
|
* an invalid window handle. Therefore, you should avoid to use -1 as
|
|
* a valid identifier of a window.
|
|
*
|
|
* \sa GetWindowId
|
|
*/
|
|
MG_EXPORT LINT GUIAPI SetWindowId (HWND hWnd, LINT lNewId);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetRootWindow (int* nrWins)
|
|
* \brief Retrieve the root window of the current thread.
|
|
*
|
|
* All main windows and/or virtual windows in a thread form a window tree.
|
|
* The root window of the tree may be HWND_DESKTOP or the first main/virtual
|
|
* window created in the thread.
|
|
*
|
|
* This function retrieves and returns the root window in the current thread.
|
|
*
|
|
* \param nrWins A pointer to an integer used to return the number of total
|
|
* windows in the current thread. It can be NULL.
|
|
*
|
|
* \return The handle to the root window. If the current thread is not
|
|
* a message thread, it returns HWND_INVALID. If there is no
|
|
* any window created in the current thread, it returns HWND_NULL.
|
|
*
|
|
* \sa GetHosting, GetFirstHosted, GetNextHosted, GetMainWindowById
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetRootWindow (int* nrWins);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetHosting (HWND hWnd)
|
|
* \brief Retrieve the hosting window of a main window or a virtual window.
|
|
*
|
|
* All main windows and/or virtual windows created by a thread form a
|
|
* window hosting tree. The root window of the tree may be HWND_DESKTOP
|
|
* or the first main/virtual window created by the thread.
|
|
*
|
|
* This function retrieves the hosting window of the specified main window
|
|
* or virtual window \a hWnd.
|
|
*
|
|
* For a root window in the current thread, this function returns HWND_NULL.
|
|
*
|
|
* \param hWnd The handle to the main window.
|
|
*
|
|
* \return The handle to the hosting window. If error occurs, for example,
|
|
* an invalid handle, the specified window is not in the current thread,
|
|
* or the current thread is not a message thread, this function returns
|
|
* HWND_INVALID. For a root window in the current thread, this function
|
|
* returns HWND_NULL.
|
|
*
|
|
* \sa GetRootWindow, GetFirstHosted, GetNextHosted
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetHosting (HWND hWnd);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetFirstHosted (HWND hHosting)
|
|
* \brief Retrieve the first hosted window of a main window or a virtual window.
|
|
*
|
|
* All main windows and/or virtual windows in a thread form a window tree.
|
|
* The root window of the tree may be HWND_DESKTOP or the first main/virtual
|
|
* window created in the thread.
|
|
*
|
|
* This function retrieves the first hosted main/virtual window of
|
|
* the specified main window \a hMainWnd.
|
|
*
|
|
* \param hHosting The handle to a main window or a virtual window.
|
|
*
|
|
* \return The handle to the first hosted window. If an invalid window
|
|
* handle is passed for \a hHosting, HWND_INVALID will be returned.
|
|
* If the specified window do not have a hosted window, this function
|
|
* returns HWND_NULL.
|
|
*
|
|
* \sa GetHosting, GetNextHosted
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetFirstHosted (HWND hHosting);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetNextHosted (HWND hHosting, HWND hHosted)
|
|
* \brief Retrieve the next hosted window of a main window or a virtual window.
|
|
*
|
|
* All main windows and/or virtual windows in a thread form a window tree.
|
|
* The root window of the tree may be HWND_DESKTOP or the first main/virtual
|
|
* window created in the thread.
|
|
*
|
|
* This function retrieves the next hosted main/virtual window of the specified
|
|
* main/virtual window \a hHosting. If \a hHosted is HWND_NULL, it is
|
|
* equivalent to call GetFirstHosted(hHosting).
|
|
|
|
* \param hHosting The handle to the hosting window.
|
|
* \param hHosted The handle to a known hosted window. This function
|
|
* will return the next hosted window.
|
|
*
|
|
* \return The handle to the next hosted main or virtual window.
|
|
* It returns HWND_NULL when \a hHosted is the last hosted window.
|
|
* If invalid window handles are passed, or if \a hHosted is not a hosted
|
|
* window of \a hHosting, this function returns HWND_INVALID.
|
|
*
|
|
* \sa GetHosting, GetFirstHosted
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetNextHosted (HWND hHosting, HWND hHosted);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetWindowTextLength (HWND hWnd)
|
|
* \brief Retrieve the length of a window's text.
|
|
*
|
|
* This function retrieves the length, in characters, of the specified
|
|
* window's text. The function retrieves the length of the text by sending
|
|
* an MSG_GETTEXTLENGTH message to the window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The length of the window's text.
|
|
*
|
|
* \sa GetWindowText
|
|
*/
|
|
MG_EXPORT int GUIAPI GetWindowTextLength (HWND hWnd);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetWindowText (HWND hWnd, char* spString, int nMaxLen)
|
|
* \brief Copies the text of a window's into a buffer.
|
|
*
|
|
* This function copies the text of the specified window \a hWnd into the buffer
|
|
* pointed to by \a spString. The function gets the window text by sending
|
|
* an MSG_GETTEXT message to the window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param spString The pointer to a buffer receives the text.
|
|
* \param nMaxLen The maximal number of characters can be copied to the buffer.
|
|
*
|
|
* \return The length of the window text string.
|
|
*
|
|
* \sa GetWindowCaption, SetWindowText
|
|
*/
|
|
MG_EXPORT int GUIAPI GetWindowText (HWND hWnd, char* spString, int nMaxLen);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowText (HWND hWnd, const char* spString)
|
|
* \brief Set the text of a window.
|
|
*
|
|
* This function copies the string in the buffer pointed to by \a spString
|
|
* to be the text of the specified window \a hWnd. The function sets
|
|
* the window text by sending an MSG_SETTEXT message to the window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param spString The pointer to the buffer.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa SetWindowCaption, GetWindowText
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetWindowText (HWND hWnd, const char* spString);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetFocusChild (HWND hParent)
|
|
* \brief Retrieve the handle to the window's active child that has
|
|
* the keyboard focus.
|
|
*
|
|
* This function retrieves the handle to the window's active child that has
|
|
* the keyboard focus.
|
|
*
|
|
* \param hParent The handle to the parent window.
|
|
*
|
|
* \return The handle to the active child.
|
|
*
|
|
* \sa SetFocusChild, SetNullFoucs
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetFocusChild (HWND hParent);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI SetNullFocus (HWND hParent)
|
|
* \brief Cancels the current active child and set the focus child to be null.
|
|
*
|
|
* This function cancels the current active child and set the focus child
|
|
* of the window \a hParent to be null.
|
|
*
|
|
* \param hParent The handle to the parent window.
|
|
*
|
|
* \return The handle to the old active child.
|
|
*
|
|
* \sa GetFocusChild, SetFocusChild
|
|
*/
|
|
MG_EXPORT HWND GUIAPI SetNullFocus (HWND hParent);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI SetFocusChild (HWND hWnd)
|
|
* \brief Set the active child of a window.
|
|
*
|
|
* This function sets the specified window \a hWnd as the active child of
|
|
* its parent.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The handle to the old active child of its parent.
|
|
*
|
|
* \sa GetFocusChild, SetNullFocus
|
|
*/
|
|
MG_EXPORT HWND GUIAPI SetFocusChild (HWND hWnd);
|
|
|
|
/**
|
|
* \def SetFocus
|
|
* \sa SetFocusChild
|
|
*/
|
|
#define SetFocus SetFocusChild
|
|
|
|
/**
|
|
* \def GetFocus
|
|
* \sa GetFocusChild
|
|
*/
|
|
#define GetFocus GetFocusChild
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetActiveWindow (void)
|
|
* \brief Retrieve the main window handle of the active main window.
|
|
*
|
|
* This function retrieves the main window handle of the active main window
|
|
* which receives the input.
|
|
*
|
|
* \return The handle to the active main window.
|
|
*
|
|
* \sa SetActiveWindow, GetFocusChild
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetActiveWindow (void);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI SetActiveWindow (HWND hMainWnd)
|
|
* \brief Set a main window to be the active main window.
|
|
*
|
|
* This function sets the specified main window \a hMainWnd to be the
|
|
* active main window which receives the input.
|
|
*
|
|
* \param hMainWnd The handle to the new active main window.
|
|
*
|
|
* \return The handle to the old active main window.
|
|
*
|
|
* \sa GetActiveWindow, SetFocusChild
|
|
*/
|
|
MG_EXPORT HWND GUIAPI SetActiveWindow (HWND hMainWnd);
|
|
|
|
/**
|
|
* \def GetForegroundWindow
|
|
* \sa GetActiveWindow
|
|
*/
|
|
#define GetForegroundWindow GetActiveWindow
|
|
|
|
/**
|
|
* \def SetForegroundWindow
|
|
* \sa SetActiveWindow
|
|
*/
|
|
#define SetForegroundWindow SetActiveWindow
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetCapture(void)
|
|
* \brief Retrieve the handle to the window (if any) that has captured
|
|
* the mouse.
|
|
*
|
|
* This function retrieves the handle to the window (if any) that has captured
|
|
* the mouse. Only one window at a time can capture the mouse; this window
|
|
* receives mouse input whether or not the cursor is within its borders.
|
|
*
|
|
* \return The handle to the window that has captured the mouse, 0 for
|
|
* no window captures the mouse.
|
|
*
|
|
* \sa SetCapture
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetCapture(void);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI SetCapture(HWND hWnd)
|
|
* \brief Set the mouse capture to the specified window.
|
|
*
|
|
* This function sets the mouse capture to the specified window \a hWnd.
|
|
* Once a window has captured the mouse, all mouse input is directed to
|
|
* that window, regardless of whether the cursor is within the borders
|
|
* of that window. Only one window at a time can capture the mouse.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The old capture window.
|
|
*
|
|
* \sa GetCapture
|
|
*/
|
|
MG_EXPORT HWND GUIAPI SetCapture(HWND hWnd);
|
|
|
|
/**
|
|
* \fn void GUIAPI ReleaseCapture(void)
|
|
* \brief Releases the mouse capture from a window and restores normal mouse
|
|
* input processing.
|
|
*
|
|
* This function releases the mouse capture from a window and restores normal
|
|
* mouse input processing. A window that has captured the mouse receives
|
|
* all mouse input, regardless of the position of the cursor.
|
|
*
|
|
* \sa GetCapture, SetCapture
|
|
*/
|
|
MG_EXPORT void GUIAPI ReleaseCapture(void);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetWindowUnderCursor(void)
|
|
* \brief Retrieve the handle to the window (if any) which is just
|
|
* beneath the mouse cursor.
|
|
*
|
|
* This function retrieves the handle to the window (if any) that is under
|
|
* the mouse cursor. If a parent window and a child window are all under
|
|
* the mouse cursor, the handle to the child window will be returned.
|
|
*
|
|
* \return The handle to the window under the mouse cursor,
|
|
* HWND_NULL for no window is under the mouse cursor.
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetWindowUnderCursor (void);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI WindowFromPointEx (POINT pt, BOOL bRecursion)
|
|
* \brief Retrieve a handle to the window that contains the specified point.
|
|
*
|
|
* This function retrieves a handle to the main window that contains the
|
|
* specified point \a pt.
|
|
*
|
|
* \param pt Specifies a POINT structure that defines the point to be checked.
|
|
* \param bRecursion Try find the child window of the mMainWindow
|
|
*
|
|
* \return The return value is a handle to the main window that contains
|
|
* the point. If no main window exists at the given point,
|
|
* the return value is HWND_NULL.
|
|
*/
|
|
MG_EXPORT HWND GUIAPI WindowFromPointEx (POINT pt, BOOL bRecursion);
|
|
|
|
#define WindowFromPoint(pt) WindowFromPointEx(pt, TRUE)
|
|
|
|
#define CWP_ALL 0x0000
|
|
#define CWP_SKIPINVISIBLE 0x0001
|
|
#define CWP_SKIPDISABLED 0x0002
|
|
#define CWP_SKIPTRANSPARENT 0x0004
|
|
|
|
/**
|
|
* \fn HWND GUIAPI ChildWindowFromPointEx (HWND hParent, POINT pt,
|
|
UINT uFlags)
|
|
* \brief Retrieve a handle to the child window that contains the
|
|
* speicified point and meets the certain criteria.
|
|
*
|
|
* This function determines which, if any, of the child windows
|
|
* belonging to a parent window contains the specified point.
|
|
* The function can ignore invisible, disabled, and transparent
|
|
* child windows. The search is restricted to immediate child windows.
|
|
* Grandchildren, and deeper descendant windows are not searched.
|
|
*
|
|
* \param hParent Handle to the parent window.
|
|
* \param pt Specifies a POINT structure that defines the client
|
|
* coordinates (relative to hParent) of the point to be checked.
|
|
* \param uFlags Specifies which child windows to skip. This parameter can be
|
|
* one or more of the following values.
|
|
* - CWP_ALL\n
|
|
* Does not skip any child windows
|
|
* - CWP_SKIPINVISIBLE\n
|
|
* Skips invisible child windows
|
|
* - CWP_SKIPDISABLED\n
|
|
* Skips disabled child windows
|
|
* - CWP_SKIPTRANSPARENT\n
|
|
* Skips transparent child windows
|
|
*
|
|
* \return The return value is a handle to the first child window
|
|
* that contains the point and meets the criteria specified
|
|
* by uFlags. If the point is within the parent window but
|
|
* not within any child window that meets the criteria,
|
|
* the return value is a handle to the parent window.
|
|
* If the point lies outside the parent window or if the
|
|
* function fails, the return value is HWND_NULL.
|
|
*
|
|
* \sa ChildWindowFromPoint
|
|
*/
|
|
MG_EXPORT HWND GUIAPI ChildWindowFromPointEx (HWND hParent, POINT pt,
|
|
UINT uFlags);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI ChildWindowFromPoint (HWND hParent, POINT pt)
|
|
* \brief Retrieve a handle to the child window that contains the
|
|
* speicified point.
|
|
*
|
|
* This function determines which, if any, of the child windows
|
|
* belonging to a parent window contains the specified point by calling
|
|
* ChildWindowFromPointEx and passing CWP_ALL to uFlags parameter.
|
|
*
|
|
* \sa ChildWindowFromPointEx
|
|
*/
|
|
static inline HWND GUIAPI ChildWindowFromPoint (HWND hParent, POINT pt)
|
|
{
|
|
return ChildWindowFromPointEx (hParent, pt, CWP_ALL);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI MoveWindow (HWND hWnd, int x, int y, int w, int h, \
|
|
* BOOL fPaint)
|
|
* \brief Changes the position and dimensions of a window.
|
|
*
|
|
* This function changes the position and dimensions of the specified window
|
|
* \a hWnd. For a main window, the position and dimensions are relative to
|
|
* the upper-left corner of the screen. For a control, they are relative to
|
|
* the upper-left corner of the parent window's client area.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param x The new x coordinate of the upper-left corner of the window.
|
|
* \param y The new y coordinate of the upper-left corner of the window.
|
|
* \param w The new width of the window.
|
|
* \param h The new height of the window.
|
|
* \param fPaint Indicates whether the window should be repainted.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa ScrollWindow
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI MoveWindow (HWND hWnd, int x, int y, int w, int h,
|
|
BOOL fPaint);
|
|
|
|
#define SW_INVALIDATE 0x01
|
|
#define SW_ERASE 0x02
|
|
#define SW_SCROLLCHILDREN 0x04
|
|
|
|
/**
|
|
* \fn int GUIAPI ScrollWindowEx (HWND hWnd, int dx, int dy,
|
|
const RECT *prcScroll, const RECT *prcClip,
|
|
PCLIPRGN pRgnUpdate, PRECT prcUpdate, UINT flags)
|
|
* \brief Scrolls the content of a window's client area.
|
|
*
|
|
* This function scrolls the content of a window's client area.
|
|
*
|
|
* If the SW_INVALIDATE and SW_ERASE flags are not specified,
|
|
* ScrollWindowEx does not invalidate the area that is scrolled from.
|
|
* If either of these flags is set, ScrollWindowEx invalidates this area.
|
|
* The area is not updated until the application calls the UpdateWindow
|
|
* function or retrieves the MSG_PAINT message from the application queue.
|
|
*
|
|
* If the window has the WS_CLIPCHILDREN style, the returned areas
|
|
* specified by pRgnUpdate and prcUpdate represent the total area of
|
|
* the scrolled window that must be updated, including any areas in
|
|
* child windows that need updating.
|
|
*
|
|
* If the SW_SCROLLCHILDREN flag is specified, the system does not
|
|
* properly update the screen if part of a child window is scrolled.
|
|
* The part of the scrolled child window that lies outside the source
|
|
* rectangle is not erased and is not properly redrawn in its new
|
|
* destination. To move child windows that do not lie completely
|
|
* within the rectangle specified by prcScroll, use the DeferWindowPos
|
|
* function. The cursor is repositioned if the SW_SCROLLCHILDREN flag is set
|
|
* and the caret rectangle intersects the scroll rectangle.
|
|
*
|
|
* All input and output coordinates (for prcScroll, prcClip, prcUpdate,
|
|
* and pRgnUpdate) are determined as client coordinates.
|
|
*
|
|
* \param hWnd Handle to the window where the client area is to be scrolled.
|
|
* \param dx Specifies the amount, in device units, of horizontal scrolling.
|
|
* This parameter must be a negative value to scroll to the left.
|
|
* \param dy Specifies the amount, in device units, of vertical scrolling.
|
|
* This parameter must be a negative value to scroll up.
|
|
* \param prcScroll Pointer to a RECT structure that specifies the
|
|
* portion of the client area to be scrolled. If this parameter
|
|
* is NULL, the entire client area is scrolled.
|
|
* \param prcClip Pointer to a RECT structure that contains the coordinates
|
|
* of the clipping rectangle. Only device bits within the clipping
|
|
* rectangle are affected. Bits scrolled from the outside of the
|
|
* rectangle to the inside are painted; bits scrolled from the inside
|
|
* of the rectangle to the outside are not painted. This parameter
|
|
* may be NULL.
|
|
* \param pRgnUpdate Pointer to the region that is modified to hold the
|
|
* region invalidated by scrolling. This parameter may be NULL.
|
|
* \param prcUpdate Pointer to a RECT structure that receives the
|
|
* boundaries of the rectangle invalidated by scrolling. This
|
|
* parameter may be NULL.
|
|
* \param flags Specifies flags that control scrolling. This parameter
|
|
* can be one of the following values:
|
|
* - SW_ERASE\n
|
|
* Erases the newly invalidated region by sending a MSG_ERASEBKGND
|
|
* message to the window when specified with the SW_INVALIDATE flag.
|
|
* - SW_INVALIDATE\n
|
|
* Invalidates the region identified by the pRgnUpdate parameter
|
|
* after scrolling.
|
|
* - SW_SCROLLCHILDREN\n
|
|
* Scrolls all child windows that intersect the rectangle pointed
|
|
* to by the prcScroll parameter. The child windows are scrolled
|
|
* by the number of pixels specified by the dx and dy parameters.
|
|
* MiniGUI calls MoveWindow to all child windows that
|
|
* intersect the prcScroll rectangle, even if they do not move.
|
|
*
|
|
* \return If the function succeeds, the return value is SIMPLEREGION
|
|
* (rectangular invalidated region), COMPLEXREGION (nonrectangular
|
|
* invalidated region; overlapping rectangles), or NULLREGION
|
|
* (no invalidated region).
|
|
* If the function fails, the return value is -1.
|
|
*/
|
|
MG_EXPORT int GUIAPI ScrollWindowEx (HWND hWnd, int dx, int dy,
|
|
const RECT *prcScroll, const RECT *prcClip,
|
|
PCLIPRGN pRgnUpdate, PRECT prcUpdate, UINT flags);
|
|
|
|
/**
|
|
* \fn void GUIAPI ScrollWindow (HWND hWnd, int dx, int dy, \
|
|
const RECT* prcScroll, const RECT* prcClip)
|
|
* \brief Scrolls the content of a window's client area.
|
|
*
|
|
* This function scrolls the content of the specified window's client area.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param dx The new x coordinate of the origin in the client coordinates
|
|
* system after scrolling.
|
|
* \param dy The new y coordinate of the origin in the client coordinates
|
|
* system after scrolling.
|
|
* \param prcScroll The rectangle of the area which will be scrolled actually.
|
|
* NULL for whole client area.
|
|
* \param prcClip A rectangle, all children covered totally by this rectangle
|
|
* will be moved after scrolling. All of the children will be
|
|
* moved if \a prcClip is NULL.
|
|
*
|
|
* \sa MoveWindow
|
|
*/
|
|
static inline void GUIAPI ScrollWindow (HWND hWnd, int dx, int dy,
|
|
const RECT* prcScroll, const RECT* prcClip)
|
|
{
|
|
ScrollWindowEx (hWnd, dx, dy, prcScroll, prcClip,
|
|
NULL, NULL, SW_ERASE | SW_INVALIDATE | SW_SCROLLCHILDREN);
|
|
}
|
|
|
|
#if 0
|
|
/* deprecated. */
|
|
#define GetWindowElementColor(iItem) \
|
|
GetWindowElementPixelEx(HWND_NULL, (HDC)-1, iItem)
|
|
|
|
/* deprecated. */
|
|
#define GetWindowElementColorEx(hWnd, iItem) \
|
|
GetWindowElementPixelEx(hWnd, (HDC)-1, iItem)
|
|
#endif
|
|
|
|
/**
|
|
* \def GetWindowElementPixel
|
|
* \brief Get window element pixel value.
|
|
* \sa GetWindowElementPixelEx
|
|
*/
|
|
#define GetWindowElementPixel(hWnd, iItem) \
|
|
GetWindowElementPixelEx(hWnd, HDC_INVALID, iItem)
|
|
|
|
/** @} end of window_general_fns */
|
|
|
|
/**
|
|
* \defgroup sys_bmps System bitmap/icon operations
|
|
* @{
|
|
*/
|
|
#define SYSBMP_RADIOBUTTON "radiobutton"
|
|
#define SYSBMP_CHECKBUTTON "checkbutton"
|
|
#define SYSBMP_BGPICTURE "bgpicture"
|
|
#define SYSBMP_BGPICPOS "bgpicpos"
|
|
|
|
/* Obsolete definitions; back-compatibility definitions. */
|
|
#define SYSBMP_IMECTRLBTN "IMEctrlbtn"
|
|
#define SYSBMP_LOGO "logo"
|
|
|
|
/**
|
|
* \fn const BITMAP* GUIAPI GetSystemBitmapEx2 (HDC hdc,
|
|
* const char* rdr_name, const char* id)
|
|
* \brief Retrieve the system bitmap object by identifier.
|
|
*
|
|
* This function retrieves and returns the system bitmap object specified by
|
|
* the renderer name \a rdr_name and the identifier \a id. This function
|
|
* returns the BITMAP object which is compliant to the specified device context
|
|
* \a hdc.
|
|
*
|
|
* \param hdc The handle to the device context.
|
|
* \param rdr_name The renderer name.
|
|
* \param id The identifier of the system bitmap object, can be
|
|
* one of the following values:
|
|
*
|
|
* - SYSBMP_RADIOBUTTON\n
|
|
* - SYSBMP_CHECKBUTTON\n
|
|
* - SYSBMP_BGPICTURE\n
|
|
*
|
|
* \return The pointer to the system bitmap object.
|
|
*
|
|
* \note Since 5.0.0, if you use the compositing schema, a main window may
|
|
* use a private surface which is not compliant to the screen surface. Under
|
|
* this situation, you should use this function to load the system bitmap
|
|
* object instead of using \a GetSystemBitmapEx.
|
|
*
|
|
* \sa GetSystemBitmapEx
|
|
*
|
|
* Since 5.0.0.
|
|
*/
|
|
MG_EXPORT const BITMAP* GUIAPI GetSystemBitmapEx2 (HDC hdc,
|
|
const char* rdr_name, const char* id);
|
|
|
|
/**
|
|
* \fn const BITMAP* GUIAPI GetSystemBitmapEx (const char* rdr_name,
|
|
* const char* id)
|
|
* \brief Retrieve the system bitmap object by identifier.
|
|
*
|
|
* This function retrieves and returns the system bitmap object by the renderer
|
|
* name \a rdr_name and the identifier \a id. This function returns a BITMAP
|
|
* object which complies which is compliant to HDC_SCREEN.
|
|
*
|
|
* \param rdr_name The renderer name.
|
|
* \param id The identifier of the system bitmap object, can be
|
|
* one of the following values:
|
|
*
|
|
* - SYSBMP_RADIOBUTTON\n
|
|
* - SYSBMP_CHECKBUTTON\n
|
|
* - SYSBMP_BGPICTURE\n
|
|
*
|
|
* \return The pointer to the system bitmap object.
|
|
*
|
|
* \sa GetLargeSystemIcon, GetSmallSystemIcon
|
|
*/
|
|
static inline const BITMAP* GUIAPI GetSystemBitmapEx (const char* rdr_name,
|
|
const char* id)
|
|
{
|
|
return GetSystemBitmapEx2 (HDC_SCREEN, rdr_name, id);
|
|
}
|
|
|
|
/**
|
|
* \fn PBITMAP GUIAPI GetSystemBitmap (HWND hWnd, const char* id)
|
|
* \brief Retrieve the system bitmap object by identifier.
|
|
*
|
|
* This function retrieves and returns the system bitmap object by
|
|
* its identifier \a id for the specified window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param id The identifier of the system bitmap object, can be
|
|
* one of the following values:
|
|
*
|
|
* - SYSBMP_RADIOBUTTON\n
|
|
* - SYSBMP_CHECKBUTTON\n
|
|
* - SYSBMP_BGPICTURE\n
|
|
*
|
|
* \return The pointer to the system bitmap object.
|
|
*
|
|
* \sa GetSystemBitmapEx2
|
|
*/
|
|
MG_EXPORT const BITMAP* GUIAPI GetSystemBitmap (HWND hWnd, const char* id);
|
|
|
|
/**
|
|
* \def GetSystemBitmapByHwnd(hWnd, id)
|
|
* \brief An alias of GetSystemBitmap.
|
|
*
|
|
* \sa GetSystemBitmap
|
|
*/
|
|
#define GetSystemBitmapByHwnd(hWnd, id) GetSystemBitmap ((hWnd), (id))
|
|
|
|
/**
|
|
* \fn void GUIAPI TermSystemBitmapEx (const char* id, \
|
|
const char* rdr_name, PBITMAP bmp)
|
|
* \brief Release the system bitmap object by identifier.
|
|
*
|
|
* \param id The identifier of the system bitmap object, can be
|
|
* one of the following values:
|
|
*
|
|
* - SYSBMP_RADIOBUTTON\n
|
|
* - SYSBMP_CHECKBUTTON\n
|
|
* - SYSBMP_BGPICTURE\n
|
|
*
|
|
* \param rdr_name The renderer name.
|
|
* \param bmp The pointer to the system bitmap object.
|
|
*
|
|
* \return none.
|
|
*
|
|
* \sa GetSystemBitmap
|
|
*/
|
|
MG_EXPORT void GUIAPI TermSystemBitmapEx (const char* id,
|
|
const char* rdr_name, PBITMAP bmp);
|
|
|
|
/**
|
|
* \fn void GUIAPI TermSystemBitmap (HWND hWnd, const char* id, PBITMAP bmp)
|
|
* \brief Release the system bitmap object by identifier.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param id The identifier of the system bitmap object, can be
|
|
* one of the following values:
|
|
*
|
|
* - SYSBMP_RADIOBUTTON\n
|
|
* - SYSBMP_CHECKBUTTON\n
|
|
* - SYSBMP_BGPICTURE\n
|
|
*
|
|
* \param bmp The pointer to the system bitmap object.
|
|
*
|
|
* \return none.
|
|
*
|
|
* \sa GetSystemBitmap
|
|
*/
|
|
MG_EXPORT void GUIAPI TermSystemBitmap (HWND hWnd, const char* id, PBITMAP bmp);
|
|
|
|
/*for backward compatibility */
|
|
#define IDI_APPLICATION 0
|
|
#define IDI_HAND 1
|
|
#define IDI_STOP IDI_HAND
|
|
#define IDI_QUESTION 2
|
|
#define IDI_EXCLAMATION 3
|
|
#define IDI_ASTERISK 4
|
|
#define IDI_INFORMATION IDI_ASTERISK
|
|
|
|
#define SYSICON_FT_DIR "dir"
|
|
#define SYSICON_FT_FILE "file"
|
|
|
|
#define SYSICON_TREEFOLD "treefold"
|
|
#define SYSICON_TREEUNFOLD "treeunfold"
|
|
|
|
/**
|
|
* \fn HICON GUIAPI LoadSystemIconEx (HDC hdc, \
|
|
const char* rdr_name, const char* szItemName, int which)
|
|
* \brief Loads an icon from information defined in MiniGUI.cfg.
|
|
*
|
|
* This function loads an icon from information defined in MiniGUI.cfg.
|
|
*
|
|
* \param hdc The device context.
|
|
* \param rdr_name The renderer name.
|
|
* \param szItemName The key name in the section of renderer name in MiniGUI.cfg.
|
|
* \param which Tell the function to load which icon. 0 for the small icon,
|
|
* and 1 for large icon.
|
|
*
|
|
* \return The handle to the loaded icon.
|
|
*
|
|
* \sa LoadIconFromFile, DestroyIcon
|
|
*/
|
|
MG_EXPORT HICON GUIAPI LoadSystemIconEx (HDC hdc,
|
|
const char* rdr_name, const char* szItemName, int which);
|
|
|
|
/**
|
|
* \fn HICON GUIAPI LoadSystemIcon (const char* szItemName, int which)
|
|
* \brief Uses default renderer and HDC_SCREEN to load an icon from
|
|
* information defined in MiniGUI.cfg.
|
|
*
|
|
* This function loads an icon from information defined in MiniGUI.cfg.
|
|
*
|
|
* \param szItemName The key name in the section of renderer name in MiniGUI.cfg.
|
|
* \param which Tell the function to load which icon.
|
|
*
|
|
* \return The handle to the loaded icon.
|
|
*
|
|
* \sa LoadIconFromFile, DestroyIcon
|
|
*/
|
|
MG_EXPORT HICON GUIAPI LoadSystemIcon (const char* szItemName, int which);
|
|
|
|
/**
|
|
* \fn HICON GUIAPI GetLargeSystemIconEx (HWND hWnd, int iItem)
|
|
* \brief Retrieve a large system icon by its identifier in default renderer.
|
|
*
|
|
* This function retrieves the handle to a large (32x32) system icon
|
|
* by its identifier \a id.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iItem The identifier of the icon. It can be one of the
|
|
* following values:
|
|
* - IDI_APPLICATION\n The application icon.
|
|
* - IDI_STOP\n The stop icon.
|
|
* - IDI_QUESTION\n The question mark icon.
|
|
* - IDI_EXCLAMATION\n The exclamation mark icon.
|
|
* - IDI_INFORMATION\n The information mark icon.
|
|
*
|
|
* \return The handle to the icon.
|
|
*
|
|
* \sa GetSystemBitmap
|
|
*/
|
|
MG_EXPORT HICON GUIAPI GetLargeSystemIconEx (HWND hWnd, int iItem);
|
|
|
|
/**
|
|
* \fn HICON GUIAPI GetSmallSystemIconEx (HWND hWnd, int iItem)
|
|
* \brief Retrieve a small system icon by its identifier.
|
|
*
|
|
* This function retrieves the handle to a small (16x16) system icon by
|
|
* its identifier \a id.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iItem The identifier of the icon. It can be one of the
|
|
* following values:
|
|
* - IDI_APPLICATION\n The application icon.
|
|
* - IDI_STOP\n The stop icon.
|
|
* - IDI_QUESTION\n The question mark icon.
|
|
* - IDI_EXCLAMATION\n The exclamation mark icon.
|
|
* - IDI_INFORMATION\n The information mark icon.
|
|
*
|
|
* \return The handle to the icon.
|
|
*
|
|
* \sa GetSystemBitmap
|
|
*/
|
|
MG_EXPORT HICON GUIAPI GetSmallSystemIconEx (HWND hWnd, int iItem);
|
|
|
|
/**
|
|
* \def GetLargeSystemIcon
|
|
* \brief Retrieve a large (32x32) system icon by its identifier
|
|
* in default renderer.
|
|
* \sa GetSmallSystemIconEx
|
|
*/
|
|
#define GetLargeSystemIcon(iItem) GetLargeSystemIconEx(HWND_NULL, iItem)
|
|
|
|
/**
|
|
* \def GetSmallSystemIcon
|
|
* \brief Retrieve a small (16x16) system icon by its identifier
|
|
* in default renderer.
|
|
* \sa GetSmallSystemIconEx
|
|
*/
|
|
#define GetSmallSystemIcon(iItem) GetSmallSystemIconEx(HWND_NULL, iItem)
|
|
|
|
/** @} end of sys_bmps */
|
|
|
|
/**
|
|
* \defgroup scrollbar_fns Scroll bar operations
|
|
* @{
|
|
*/
|
|
|
|
#define SB_HORZ 1
|
|
#define SB_VERT 2
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI EnableScrollBar (HWND hWnd, int iSBar, BOOL bEnable)
|
|
* \brief Enables or disables one scroll bar arrows.
|
|
*
|
|
* This function enables or disables one scroll bar arrows.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param bEnable Indicates whether to enable or disable the scroll bar.
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa ShowScrollBar
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI EnableScrollBar (HWND hWnd, int iSBar, BOOL bEnable);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetScrollPos (HWND hWnd, int iSBar, int* pPos)
|
|
* \brief Retrieve the current position of the scroll box (thumb) in the
|
|
* specified scroll bar.
|
|
*
|
|
* This function retrieves the current position of the scroll box (thumb) in
|
|
* the specified scroll bar. The current position is a relative value that
|
|
* depends on the current scrolling range.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param pPos The pointer to a integer which receives the position value.
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetScrollPos
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetScrollPos (HWND hWnd, int iSBar, int* pPos);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetScrollRange (HWND hWnd, int iSBar, int* pMinPos, int* pMaxPos)
|
|
* \brief Retrieve the minimum and maximum position values for the specified
|
|
* scroll bar.
|
|
*
|
|
* This function retrieves the minimum and maximum position values for
|
|
* the specified scroll bar.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param pMinPos The pointer to a integer which receives the minimum
|
|
* position value.
|
|
* \param pMaxPos The pointer to a integer which receives the maximum
|
|
* position value.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetScrollRange
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetScrollRange (HWND hWnd, int iSBar,
|
|
int* pMinPos, int* pMaxPos);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetScrollPos (HWND hWnd, int iSBar, int iNewPos)
|
|
* \brief Set the position of the scroll box (thumb) of the specified
|
|
* scroll bar.
|
|
*
|
|
* This function sets the position of the scroll box (thumb) of the specified
|
|
* scroll bar, and if needed, redraws the scroll bar to reflect the new
|
|
* position of the scroll box.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param iNewPos The new position value.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa GetScrollPos
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetScrollPos (HWND hWnd, int iSBar, int iNewPos);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetScrollRange (HWND hWnd, int iSBar, \
|
|
* int iMinPos, int iMaxPos)
|
|
* \brief Set the minimum and maximum position values for the specified
|
|
* scroll bar.
|
|
*
|
|
* This function sets the minimum and maximum position values for the
|
|
* specified scroll bar, and if needed, redraws the scroll bar to reflect
|
|
* the new position values of the scroll box.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param iMinPos The new minimum position value.
|
|
* \param iMaxPos The new maximum position value.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa GetScrollRange
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetScrollRange (HWND hWnd, int iSBar,
|
|
int iMinPos, int iMaxPos);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ShowScrollBar (HWND hWnd, int iSBar, BOOL bShow)
|
|
* \brief Shows or hides the specified scroll bar.
|
|
*
|
|
* This function shows or hides the specified scroll bar.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param bShow Indicates whether show or hide the scrollbar.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa EnableScrollBar
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ShowScrollBar (HWND hWnd, int iSBar, BOOL bShow);
|
|
|
|
#define SIF_RANGE 0x0001
|
|
#define SIF_PAGE 0x0002
|
|
#define SIF_POS 0x0004
|
|
#define SIF_DISABLENOSCROLL 0x0008
|
|
#define SIF_TRACKPOS 0x0010
|
|
#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
|
|
|
|
/** left or up arrow */
|
|
#define SB_ARROW_LTUP 0x0001
|
|
|
|
/** right or bottom arrow */
|
|
#define SB_ARROW_BTDN 0x0002
|
|
|
|
/** left,up, right or bottom arrow */
|
|
#define SB_ARROW_BOTH (SB_ARROW_LTUP | SB_ARROW_BTDN)
|
|
|
|
/**
|
|
* Scroll bar information structure.
|
|
*/
|
|
typedef struct _SCROLLINFO
|
|
{
|
|
/** Size of the structrue in bytes */
|
|
UINT cbSize;
|
|
/**
|
|
* A flag indicates which fields contain valid values,
|
|
* can be OR'ed value of the following values:
|
|
* - SIF_RANGE\n
|
|
* Retrieve or sets the range of the scroll bar.
|
|
* - SIF_PAGE\n
|
|
* Retrieve or sets the page size of the scroll bar.
|
|
* - SIF_POS\n
|
|
* Retrieve or sets the position of the scroll bar.
|
|
* - SIF_DISABLENOSCROLL\n
|
|
* Hides the scroll when disabled, not implemented so far.
|
|
*/
|
|
UINT fMask;
|
|
/** The minimum position value of the scroll bar */
|
|
int nMin;
|
|
/** The maximum position value of the scroll bar */
|
|
int nMax;
|
|
/** The page size of the scroll bar */
|
|
UINT nPage;
|
|
/** The position value of the scroll bar */
|
|
int nPos;
|
|
#if 0
|
|
int nTrackPos;
|
|
#endif
|
|
} SCROLLINFO, *PSCROLLINFO;
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetScrollInfo (HWND hWnd, int iSBar, \
|
|
* const SCROLLINFO* lpsi, BOOL fRedraw)
|
|
* \brief Set the parameters of a scroll bar.
|
|
*
|
|
* This function sets the parameters of a scroll bar, including the
|
|
* minimum and maximum scrolling positions, the page size, and the position
|
|
* of the scroll box (thumb). The function also redraws the scroll bar,
|
|
* if requested.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param lpsi The pointer to the structure of scroll bar information.
|
|
* \param fRedraw A boolean indicates whether to redraw the scroll bar.
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa GetScrollInfo, SCROLLINFO
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetScrollInfo (HWND hWnd, int iSBar,
|
|
const SCROLLINFO* lpsi, BOOL fRedraw);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetScrollInfo (HWND hWnd, int iSBar, PSCROLLINFO lpsi)
|
|
* \brief Retrieve the parameters of a scroll bar.
|
|
*
|
|
* This function retrieves the parameters of a scroll bar, including the
|
|
* minimum and maximum scrolling positions, the page size, and the position
|
|
* of the scroll box (thumb).
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \param iSBar Indicates to enable or disable which scroll bar, can be one of
|
|
* the following values:
|
|
* - SB_HORZ\n
|
|
* The horizontal scroll bar.
|
|
* - SB_VERT\n
|
|
* The vertical scroll bar.
|
|
* \param lpsi The pointer to a structure of SCROLLINFO which receives the
|
|
* parameters.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetScrollInfo, SCROLLINFO
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetScrollInfo (HWND hWnd, int iSBar, PSCROLLINFO lpsi);
|
|
|
|
/** @} end of scrollbar_fns */
|
|
|
|
/**
|
|
* \defgroup class_fns Window class operations
|
|
* @{
|
|
*/
|
|
|
|
/* Class styles -- not supported so far */
|
|
#define CS_VREDRAW 0x0001
|
|
#define CS_HREDRAW 0x0002
|
|
#define CS_KEYCVTWINDOW 0x0004
|
|
#define CS_DBLCLKS 0x0008
|
|
|
|
#define CS_OWNDC 0x0020
|
|
#define CS_CLASSDC 0x0040
|
|
#define CS_PARENTDC 0x0080
|
|
|
|
#define CS_NOKEYCVT 0x0100
|
|
#define CS_NOCLOSE 0x0200
|
|
#define CS_SAVEBITS 0x0800
|
|
|
|
#define CS_BYTEALIGNCLIENT 0x1000
|
|
#define CS_BYTEALIGNWINDOW 0x2000
|
|
#define CS_GLOBALCLASS 0x4000
|
|
#define CS_IME 0x8000
|
|
|
|
#define COP_STYLE 0x0001
|
|
#define COP_HCURSOR 0x0002
|
|
#define COP_BKCOLOR 0x0004
|
|
#define COP_WINPROC 0x0008
|
|
#define COP_ADDDATA 0x0010
|
|
|
|
/**
|
|
* Structure defines a window class
|
|
*/
|
|
typedef struct _WNDCLASS {
|
|
/** The class name */
|
|
const char* spClassName;
|
|
|
|
/** The mask of class information, can be OR'd with the following values:
|
|
* - COP_STYLE\n
|
|
* Retrieve the style of the window class.
|
|
* - COP_HCURSOR\n
|
|
* Retrieve the cursor of the window class.
|
|
* - COP_BKCOLOR\n
|
|
* Retrieve the background pixel value of the window class.
|
|
* - COP_WINPROC
|
|
* Retrieve the window procedure of the window class.
|
|
* - COP_ADDDATA\n
|
|
* Retrieve the additional data of the window class.
|
|
*/
|
|
DWORD opMask;
|
|
|
|
/** Window style for all instances of this window class */
|
|
DWORD dwStyle;
|
|
|
|
/** Extended window style for all instances of this window class */
|
|
DWORD dwExStyle;
|
|
|
|
/** Cursor handle to all instances of this window class */
|
|
HCURSOR hCursor;
|
|
|
|
#ifndef _MGSCHEMA_COMPOSITING
|
|
/**
|
|
* The background pixel value for all instances of this window class.
|
|
*
|
|
* Note that this field only available for shared frame buffer schema.
|
|
* Under compositing schema, you must use \a dwBkColor field to
|
|
* specify the background color for a control.
|
|
* This introduces a source code incompatibility, you should change
|
|
* you code with a conditional compilation statement block:
|
|
*
|
|
* \code
|
|
* #ifdef _MGSCHEMA_COMPOSITING
|
|
* MyClass.dwBkColor = RGBA_lightwhite;
|
|
* #else
|
|
* MyClass.iBkColor = PIXEL_lightwhite;
|
|
* #endif
|
|
* \endcode
|
|
*/
|
|
gal_pixel iBkColor;
|
|
#else /* not defined _MGSCHEMA_COMPOSITING */
|
|
/**
|
|
* The background color for all instances of this window class.
|
|
*
|
|
* Note that under compositing schema, you must use this field
|
|
* to specify the background color of a control class instead of
|
|
* the pixel value (\a iBkColor).
|
|
*
|
|
* The value of this field is a 32-bit RGBA quadruple essentially.
|
|
* You should use a value returned by \a MakeRGBA macro for this field.
|
|
*/
|
|
DWORD dwBkColor;
|
|
#endif /* defined _MGSCHEMA_COMPOSITING */
|
|
|
|
/** Window callback procedure of all instances of this window class */
|
|
LRESULT (*WinProc) (HWND, UINT, WPARAM, LPARAM);
|
|
|
|
/** The private additional data associated with this window class */
|
|
DWORD dwAddData;
|
|
} WNDCLASS;
|
|
typedef WNDCLASS* PWNDCLASS;
|
|
|
|
#define MAINWINCLASSNAME ("MAINWINDOW")
|
|
#define VIRTWINCLASSNAME ("VIRTWINDOW")
|
|
#define ROOTWINCLASSNAME ("ROOTWINDOW")
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI RegisterWindowClass (PWNDCLASS pWndClass)
|
|
* \brief Registers a window class.
|
|
*
|
|
* This function registers a window class.
|
|
* Later on, you can create a window of the registered class.
|
|
*
|
|
* \param pWndClass The pointer to a WNDCLASS structure which specifies
|
|
* the information of the window class.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa UnregisterWindowClass, WNDCLASS
|
|
*
|
|
* Example:
|
|
*
|
|
* \include registerwindowclass.c
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI RegisterWindowClass (PWNDCLASS pWndClass);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI UnregisterWindowClass (const char* szClassName)
|
|
* \brief Undoes the effect of \a RegisterWindowClass.
|
|
*
|
|
* This function unregisters a registered window class specified by
|
|
* \a szClassName.
|
|
*
|
|
* \param szClassName The name of the class to be unregistered.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa RegisterWindowClass
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI UnregisterWindowClass (const char* szClassName);
|
|
|
|
/**
|
|
* \fn const char* GUIAPI GetClassName (HWND hWnd)
|
|
* \brief Retrieve the name of the class to which the specified window belongs.
|
|
*
|
|
* This function retrieves the name of the class to which
|
|
* the specified window \a hWnd belongs.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \return The pointer to a const class name string, NULL on error.
|
|
*
|
|
* \sa RegisterWindowClass
|
|
*/
|
|
MG_EXPORT const char* GUIAPI GetClassName (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetWindowClassInfo (PWNDCLASS pWndClass)
|
|
* \brief Retrieve the information of the specified window class.
|
|
*
|
|
* This function retrieves the information of a window class.
|
|
* The window class to be retrived is specified by \a pWndClass->spClassName.
|
|
*
|
|
* \param pWndClass The pointer to a WNDCLASS structure, which specifies the
|
|
* window class to be retrived via \a spClassName field, and
|
|
* returns the information through other fields.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetWindowClassInfo
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetWindowClassInfo (PWNDCLASS pWndClass);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetWindowClassInfo (const WNDCLASS* pWndClass)
|
|
* \brief Set the information of the specified window class.
|
|
*
|
|
* This function sets the information of a window class.
|
|
* The window class to be operated is specified by \a pWndClass->spClassName.
|
|
*
|
|
* \param pWndClass The pointer to a WNDCLASS structure, which specifies
|
|
* the new information of the window class.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa GetWindowClassInfo
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetWindowClassInfo (const WNDCLASS* pWndClass);
|
|
|
|
/** @} end of class_fns */
|
|
|
|
/**
|
|
* \defgroup control_fns Control creating/destroying
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateWindowEx2 (const char* spClassName, \
|
|
* const char* spCaption, DWORD dwStyle, DWORD dwExStyle, \
|
|
* LINT id, int x, int y, int w, int h, HWND hParentWnd, \
|
|
* const char* werdr_name, const WINDOW_ELEMENT_ATTR* we_attrs, \
|
|
* DWORD dwAddData)
|
|
* \brief Creates a child window with extended style, renderer and
|
|
* attributes table.
|
|
*
|
|
* This function creates a child window (also known as "control") with
|
|
* extended style, renderer and attributes table. It specifies the window
|
|
* class, the window title, the window style, the window extended style,
|
|
* the initial position, and the size of the window, etc. The function also
|
|
* specifies the window's parent or owner.
|
|
*
|
|
* \param spClassName The class name of the control.
|
|
* \param spCaption The caption of the control.
|
|
* \param dwStyle The control style.
|
|
* \param dwExStyle The extended control style.
|
|
* \param id The identifier of the control.
|
|
* \param x x,y: The initial position of the control in the parent window.
|
|
* \param y x,y: The initial position of the control in the parent window.
|
|
* \param w The initial width of the control.
|
|
* \param h The initial height of the control.
|
|
* \param hParentWnd The handle to the parent window.
|
|
* \param werdr_name The window renderer name. NULL for default renderer.
|
|
* \param we_attrs The pointer to window element attribute table.
|
|
* NULL for default attribute table.
|
|
* \param dwAddData The first private additional data of the control.
|
|
* Note that some control classes use this value to initialize
|
|
* some properties of the new control instance. For these control
|
|
* classes, you should pass a valid value to it.
|
|
*
|
|
* \return The handle to the new control, HWND_INVALID on error.
|
|
*
|
|
* \sa CreateWindowEx, CreateMainWindow, CTRLDATA
|
|
*/
|
|
MG_EXPORT HWND GUIAPI CreateWindowEx2 (const char* spClassName,
|
|
const char* spCaption, DWORD dwStyle, DWORD dwExStyle,
|
|
LINT id, int x, int y, int w, int h, HWND hParentWnd,
|
|
const char* werdr_name, const WINDOW_ELEMENT_ATTR* we_attrs,
|
|
DWORD dwAddData);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateWindowEx (const char* spClassName,
|
|
const char* spCaption, DWORD dwStyle, DWORD dwExStyle,
|
|
LINT id, int x, int y, int w, int h, HWND hParentWnd,
|
|
DWORD dwAddData)
|
|
* \brief A shortcut version of CreateWindowEx2.
|
|
*
|
|
* This function creates a child window by calling CreateWindowEx2 function
|
|
* and passing NULL for both werdr_name and we_attrs parameters.
|
|
*
|
|
* \sa CreateWindowEx2
|
|
*/
|
|
static inline HWND GUIAPI CreateWindowEx (const char* spClassName,
|
|
const char* spCaption, DWORD dwStyle, DWORD dwExStyle,
|
|
LINT id, int x, int y, int w, int h, HWND hParentWnd,
|
|
DWORD dwAddData)
|
|
{
|
|
return CreateWindowEx2 (spClassName, spCaption, dwStyle, dwExStyle,
|
|
id, x, y, w, h, hParentWnd, NULL, NULL, dwAddData);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI DestroyWindow (HWND hWnd)
|
|
* \brief Destroys a specified control.
|
|
*
|
|
* This function destroys the specified control \a hWnd, which is created
|
|
* by \a CreateWindowEx or CreateWindowEx2.
|
|
*
|
|
* \param hWnd The handle to the control.
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa CreateWindowEx
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI DestroyWindow (HWND hWnd);
|
|
|
|
/**
|
|
* \fn NOTIFPROC GUIAPI SetNotificationCallback (HWND hwnd,
|
|
* NOTIFPROC notif_proc)
|
|
* \brief Set a new notification callback procedure for a window.
|
|
*
|
|
* This function sets the new notification callback procedure (\a notif_proc)
|
|
* for the specified window \a hwnd.
|
|
*
|
|
* In the early versions, the notification message will be sent to
|
|
* the target window as a MSG_COMMAND message.
|
|
*
|
|
* Since version 1.2.6, MiniGUI defines the Notification Callback Procedure
|
|
* for a window. You can specify a callback function for a window by calling
|
|
* \a SetNotificationCallback to receive and handle the notifications from
|
|
* its children in the procedure.
|
|
*
|
|
* Since version 5.0.0, the notification callback procedure also works for
|
|
* a main window or a virtual window.
|
|
*
|
|
* If you did not set the notification callback function of the target window,
|
|
* you must handle MSG_COMMAND message in the window procedure of the
|
|
* target window. However, due to historical reasons, MSG_COMMAND has
|
|
* the following restrictions:
|
|
* - The additional data you specified when calling \a NotifyWindow or
|
|
* \a NotifyParentEx will be lost.
|
|
* - The value of the identifier and the notification code cannot exceed
|
|
* a WORD.
|
|
*
|
|
* \param hwnd The handle to the window.
|
|
* \param notif_proc The new notification callback procedure, can be NULL.
|
|
*
|
|
* \return The old notification callback procedure.
|
|
*
|
|
* \sa NOTIFPROC, GetNotificationCallback, NotifyWindow, NotifyParentEx
|
|
*/
|
|
MG_EXPORT NOTIFPROC GUIAPI SetNotificationCallback (HWND hwnd,
|
|
NOTIFPROC notif_proc);
|
|
|
|
/**
|
|
* \fn NOTIFPROC GUIAPI GetNotificationCallback (HWND hwnd)
|
|
* \brief Get the notification callback procedure of a control.
|
|
*
|
|
* This function gets the new notification callback procedure of
|
|
* the control of \a hwnd.
|
|
*
|
|
* \param hwnd The handle to the control.
|
|
*
|
|
* \return The notification callback procedure.
|
|
*
|
|
* \sa NOTIFPROC, SetNotificationCallback
|
|
*/
|
|
MG_EXPORT NOTIFPROC GUIAPI GetNotificationCallback (HWND hwnd);
|
|
|
|
/**
|
|
* \def CreateWindow(class_name, caption, style, id, x, y, w, h, parent,
|
|
* add_data)
|
|
* \brief A simplified version of \a CreateWindowEx.
|
|
*
|
|
* \sa CreateWindowEx
|
|
*/
|
|
static inline HWND GUIAPI CreateWindow (const char* spClassName,
|
|
const char* spCaption, DWORD dwStyle,
|
|
LINT id, int x, int y, int w, int h, HWND hParentWnd,
|
|
DWORD dwAddData)
|
|
{
|
|
return CreateWindowEx2 (spClassName, spCaption, dwStyle, WS_EX_NONE,
|
|
id, x, y, w, h, hParentWnd, NULL, NULL, dwAddData);
|
|
}
|
|
|
|
/** @} end of control_fns */
|
|
|
|
/******************************** Timer Support ******************************/
|
|
/**
|
|
* \defgroup timer_fns Timer operations
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \var typedef BOOL (* TIMERPROC)(HWND, LINT, DWORD)
|
|
* \brief Type of the timer callback procedure.
|
|
*
|
|
* This is the prototype of the callback procedure of a timer created by
|
|
* \a SetTimerEx.
|
|
* MiniGUI will call the timer procedure instead of sending MSG_TIMER message.
|
|
*
|
|
* If the return value of a timer procedure is FALSE, the timer will be killed
|
|
* by MiniGUI automatically. This can be used to implement a one-shot timer.
|
|
*
|
|
* \sa SetTimerEx
|
|
*
|
|
* \note The prototype had changed since MiniGUI v3.2; the old one:
|
|
*
|
|
* BOOL (* TIMERPROC)(HWND, int, unsigned int)
|
|
*/
|
|
typedef BOOL (* TIMERPROC)(HWND, LINT, DWORD);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetTimerEx (HWND hWnd, LINT id, DWORD speed, \
|
|
* TIMERPROC timer_proc)
|
|
* \brief Creates a timer with the specified timeout value.
|
|
*
|
|
* This function creates a timer with the specified timeout value \a speed.
|
|
* Note that the timeout value is in the unit of 10 ms.
|
|
* When the timer expires, an MSG_TIMER message will be send to the
|
|
* window \a hWnd if \a timer_proc is NULL, otherwise MiniGUI will call
|
|
* \a timer_proc by passing \a hWnd, \a id, and the tick count when this
|
|
* timer had expired to this callback procedure.
|
|
*
|
|
* Since 5.0.0, if the specified timer already exists when you call
|
|
* this function, MiniGUI will reset the timer by using the new parameters.
|
|
*
|
|
* \param hWnd The window receives the MSG_TIMER message. If \a timer_proc
|
|
* is not NULL, MiniGUI will call \a timer_proc instead sending
|
|
* MSG_TIMER message to this window. If you use timer callback
|
|
* procedure, \a hWnd can be any value you can pass.
|
|
* \param id The identifier of the timer, will be passed to the window
|
|
* with MSG_TIMER message as the first parameter of the message.
|
|
* \param speed The timeout value of the timer. Note that the timeout value
|
|
* is in unit of 10 ms.
|
|
* \param timer_proc The timer callback procedure. If this argument is NULL,
|
|
* MiniGUI will send MSG_TIMER to the window procedure of \a hWnd.
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetTimer, ResetTimerEx, KillTimer, MSG_TIMER
|
|
*
|
|
* \note You should set, reset, and kill a timer in the same message thread
|
|
* if your enabled support for the virtual window.
|
|
*
|
|
* \note The prototype had changed since MiniGUI v3.2; the old one:
|
|
*
|
|
* BOOL SetTimerEx (HWND hWnd, int id, unsigned int speed, \
|
|
* TIMERPROC timer_proc);
|
|
*
|
|
* Example:
|
|
*
|
|
* \include settimer.c
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetTimerEx (HWND hWnd, LINT id, DWORD speed,
|
|
TIMERPROC timer_proc);
|
|
|
|
/**
|
|
* \def SetTimer(hwnd, id, speed)
|
|
* \brief The backward compatibility version of SetTimerEx.
|
|
*
|
|
* \sa SetTimerEx
|
|
*/
|
|
#define SetTimer(hwnd, id, speed) \
|
|
SetTimerEx(hwnd, id, speed, NULL)
|
|
|
|
/**
|
|
* \fn int GUIAPI KillTimer (HWND hWnd, LINT id)
|
|
* \brief Destroys a timer.
|
|
*
|
|
* This function destroys the specified timer \a id.
|
|
*
|
|
* \param hWnd The window owns the timer.
|
|
* \param id The identifier of the timer. If \a id is 0, this function will
|
|
* kill all timers of created by the window.
|
|
*
|
|
* \return The number of actually killed timer.
|
|
*
|
|
* \sa SetTimer
|
|
*
|
|
* \note The prototype had changed since MiniGUI v3.2; the old one:
|
|
* int GUIAPI KillTimer (HWND hWnd, int id)
|
|
*/
|
|
MG_EXPORT int GUIAPI KillTimer (HWND hWnd, LINT id);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ResetTimerEx (HWND hWnd, LINT id, DWORD speed, \
|
|
* TIMERPROC timer_proc)
|
|
* \brief Adjusts a timer with a different timeout value or different
|
|
* timer callback procedure.
|
|
*
|
|
* This function resets a timer with the specified timeout \a speed value.
|
|
*
|
|
* \param hWnd The window owns the timer.
|
|
* \param id The identifier of the timer.
|
|
* \param speed The new timeout value.
|
|
* \param timer_proc The new timer callback procedure. If \a timer_proc
|
|
* is INV_PTR, the setting of timer callback procedure will
|
|
* not change.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa SetTimerEx
|
|
*
|
|
* \note The prototype had changed since MiniGUI v3.2; the old one:
|
|
* BOOL GUIAPI ResetTimerEx (HWND hWnd, int id, unsigned int speed, TIMERPROC timer_proc)
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ResetTimerEx (HWND hWnd, LINT id, DWORD speed,
|
|
TIMERPROC timer_proc);
|
|
|
|
/**
|
|
* \def ResetTimer(hwnd, id, speed)
|
|
* \brief The backward compatibility version of ResetTimerEx.
|
|
*
|
|
* \sa ResetTimerEx
|
|
*/
|
|
#define ResetTimer(hwnd, id, speed) \
|
|
ResetTimerEx(hwnd, id, speed, (TIMERPROC)INV_PTR)
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI IsTimerInstalled (HWND hWnd, LINT id)
|
|
* \brief Determine whether a timer is installed.
|
|
*
|
|
* This function determines whether a timer with identifier \a id for
|
|
* a window \a hwnd has been installed in the current thread.
|
|
*
|
|
* \param hWnd The window owns the timer.
|
|
* \param id The identifier of the timer.
|
|
*
|
|
* \return TRUE for installed, otherwise FALSE.
|
|
*
|
|
* \sa SetTimer, HaveFreeTimer
|
|
*
|
|
* \note The prototype had changed since MiniGUI v3.2; the old one:
|
|
* BOOL GUIAPI IsTimerInstalled (HWND hWnd, int id)
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI IsTimerInstalled (HWND hWnd, LINT id);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI HaveFreeTimer (void)
|
|
* \brief Determine whether there is any free timer slot in the current
|
|
* thread.
|
|
*
|
|
* This function determines whether there is any free timer slot in the
|
|
* current thread.
|
|
*
|
|
* \return TRUE for yes, otherwise FALSE.
|
|
*
|
|
* \sa IsTimerInstalled
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI HaveFreeTimer (void);
|
|
|
|
/** @} end of timer_fns */
|
|
|
|
/**
|
|
* \defgroup ime_fns IME Window functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \ struct defines a ime target info
|
|
* */
|
|
typedef struct _IME_TARGET_INFO
|
|
{
|
|
/** The type of the edit box:
|
|
* - IME_WINDOW_TYPE_READONLY\n
|
|
* The edit box is readonly.
|
|
*
|
|
* - IME_WINDOW_TYPE_PASSWORD\n
|
|
* The edit box is readonly.
|
|
*
|
|
* - IME_WINDOW_TYPE_NOT_EDITABLE\n
|
|
* The edit box is not editable.
|
|
*
|
|
*/
|
|
int iEditBoxType;
|
|
|
|
/* The position of the caret */
|
|
POINT ptCaret;
|
|
|
|
/* The rect of the edit box */
|
|
RECT rcEditBox;
|
|
} IME_TARGET_INFO;
|
|
|
|
/**
|
|
* \fn int GUIAPI RegisterIMEWindow (HWND hWnd)
|
|
* \brief Registers an IME window.
|
|
*
|
|
* This function registers the specified window \a hWnd as the IME window of
|
|
* the MiniGUI. After that, the keyboard input will be sent to IME window
|
|
* first. Note that only one IME window can be registered.
|
|
*
|
|
* \param hWnd The handle to your IME window.
|
|
*
|
|
* \return ERR_OK on success, otherwise less than zero.
|
|
*
|
|
* \retval ERR_OK Success.
|
|
* \retval ERR_IME_TOOMUCHIMEWND Already have an IME window registered.
|
|
* \retval ERR_INV_HWND Invalid main window handle.
|
|
*
|
|
* \sa UnregisterIMEWindow
|
|
*/
|
|
MG_EXPORT int GUIAPI RegisterIMEWindow (HWND hWnd);
|
|
|
|
/**
|
|
* \fn int GUIAPI UnregisterIMEWindow (HWND hWnd)
|
|
* \brief Unregisters an IME window.
|
|
*
|
|
* This function undoes the effect of \a RegisterIMEWindow.
|
|
*
|
|
* \param hWnd The handle to the current IME window.
|
|
* \return ERR_OK on success, otherwise less than zero.
|
|
*
|
|
* \retval ERR_OK Success.
|
|
* \retval ERR_IME_NOSUCHIMEWND The window is not the current IME window.
|
|
*
|
|
* \sa RegisterIMEWindow
|
|
*/
|
|
MG_EXPORT int GUIAPI UnregisterIMEWindow (HWND hWnd);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetIMEStatus (int StatusCode)
|
|
* \brief Retrieve status of the current IME window.
|
|
*
|
|
* This function retrieves status of the current IME window.
|
|
*
|
|
* \param StatusCode The item to be retrived, can be one of the following
|
|
* values:
|
|
* - IME_STATUS_REGISTERED\n
|
|
* Is there any registered IME window?
|
|
* - IME_STATUS_ENABLED\n
|
|
* Is the IME window enabled?
|
|
* - IME_STATUS_AUTOTRACK\n
|
|
* Does the IME window autotrack the input focus?
|
|
* - IME_STATUS_LANGUAGE\n
|
|
* Retrieve the selected input method. The return value can be
|
|
* one of the following values:
|
|
* - IME_LANGUAGE_UNKNOWN\n
|
|
* Unknown
|
|
* - IME_LANGUAGE_LATIN\n
|
|
* Latin
|
|
* - IME_LANGUAGE_ZHCN\n
|
|
* Chinese simplified
|
|
* - IME_LANGUAGE_ZHTW\n
|
|
* Chinese traditional
|
|
* - IME_STATUS_ENCODING\n
|
|
* Retrieve the output encoding. The return value can be one of
|
|
* the following values:
|
|
* - IME_ENCODING_LOCAL\n
|
|
* The local encoding
|
|
* - IME_ENCODING_UTF8\n
|
|
* UTF-8
|
|
* - IME_STATUS_VERSION\n
|
|
* Retrieve the version of the IME
|
|
* - IME_STATUS_USER_MIN, IME_STATUS_USER_MAX
|
|
* Reserved for user. The return value and its meaning is determined
|
|
* by the specific IME implementation.
|
|
*
|
|
* \return The status of the item specified by \a StatusCode,
|
|
* ERR_IME_NOIMEWND if error occurred.
|
|
*
|
|
* \sa SetIMEStatus
|
|
*/
|
|
MG_EXPORT int GUIAPI GetIMEStatus (int StatusCode);
|
|
|
|
/**
|
|
* \fn int GUIAPI SetIMEStatus (int StatusCode, int Value)
|
|
* \brief Set the status of the current IME window.
|
|
*
|
|
* This function sets the status of the current IME window.
|
|
*
|
|
* \param StatusCode The item to be set. Please see GetIMEStatus for more
|
|
* information.
|
|
* \param Value The status value of the item.
|
|
*
|
|
* \retval ERR_OK Success.
|
|
* \retval ERR_IME_NOIMEWND There is no any IME window registered.
|
|
*
|
|
* \sa GetIMEStatus
|
|
*/
|
|
MG_EXPORT int GUIAPI SetIMEStatus (int StatusCode, int Value);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetIMETargetInfo (IME_TARGET_INFO* info)
|
|
* \brief Retrieve the target info of the current IME window.
|
|
*
|
|
* This function retrieves the target info of the current IME window.
|
|
*
|
|
* \param info The item to be retrived. The target info is
|
|
* return by the current IME Window.
|
|
*
|
|
* \return ERR_OK on success, otherwise less than zero.
|
|
*
|
|
* \sa GetIMETargetInfo
|
|
*/
|
|
MG_EXPORT int GUIAPI GetIMETargetInfo (IME_TARGET_INFO *info);
|
|
|
|
/**
|
|
* \fn int GUIAPI SetIMETargetInfo (const IME_TARGET_INFO *info)
|
|
* \brief Set the target info of the current IME window.
|
|
*
|
|
* This function sets the target info of the current IME window.
|
|
*
|
|
* \param info The set target info.
|
|
*
|
|
* \return ERR_OK on success, otherwise less than zero.
|
|
*
|
|
* \retval ERR_OK Success.
|
|
* \retval ERR_IME_NOIMEWND There is no any IME window registered.
|
|
*
|
|
* \sa SetIMETargetInfo
|
|
*/
|
|
MG_EXPORT int GUIAPI SetIMETargetInfo (const IME_TARGET_INFO *info);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetIMEPos (POINT* pt)
|
|
* \brief Retrieve the position of the current IME window.
|
|
*
|
|
* NOTE that this function is deprecated.
|
|
*
|
|
* This function retrieves the position of the current IME window.
|
|
*
|
|
* \param pt The item to be retrived. The positon is
|
|
* return by the current IME Window.
|
|
*
|
|
* \return The current IME window positon.
|
|
* ERR_IME_NOIMEWND if error occurred.
|
|
*
|
|
* \sa GetIMEPos
|
|
*/
|
|
MG_EXPORT int GUIAPI GetIMEPos (POINT* pt);
|
|
|
|
/**
|
|
* \fn int GUIAPI SetIMEPos (POINT* pt)
|
|
* \brief Set the position of the current IME window.
|
|
*
|
|
* NOTE that this function is deprecated.
|
|
*
|
|
* This function sets the position of the current IME window.
|
|
*
|
|
* \param pt The set position value.
|
|
*
|
|
* \return ERR_OK on success, otherwise less than zero.
|
|
*
|
|
* \retval ERR_OK Success.
|
|
* \retval ERR_IME_NOIMEWND There is no any IME window registered.
|
|
*
|
|
* \sa SetIMEPos
|
|
*/
|
|
MG_EXPORT int GUIAPI SetIMEPos (const POINT* pt);
|
|
|
|
/** @} end of ime_fns */
|
|
|
|
/**
|
|
* \defgroup accel_fns Accelerator operations
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \fn HACCEL GUIAPI CopyAcceleratorTable (HACCEL hacc)
|
|
* \brief Copies the specified accelerator table.
|
|
*
|
|
* This function copies the specified accelerator table.
|
|
* The function is used to obtain the accelerator table data that
|
|
* corresponds to an accelerator table handle.
|
|
*
|
|
* \param hacc The handle to the accelerator table.
|
|
* \return The handle to the copied new accelerator table.
|
|
*/
|
|
MG_EXPORT HACCEL GUIAPI CopyAcceleratorTable (HACCEL hacc);
|
|
|
|
/**
|
|
* \fn int GUIAPI DeleteAccelerators (HACCEL hacc, int key, DWORD keymask)
|
|
* \brief Deletes an accelerator from the accelerator table.
|
|
*
|
|
* This function deletes an accelerator from the accelerator table.
|
|
*
|
|
* \param hacc The handle to the accelerator table.
|
|
* \param key The key value of the accelerator.
|
|
* \param keymask The shift key state.
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \sa AddAccelerators, DestroyAcceleratorTable
|
|
*/
|
|
MG_EXPORT int GUIAPI DeleteAccelerators (HACCEL hacc, int key, DWORD keymask);
|
|
|
|
#define ACCEL_SHIFT KS_SHIFT
|
|
#define ACCEL_ALT KS_ALT
|
|
#define ACCEL_CTRL KS_CTRL
|
|
|
|
/**
|
|
* \fn int GUIAPI AddAccelerators (HACCEL hacc, int key, \
|
|
* DWORD keymask, WPARAM wParam, LPARAM lParam)
|
|
* \brief Adds an accelerator to the accelerator table.
|
|
*
|
|
* This function adds an accelerator to the accelerator table.
|
|
* It's called after you call \a CreateAcceleratorTable function.
|
|
*
|
|
* \param hacc The handle to the accelerator table.
|
|
* \param key The key value of the accelerator. Note that you can define the
|
|
* key value by either scancode or ASCII code. If you define the key
|
|
* with scancode, the key value should be equal to (scancode + 256).
|
|
* \param keymask The shift key state, can be OR'ed value of the following
|
|
* values:
|
|
* - KS_SHIFT\n
|
|
* Shift key should be pressed.
|
|
* - KS_ALT\n
|
|
* Alt key should be pressed.
|
|
* - KS_CTRL\n
|
|
* Ctrl key should be pressed.
|
|
* \param wParam The first parameter of the MSG_COMMAND when receiving such
|
|
* a accelerator key.
|
|
* \param lParam The second parameter of the MSG_COMMAND when receiving such
|
|
* a accelerator key.
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \sa CreateAcceleratorTable, DeleteAccelerators
|
|
*/
|
|
MG_EXPORT int GUIAPI AddAccelerators (HACCEL hacc, int key,
|
|
DWORD keymask, WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn int GUIAPI DestroyAcceleratorTable (HACCEL hacc)
|
|
* \brief Destroys an accelerator table.
|
|
*
|
|
* This function destroys the specified accelerator table \a hacc.
|
|
* Before closing a window, you must call this function to destroy
|
|
* each accelerator table that is created by using \a CreateAcceleratorTable
|
|
* function.
|
|
*
|
|
* \param hacc The handle to the accelerator table.
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \sa CreateAcceleratorTable
|
|
*/
|
|
MG_EXPORT int GUIAPI DestroyAcceleratorTable (HACCEL hacc);
|
|
|
|
/**
|
|
* \fn HACCEL GUIAPI CreateAcceleratorTable (HWND hWnd)
|
|
* \brief Creates an empty accelerator table.
|
|
*
|
|
* This function creates an empty accelerator table.
|
|
*
|
|
* \param hWnd The handle to the main window.
|
|
* \return The handle to the new accelerator table, zero when error.
|
|
*
|
|
* \sa AddAccelerators, DestroyAcceleratorTable
|
|
*/
|
|
MG_EXPORT HACCEL GUIAPI CreateAcceleratorTable (HWND hWnd);
|
|
|
|
/**
|
|
* \fn int GUIAPI TranslateAccelerator (HACCEL hAccel, PMSG pMsg)
|
|
* \brief Translates an accelerator key message to MSG_COMMAND messge
|
|
* and sends it to the window procedure.
|
|
*
|
|
* \param hAccel The handle to the accelerator table.
|
|
* \param pMsg The pointer to the MSG structure to be translated.
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \sa TranslateMessage
|
|
*/
|
|
MG_EXPORT int GUIAPI TranslateAccelerator (HACCEL hAccel, PMSG pMsg);
|
|
|
|
/** @} end of accel_fns */
|
|
|
|
/**
|
|
* \defgroup caret_fns Caret operations
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI CreateCaret (HWND hWnd, PBITMAP pBitmap, \
|
|
* int nWidth, int nHeight)
|
|
* \brief Creates a new shape for the system caret and assigns ownership of
|
|
* the caret to the specified window.
|
|
*
|
|
* This function creates a new shape for the system caret and assigns
|
|
* ownership of the caret to the specified window \a hWnd. The caret shape
|
|
* can be a line, a block, or a bitmap.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
* \param pBitmap The bitmap shape of the caret. It can be NULL.
|
|
* \param nWidth The width of the caret.
|
|
* \param nHeight The height of the caret.
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa ActiveCaret, ChangeCaretSize
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI CreateCaret (HWND hWnd, PBITMAP pBitmap,
|
|
int nWidth, int nHeight);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ChangeCaretSize (HWND hWnd, int newWidth, int newHeight)
|
|
* \brief Changes the size of the caret.
|
|
*
|
|
* This function change the size of the caret owned by the specified window
|
|
* \a hWnd. Note that the new size of the caret should be smaller than
|
|
* the original size which is specified when you call \a CreateCaret.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
* \param newWidth The new width of the caret.
|
|
* \param newHeight The new height of the caret.
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa CreateCaret
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ChangeCaretSize (HWND hWnd, int newWidth, int newHeight);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ActiveCaret (HWND hWnd)
|
|
* \brief Activates the caret owned by a window.
|
|
*
|
|
* This function activates the caret owned by the specified window \a hWnd.
|
|
* After activating the caret, the caret will begin flashing automatically.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa HideCaret, ShowCaret
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ActiveCaret (HWND hWnd);
|
|
|
|
/**
|
|
* \fn UINT GUIAPI GetCaretBlinkTime (HWND hWnd)
|
|
* \brief Returns the elapsed time, in milliseconds, required to invert the
|
|
* caret's pixels.
|
|
*
|
|
* This function returns the elapsed time, in milliseconds, required to
|
|
* invert the caret's pixels. The default blink time of a caret is 500
|
|
* milliseconds.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
*
|
|
* \return The elapsed time in milliseconds. Returns zero on error.
|
|
*
|
|
* \sa SetCaretBlinkTime
|
|
*/
|
|
MG_EXPORT UINT GUIAPI GetCaretBlinkTime (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetCaretBlinkTime (HWND hWnd, UINT uTime)
|
|
* \brief Set the caret blink time to the specified number of milliseconds.
|
|
*
|
|
* This function sets the caret blink time to the specified number of
|
|
* milliseconds. The blink time is the elapsed time, in milliseconds,
|
|
* required to invert the caret's pixels. The default blink time of a caret
|
|
* is 500 milliseconds.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
* \param uTime New blink time in milliseconds.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa GetCaretBlinkTime
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetCaretBlinkTime (HWND hWnd, UINT uTime);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI DestroyCaret (HWND hWnd)
|
|
* \brief Destroys a caret.
|
|
*
|
|
* This function destroys the caret's current shape,
|
|
* frees the caret from the window, and removes the caret from the screen.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa CreateCaret
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI DestroyCaret (HWND hWnd);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI HideCaretEx (HWND hWnd, BOOl ime)
|
|
* \brief Hides a caret.
|
|
*
|
|
* This function removes the caret from the screen.
|
|
* Hiding a caret does not destroy its current shape or invalidate the
|
|
* insertion point.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
*
|
|
* \param ime TRUE if you want to close the IME window (if there is any)
|
|
* at the same time.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa ShowCaretEx
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI HideCaretEx (HWND hWnd, BOOL ime);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI HideCaret (HWND hWnd)
|
|
* \brief Hides a caret.
|
|
*
|
|
* This function removes the caret from the screen and close the IME window.
|
|
* Hiding a caret does not destroy its current shape or invalidate the
|
|
* insertion point.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa ShowCaret
|
|
*/
|
|
static inline BOOL GUIAPI HideCaret (HWND hWnd)
|
|
{
|
|
return HideCaretEx (hWnd, TRUE);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ShowCaretEx (HWND hWnd, BOOL ime)
|
|
* \brief Shows a caret.
|
|
*
|
|
* This function makes the caret visible on the screen at the caret's
|
|
* current position. When the caret becomes visible, it begins flashing
|
|
* automatically.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
*
|
|
* \param ime TRUE if you want to let the hidden IME window (if there is any)
|
|
* show up at the same time.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa HideCaretEx
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI ShowCaretEx (HWND hWnd, BOOL ime);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI ShowCaret (HWND hWnd)
|
|
* \brief Shows a caret.
|
|
*
|
|
* This function makes the caret visible on the screen at the caret's
|
|
* current position. When the caret becomes visible, it begins flashing
|
|
* automatically.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa HideCaret
|
|
*/
|
|
static inline BOOL GUIAPI ShowCaret (HWND hWnd)
|
|
{
|
|
return ShowCaretEx (hWnd, TRUE);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetCaretPos (HWND hWnd, int x, int y)
|
|
* \brief Moves the caret to a new position.
|
|
*
|
|
* This function moves the caret to the specified coordinates \a (x,y).
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
* \param x x,y: The position of the caret in client coordiantes of
|
|
* the owner window.
|
|
* \param y x,y: The position of the caret in client coordiantes of
|
|
* the owner window.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa GetCaretPos
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetCaretPos (HWND hWnd, int x, int y);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI GetCaretPos (HWND hWnd, PPOINT pPt)
|
|
* \brief Get the caret position.
|
|
*
|
|
* This function copies the caret's position, in client coordinates,
|
|
* to the specified POINT structure \a pPt.
|
|
*
|
|
* \param hWnd The owner of the caret.
|
|
* \param pPt The pointer to the buffer saves the caret's position.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa SetCaretPos
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI GetCaretPos (HWND hWnd, PPOINT pPt);
|
|
|
|
/** @} end of caret_fns */
|
|
|
|
/**
|
|
* \defgroup menu_fns Menu operations
|
|
* @{
|
|
*/
|
|
|
|
/* Menu flags */
|
|
#define MF_INSERT 0x00000000L
|
|
#define MF_CHANGE 0x00000080L
|
|
#define MF_APPEND 0x00000100L
|
|
#define MF_DELETE 0x00000200L
|
|
#define MF_REMOVE 0x00001000L
|
|
|
|
#define MF_BYCOMMAND 0x00000000L
|
|
#define MF_BYPOSITION 0x00000400L
|
|
|
|
#define MF_SEPARATOR 0x00000800L
|
|
|
|
#define MF_ENABLED 0x00000000L
|
|
#define MF_GRAYED 0x00000001L
|
|
#define MF_DISABLED 0x00000002L
|
|
|
|
#define MF_UNCHECKED 0x00000000L
|
|
#define MF_CHECKED 0x00000008L
|
|
#define MF_USECHECKBITMAPS 0x00000200L
|
|
|
|
#define MF_STRING 0x00000000L
|
|
#define MF_BITMAP 0x00000004L
|
|
#define MF_OWNERDRAW 0x00000100L
|
|
|
|
#define MF_POPUP 0x00000010L
|
|
#define MF_MENUBARBREAK 0x00000020L
|
|
#define MF_MENUBREAK 0x00000040L
|
|
|
|
#define MF_UNHILITE 0x00000000L
|
|
#define MF_HILITE 0x00000080L
|
|
|
|
#define MF_DEFAULT 0x00001000L
|
|
#define MF_SYSMENU 0x00002000L
|
|
#define MF_HELP 0x00004000L
|
|
#define MF_RIGHTJUSTIFY 0x00004000L
|
|
|
|
#define MF_MOUSESELECT 0x00008000L
|
|
#define MF_END 0x00000080L
|
|
|
|
#define MFT_STRING MF_STRING /* 0x00000000L */
|
|
#define MFT_BITMAP MF_BITMAP /* 0x00000004L */
|
|
#define MFT_BMPSTRING 0x00010000L
|
|
#define MFT_MENUBARBREAK MF_MENUBARBREAK /* 0x00000020L */
|
|
#define MFT_MENUBREAK MF_MENUBREAK /* 0x00000040L */
|
|
#define MFT_OWNERDRAW MF_OWNERDRAW /* 0x00000100L */
|
|
#define MFT_RADIOCHECK 0x00000200L
|
|
#define MFT_MARKCHECK 0x00000400L
|
|
#define MFT_SEPARATOR MF_SEPARATOR /* 0x00000800L */
|
|
|
|
#define MFT_RIGHTORDER 0x00002000L
|
|
#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY
|
|
|
|
#define MFS_GRAYED 0x00000003L
|
|
#define MFS_DISABLED MFS_GRAYED
|
|
#define MFS_CHECKED MF_CHECKED
|
|
#define MFS_HILITE MF_HILITE
|
|
#define MFS_ENABLED MF_ENABLED
|
|
#define MFS_UNCHECKED MF_UNCHECKED
|
|
#define MFS_UNHILITE MF_UNHILITE
|
|
#define MFS_DEFAULT MF_DEFAULT
|
|
|
|
/* System Menu Command Values */
|
|
#define SC_SIZE 0xF000
|
|
#define SC_MOVE 0xF010
|
|
#define SC_MINIMIZE 0xF020
|
|
#define SC_MAXIMIZE 0xF030
|
|
#define SC_NEXTWINDOW 0xF040
|
|
#define SC_PREVWINDOW 0xF050
|
|
#define SC_CLOSE 0xF060
|
|
#define SC_VSCROLL 0xF070
|
|
#define SC_HSCROLL 0xF080
|
|
#define SC_MOUSEMENU 0xF090
|
|
#define SC_KEYMENU 0xF100
|
|
#define SC_ARRANGE 0xF110
|
|
#define SC_RESTORE 0xF120
|
|
#define SC_TASKLIST 0xF130
|
|
#define SC_SCREENSAVE 0xF140
|
|
#define SC_HOTKEY 0xF150
|
|
|
|
#define SC_DEFAULT 0xF160
|
|
#define SC_MONITORPOWER 0xF170
|
|
#define SC_CONTEXTHELP 0xF180
|
|
#define SC_SEPARATOR 0xF00F
|
|
|
|
/* MENUITEMINFO flags */
|
|
#define MIIM_STATE 0x00000001
|
|
#define MIIM_ID 0x00000002
|
|
#define MIIM_SUBMENU 0x00000004
|
|
#define MIIM_CHECKMARKS 0x00000008
|
|
#define MIIM_TYPE 0x00000010
|
|
#define MIIM_DATA 0x00000020
|
|
#define MIIM_STRING 0x00000040
|
|
#define MIIM_BITMAP 0x00000080
|
|
#define MIIM_FTYPE 0x00000100
|
|
|
|
|
|
/* Flags for TrackPopupMenu */
|
|
#define TPM_LEFTBUTTON 0x0000L
|
|
#define TPM_RIGHTBUTTON 0x0002L
|
|
#define TPM_LEFTALIGN 0x0000L
|
|
#define TPM_CENTERALIGN 0x0004L
|
|
#define TPM_RIGHTALIGN 0x0008L
|
|
#define TPM_TOPALIGN 0x0000L
|
|
#define TPM_VCENTERALIGN 0x0010L
|
|
#define TPM_BOTTOMALIGN 0x0020L
|
|
|
|
#define TPM_HORIZONTAL 0x0000L /* Horz alignment matters more */
|
|
#define TPM_VERTICAL 0x0040L /* Vert alignment matters more */
|
|
#define TPM_NONOTIFY 0x0080L /* Don't send any notification msgs */
|
|
#define TPM_RETURNCMD 0x0100L
|
|
|
|
#define TPM_DESTROY 0x1000L /* Destroy menu after tracking */
|
|
#define TPM_SYSCMD 0x2000L /* Send system command */
|
|
#define TPM_DEFAULT 0x0000L /* Default tracking flag */
|
|
|
|
/* return codes for MSG_MENUCHAR */
|
|
#define MNC_IGNORE 0
|
|
#define MNC_CLOSE 1
|
|
#define MNC_EXECUTE 2
|
|
#define MNC_SELECT 3
|
|
|
|
/**
|
|
* Structure defines a menu item
|
|
*/
|
|
typedef struct _MENUITEMINFO {
|
|
|
|
/**
|
|
* Used by \a GetMenuItemInfo and \a SetMenuItemInfo functions,
|
|
* can be OR'ed with the following values:
|
|
* - MIIM_STATE\n
|
|
* Get/set the state of the menu item.
|
|
* - MIIM_ID\n
|
|
* Get/set the identifier of the menu item.
|
|
* - MIIM_SUBMENU\n
|
|
* Get/set the sub-menu of the menu item.
|
|
* - MIIM_CHECKMARKS\n
|
|
* Get/set the check/uncheck bitmap.
|
|
* - MIIM_TYPE\n
|
|
* Get/set the type and the type data of the menu item.
|
|
* - MIIM_DATA\n
|
|
* Get/set the item data of the menu item.
|
|
*/
|
|
UINT mask;
|
|
|
|
/**
|
|
* Type of menu item, can be one of the following values:
|
|
* - MFT_STRING\n
|
|
* A normal string menu item.
|
|
*
|
|
* - MFT_BITMAP\n
|
|
* A bitmap menu item. When the menu item is this type,
|
|
* the member \a typedata will be the pointer to the normal BITMAP object,
|
|
* the member \a uncheckedbmp will be the pointer to the hilighted BITMAP object,
|
|
* the member \a checkedbmp will be the pointer to the checked BITMAP object.
|
|
*
|
|
* - MFT_BMPSTRING\n
|
|
* A bitmap menu item followed by a string. When the menu item is this type,
|
|
* the member \a typedata will be the pointer to the text string,
|
|
* the member \a uncheckedbmp will be the pointer to the normal BITMAP object,
|
|
* and the member \a checkedbmp will be the pointer to the checked BITMAP object.
|
|
*
|
|
* - MFT_SEPARATOR\n
|
|
* A separator in menu.
|
|
*
|
|
* - MFT_RADIOCHECK\n
|
|
* A normal string with a radio check mark.
|
|
*
|
|
* - MFT_MARKCHECK\n
|
|
* A normal string with a check box mark.
|
|
*/
|
|
UINT type;
|
|
|
|
/**
|
|
* State of the menu item, can be one of the following values:
|
|
* - MFS_GRAYED\n
|
|
* The menu item is disabled.
|
|
* - MFS_DISABLED\n
|
|
* The menu item is disabled.
|
|
* - MFS_CHECKED\n
|
|
* The menu item is checked.
|
|
* - MFS_ENABLED\n
|
|
* The menu item is enabled.
|
|
* - MFS_UNCHECKED\n
|
|
* The menu item is unchecked.
|
|
*/
|
|
UINT state;
|
|
|
|
/** The identifier of the menu item.
|
|
* \note The type changed from int to LINT since v3.2.
|
|
*/
|
|
LINT id;
|
|
|
|
/** The handle to the sub-menu if this menu contains a sub menu */
|
|
HMENU hsubmenu;
|
|
|
|
/** The pointer to a BITMAP object used for unchecked/highlited bitmap menu item */
|
|
PBITMAP uncheckedbmp;
|
|
|
|
/** The pointer to a BITMAP object used for checked bitmap menu item */
|
|
PBITMAP checkedbmp;
|
|
|
|
/** The private data attached to the menu item */
|
|
DWORD itemdata;
|
|
|
|
/** The data of this menu item, used to pass the string or the pointer to the BITMAP object of the menu item */
|
|
DWORD typedata;
|
|
|
|
/**
|
|
* Used by \a GetMenuItemInfo function to indicate the maximal length
|
|
* of the string
|
|
*/
|
|
UINT cch;
|
|
} MENUITEMINFO;
|
|
typedef MENUITEMINFO* PMENUITEMINFO;
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI CreateMenu (void)
|
|
* \brief Creates an empty menu.
|
|
*
|
|
* This function creates a menu. The menu is initially empty, but it can be
|
|
* filled with menu items by using the \a InsertMenuItem functions.
|
|
*
|
|
* \return The handle to the menu, zero when error.
|
|
*
|
|
* \sa InsertMenuItem
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI CreateMenu (void);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI CreatePopupMenu ( PMENUITEMINFO pmii)
|
|
* \brief Creates a drop-down menu or submenu.
|
|
*
|
|
* This function creates a drop-down menu or submenu. The menu is initially
|
|
* empty. You can insert or append menu items by using the \a InsertMenuItem
|
|
* function.
|
|
*
|
|
* \param pmii Menu item information used to create the popup menu.
|
|
*
|
|
* \return The handle to the popup menu.
|
|
*
|
|
* \sa InsertMenuItem, MENUITEMINFO
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI CreatePopupMenu ( PMENUITEMINFO pmii);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI CreateSystemMenu (HWND hwnd, DWORD dwStyle)
|
|
* \brief Creates a system menu.
|
|
*
|
|
* This function creates a system menu for the main window specified by
|
|
* \a hwnd.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
* \param dwStyle The style of the main window.
|
|
*
|
|
* \return The handle to the system menu.
|
|
*
|
|
* \sa CreateMenu, CreatePopupMenu
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI CreateSystemMenu (HWND hwnd, DWORD dwStyle);
|
|
|
|
/**
|
|
* \fn int GUIAPI InsertMenuItem (HMENU hmnu, LINT item, \
|
|
* UINT flag, PMENUITEMINFO pmii)
|
|
* \brief Inserts a new menu item at the specified position in a menu.
|
|
*
|
|
* This function inserts a new menu item specified by \a pmmi at the
|
|
* specified position (determined by \a item and \a flag) in the menu \a hmnu.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
* \param item The insertion position.
|
|
* \param flag Indicates the position base, can be one of the following values:
|
|
* - MF_BYCOMMAND\n
|
|
* The position value \a item is based on the command identifier.
|
|
* The new menu item will insert bellow the item whose id is \a item.
|
|
* - MF_BYPOSITION\n
|
|
* The position value \a item is based on the position in the menu.
|
|
* \param pmii Menu item information used to create the popup menu.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \retval ERR_INVALID_HANDLE \a hmnu is not a handle to menu.
|
|
* \retval ERR_RES_ALLOCATION Can not allocate new menu item.
|
|
* \retval ERR_INVALID_HMENU \a hmnu is an invalid menu.
|
|
*
|
|
* \note The type of \a item changed from int to LINT since v3.2.
|
|
*
|
|
* \sa RemoveMenu, MENUITEMINFO
|
|
*/
|
|
MG_EXPORT int GUIAPI InsertMenuItem (HMENU hmnu, LINT item,
|
|
UINT flag, PMENUITEMINFO pmii);
|
|
|
|
/**
|
|
* \fn int GUIAPI RemoveMenu (HMENU hmnu, LINT item, UINT flag)
|
|
* \brief Deletes a menu item or detaches a submenu from the specified menu.
|
|
*
|
|
* This function deletes a menu item or detaches a submenu from the specified
|
|
* menu \a hmnu. If the item is a normal menu item, the function will delete
|
|
* the item. If the item is a submenu, the function will detache the submenu
|
|
* for the menu, but not delete the submenu.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
* \param item The position of the menu item or submenu.
|
|
* \param flag Indicates the position base, can be one of the following values:
|
|
* - MF_BYCOMMAND\n
|
|
* The position value \a item is based on the command identifier.
|
|
* - MF_BYPOSITION\n
|
|
* The position value \a item is based on the position in the menu.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \retval ERR_INVALID_HANDLE \a hmnu is not a handle to menu.
|
|
* \retval ERR_INVALID_HMENU \a hmnu is an invalid menu.
|
|
*
|
|
* \note The type of \a item changed from int to LINT since v3.2.
|
|
*
|
|
* \sa InsertMenuItem, DeleteMenu
|
|
*/
|
|
MG_EXPORT int GUIAPI RemoveMenu (HMENU hmnu, LINT item, UINT flag);
|
|
|
|
/**
|
|
* \fn int GUIAPI DeleteMenu (HMENU hmnu, LINT item, UINT flag)
|
|
* \brief Deletes an item from the specified menu.
|
|
*
|
|
* This function deletes an item from the specified menu \a hmnu.
|
|
* Either the item is a normal menu item or a submenu, this function
|
|
* will delete the item.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
* \param item The position of the menu item or submenu.
|
|
* \param flag Indicates the position base, can be one of the following values:
|
|
* - MF_BYCOMMAND\n
|
|
* The position value \a item is based on the command identifier.
|
|
* - MF_BYPOSITION\n
|
|
* The position value \a item is based on the position in the menu.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \retval ERR_INVALID_HANDLE \a hmnu is not a handle to menu.
|
|
* \retval ERR_INVALID_HMENU \a hmnu is an invalid menu.
|
|
*
|
|
* \note The type of \a item changed from int to LINT since v3.2.
|
|
*
|
|
* \sa InsertMenuItem, RemoveMenu
|
|
*/
|
|
MG_EXPORT int GUIAPI DeleteMenu (HMENU hmnu, LINT item, UINT flag);
|
|
|
|
/**
|
|
* \fn int GUIAPI DestroyMenu (HMENU hmnu)
|
|
* \brief Destroys the specified menu and frees any memory that the menu
|
|
* occupies.
|
|
*
|
|
* This function destroys the specified menu \a hmnu and frees any memory
|
|
* that the menu occupies.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \retval ERR_INVALID_HANDLE \a hmnu is not a handle to menu.
|
|
*
|
|
* \sa RemoveMenu, DeleteMenu
|
|
*/
|
|
MG_EXPORT int GUIAPI DestroyMenu (HMENU hmnu);
|
|
|
|
/**
|
|
* \fn int GUIAPI IsMenu (HMENU hmnu)
|
|
* \brief Determine whether a handle is a menu handle.
|
|
*
|
|
* This function determines whether the handle specified by \a hmnu is a
|
|
* menu handle.
|
|
*
|
|
* \param hmnu The handle to a menu.
|
|
*
|
|
* \return The function returns 0 for none menu handle,
|
|
* otherwise the type of the menu.
|
|
*
|
|
* \sa CreateMenu
|
|
*/
|
|
MG_EXPORT int GUIAPI IsMenu (HMENU hmnu);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI SetMenu (HWND hwnd, HMENU hmnu)
|
|
* \brief Assigns a new menu to the specified main window.
|
|
*
|
|
* This functionn assigns the specified menu \a hmnu to
|
|
* the main window specified by \a hwnd.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
* \param hmnu The handle to the new menu.
|
|
*
|
|
* \return The handle to the old menu of the window.
|
|
*
|
|
* \sa GetMenu
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI SetMenu (HWND hwnd, HMENU hmnu);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI GetMenu (HWND hwnd)
|
|
* \brief Retrieve the handle to the menu assigned to the given main window.
|
|
*
|
|
* This function retrieves the handle to the menu assigned to
|
|
* the given main window \a hwnd.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
* \return The handle to the menu of the window.
|
|
*
|
|
* \sa SetMenu
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI GetMenu (HWND hwnd);
|
|
|
|
/**
|
|
* \fn void GUIAPI DrawMenuBar (HWND hwnd)
|
|
* \brief Redraws the menu bar of the specified main window.
|
|
*
|
|
* This function redraws the menu bar of the specified main window.
|
|
* If the menu bar changes after the system has created the window,
|
|
* this function must be called to draw the changed menu bar.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
*
|
|
* \sa TrackMenuBar
|
|
*/
|
|
MG_EXPORT void GUIAPI DrawMenuBar (HWND hwnd);
|
|
|
|
/**
|
|
* \fn int GUIAPI TrackMenuBar (HWND hwnd, int pos)
|
|
* \brief Displays the specified submenu.
|
|
*
|
|
* This function displays the specified submenu in the menu bar of
|
|
* the specified main window \a hwnd.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
* \param pos The position of the submenu. The position value of the
|
|
* first submenu is 0.
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \sa TrackPopupMenu, CreateMenu
|
|
*/
|
|
MG_EXPORT int GUIAPI TrackMenuBar (HWND hwnd, int pos);
|
|
|
|
/**
|
|
* \fn int GUIAPI TrackPopupMenu (HMENU hmnu, UINT uFlags, \
|
|
* int x, int y, HWND hwnd)
|
|
* \brief Displays and tracks a popup menu.
|
|
*
|
|
* This function displays a shortcut menu at the specified location
|
|
* and tracks the selection of items on the menu. The shortcut menu
|
|
* can appear anywhere on the screen.
|
|
*
|
|
* \param hmnu The handle to the popup menu.
|
|
* \param uFlags The tracking flags, can be OR'ed value of the following values:
|
|
* - TPM_LEFTALIGN\n
|
|
* Horz alignement is left.
|
|
* - TPM_CENTERALIGN\n
|
|
* Horz alignement is center.
|
|
* - TPM_RIGHTALIGN\n
|
|
* Horz alignement is right.
|
|
* - TPM_TOPALIGN\n
|
|
* Vert alignement is top.
|
|
* - TPM_VCENTERALIGN\n
|
|
* Vert alignement is center.
|
|
* - TPM_BOTTOMALIGN\n
|
|
* Vert alignement is bottom.
|
|
* - TPM_DESTROY\n
|
|
* Destroys the popup menu after finishing tracking.
|
|
* - TPM_SYSCMD\n
|
|
* Send an MSG_SYSCOMMAND message to the window when the use select a
|
|
* menu item.
|
|
* \param x The x coordinate of the position of the popup menu.
|
|
* \param y The y coordinate of the position of the popup menu.
|
|
* \param hwnd The handle to the window which will receive
|
|
* the MSG_COMMAND or MSG_SYSCOMMAND message.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \sa TrackMenuBar, CreatePopupMenu
|
|
*/
|
|
MG_EXPORT int GUIAPI TrackPopupMenu (HMENU hmnu, UINT uFlags,
|
|
int x, int y, HWND hwnd);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI GetMenuBarItemRect (HWND hwnd, int pos, RECT* prc)
|
|
* \brief Retrieve the rect of a menu bar item.
|
|
*
|
|
* This function retrieves the rect of the menu bar item specified
|
|
* by the parameter \a pos.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
* \param pos The position of the item. The position value of the
|
|
* first item is 0.
|
|
* \param prc The pointer to a RECT object, which will receive the rectangle.
|
|
*
|
|
* \return The function returns the handle to the menu bar if success,
|
|
* otherwise returns 0.
|
|
*
|
|
* \sa TrackMenuBar
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI GetMenuBarItemRect (HWND hwnd, int pos, RECT* prc);
|
|
|
|
#define LFRDR_MENU_STATE_HILITE 0x01
|
|
#define LFRDR_MENU_STATE_NORMAL 0x02
|
|
#define LFRDR_MENU_STATE_DISABLED 0x04
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI HiliteMenuBarItem (HWND hwnd, int pos, UINT flag)
|
|
* \brief Draws the specified menubar item with 3D effect.
|
|
*
|
|
* This function draws the specified menubar item with 3D effect.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
* \param pos The position of the item. The position value of the
|
|
* first item is 0.
|
|
* \param flag The drawing flag, can be one of the following values:
|
|
* - LFRDR_MENU_STATE_HILITE\n
|
|
* hilite item.
|
|
* - LFRDR_MENU_STATE_NORMAL\n
|
|
* normal item.
|
|
* - LFRDR_MENU_STATE_DISABLED\n
|
|
* disabled item.
|
|
*
|
|
* \return TRUE on success, otherwise FALSE.
|
|
*
|
|
* \sa TrackMenuBar
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI HiliteMenuBarItem (HWND hwnd, int pos, UINT flag);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetMenuItemCount (HMENU hmnu)
|
|
* \brief Determine the number of items in a menu.
|
|
*
|
|
* This function determines the number of items in the specified menu \a hmnu.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
*
|
|
* \return The number of the items in the menu.
|
|
*
|
|
* \sa GetMenuItemInfo
|
|
*/
|
|
MG_EXPORT int GUIAPI GetMenuItemCount (HMENU hmnu);
|
|
|
|
/**
|
|
* \fn LINT GUIAPI GetMenuItemID (HMENU hmnu, int pos)
|
|
* \brief Retrieve the menu item identifier of a menu item at specified
|
|
* position in a menu.
|
|
*
|
|
* This function retrieves the menu item identifier of a menu item at
|
|
* the specified position \a pos in the specified menu \a hmnu.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
* \param pos The position of the menu item. The position value of the
|
|
* first item is 0.
|
|
*
|
|
* \return The identifier of the items in the menu.
|
|
* \note The type of return value changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetMenuItemInfo
|
|
*/
|
|
MG_EXPORT LINT GUIAPI GetMenuItemID (HMENU hmnu, int pos);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetMenuItemInfo (HMENU hmnu, LINT item, \
|
|
* UINT flag, PMENUITEMINFO pmii)
|
|
* \brief Retrieve information about a menu item.
|
|
*
|
|
* This function retrieves information about a menu item, and returns the
|
|
* information via \a pmii.
|
|
*
|
|
* \param hmnu [in] Handle to the menu that contains the menu item.
|
|
* \param item The position of the menu item or submenu.
|
|
* \param flag Indicates the position base, can be one of the following values:
|
|
* - MF_BYCOMMAND\n
|
|
* The position value \a item is based on the command identifier.
|
|
* - MF_BYPOSITION\n
|
|
* The position value \a item is based on the position in the menu.
|
|
* \param pmii [in, out] Pointer to a \a MENUITEMINFO structure that specifies
|
|
* the information to retrieve and receive information about the menu item.
|
|
*
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \note The type of \a item changed from int to LINT since v3.2.
|
|
*
|
|
* \sa SetMenuItemInfo, MENUITEMINFO
|
|
*/
|
|
MG_EXPORT int GUIAPI GetMenuItemInfo (HMENU hmnu, LINT item,
|
|
UINT flag, PMENUITEMINFO pmii);
|
|
|
|
/*Reserved*/
|
|
int GUIAPI GetMenuItemRect (HWND hwnd, HMENU hmnu,
|
|
LINT item, PRECT prc);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI GetPopupSubMenu (HMENU hpppmnu)
|
|
* \brief Retrieve the submenu of the specified popup menu.
|
|
*
|
|
* This function retrieves the submenu of the specified popup menu.
|
|
*
|
|
* \param hpppmnu The handle to the popup menu.
|
|
*
|
|
* \return The handle to the submenu of the popup menu.
|
|
*
|
|
* \sa CreatePopupMenu
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI GetPopupSubMenu (HMENU hpppmnu);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI StripPopupHead (HMENU hpppmnu)
|
|
* \brief Strips the title of the popup menu.
|
|
*
|
|
* This function strips the title of the popup menu \a hpppmnu.
|
|
*
|
|
* \param hpppmnu The handle to the popup menu.
|
|
*
|
|
* \return The handle to the submenu whose title has been stripped.
|
|
*
|
|
* \sa GetPopupSubMenu
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI StripPopupHead (HMENU hpppmnu);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI GetSubMenu (HMENU hmnu, int pos)
|
|
* \brief Retrieve the handle to the submenu activated by the specified menu
|
|
* item.
|
|
*
|
|
* This function retrieves the handle to the drop-down menu or submenu
|
|
* activated by the specified menu item.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
* \param pos The position of the menu item. The position value of the
|
|
* first item is 0.
|
|
*
|
|
* \return The handle to the submenu; 0 if the menu item can not activate
|
|
* a submenu.
|
|
*
|
|
* \sa GetPopupSubMenu
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI GetSubMenu (HMENU hmnu, int pos);
|
|
|
|
/**
|
|
* \fn HMENU GUIAPI GetSystemMenu (HWND hwnd, BOOL flag)
|
|
* \brief Allows the application to access the window menu (also known as
|
|
* the system menu) for copying and modifying.
|
|
*
|
|
* This function returns the handle to the system menu of the main window.
|
|
* This allows the application to access the window menu (also known as
|
|
* the system menu) for copying and modifying.
|
|
*
|
|
* \param hwnd The handle to the main window.
|
|
* \param flag Ignored currently; reserved for future use.
|
|
*
|
|
* \return The handle to the system menu; 0 if the main window has not
|
|
* a system menu.
|
|
*
|
|
* \sa GetMenu, SetMenu
|
|
*/
|
|
MG_EXPORT HMENU GUIAPI GetSystemMenu (HWND hwnd, BOOL flag);
|
|
|
|
/**
|
|
* \fn UINT GUIAPI EnableMenuItem (HMENU hmnu, LINT item, UINT flag)
|
|
* \brief Enables, disables, or grays the specified menu item.
|
|
*
|
|
* This function enables, disables, or grays the specified menu item.
|
|
*
|
|
* \param hmnu [in] Handle to the menu.
|
|
* \param item [in] Specifies the menu item or submenu to be enabled, disabled,
|
|
* or grayed, as determined by the \a flag parameter. This parameter specifies
|
|
* an item in a menu bar, menu or submenu.
|
|
* \param flag [in] Controls the interpretation of the \a item parameter and
|
|
* indicates whether the menu item is enabled, disabled, or grayed. This
|
|
* parameter must be a combination of either MF_BYPOSITION or MF_BYCOMMAND.
|
|
*
|
|
* \return The return value specifies the previous state of the menu item.
|
|
* If the menu item does not exist, the return value is -1.
|
|
*
|
|
* \note The type of \a item changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetMenuItemInfo
|
|
*/
|
|
MG_EXPORT UINT GUIAPI EnableMenuItem (HMENU hmnu, LINT item, UINT flag);
|
|
|
|
/**
|
|
* \fn LINT GUIAPI CheckMenuRadioItem (HMENU hmnu, LINT first, LINT last, \
|
|
* LINT checkitem, UINT flag)
|
|
* \brief Check a specified menu item and makes it a radio item.
|
|
*
|
|
* This function checks a specified menu item and makes it a radio item.
|
|
* At the same time, the function unchecks all other menu items in the
|
|
* associated group and clears the radio-item type flag for those items.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
* \param first The position of the first item in the group.
|
|
* \param last The position of the last item in the group.
|
|
* \param checkitem The position of the menu item to check.
|
|
* \param flag Indicates the position base, can be one of the following values:
|
|
* - MF_BYCOMMAND\n
|
|
* The position value \a item is based on the command identifier.
|
|
* - MF_BYPOSITION\n
|
|
* The position value \a item is based on the position in the menu.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \note The type of \a first, \a last, \a checkitem changed from
|
|
* int to LINT since v3.2.
|
|
*
|
|
* \sa SetMenuItemInfo, MENUITEMINFO
|
|
*/
|
|
MG_EXPORT int GUIAPI CheckMenuRadioItem (HMENU hmnu, LINT first, LINT last,
|
|
LINT checkitem, UINT flag);
|
|
|
|
/**
|
|
* \fn int GUIAPI SetMenuItemBitmaps (HMENU hmnu, LINT item, \
|
|
* UINT flag, PBITMAP hBmpUnchecked, PBITMAP hBmpChecked)
|
|
* \brief Associates the specified bitmap with a menu item.
|
|
*
|
|
* This function associates the specified bitmap with a menu item.
|
|
* Whether the menu item is checked or unchecked, the system displays the
|
|
* appropriate bitmap next to the menu item.
|
|
*
|
|
* \param hmnu The handle to the menu.
|
|
* \param item The position of the menu item.
|
|
* \param flag Indicates the position base, can be one of the following values:
|
|
* - MF_BYCOMMAND\n
|
|
* The position value \a item is based on the command identifier.
|
|
* - MF_BYPOSITION\n
|
|
* The position value \a item is based on the position in the menu.
|
|
* \param hBmpUnchecked The pointer to the unchecked BITMAP object.
|
|
* \param hBmpChecked The pointer to the checked BITMAP object.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \note The type of \a item changed from int to LINT since v3.2.
|
|
*
|
|
* \sa SetMenuItemInfo, MENUITEMINFO
|
|
*/
|
|
MG_EXPORT int GUIAPI SetMenuItemBitmaps (HMENU hmnu, LINT item, UINT flag,
|
|
PBITMAP hBmpUnchecked, PBITMAP hBmpChecked);
|
|
|
|
/**
|
|
* \fn int GUIAPI SetMenuItemInfo (HMENU hmnu, LINT item, \
|
|
* UINT flag, PMENUITEMINFO pmii)
|
|
* \brief Changes information about a menu item.
|
|
*
|
|
* This function changes information about the specified menu item.
|
|
*
|
|
* \param hmnu [in] Handle to the menu that contains the menu item.
|
|
* \param item [in] Specifies the identifier or position of the menu item
|
|
* to change. The meaning of this parameter depends on the value of \a flag.
|
|
* \param flag Indicates the position base, can be one of the following values:
|
|
* - MF_BYCOMMAND\n
|
|
* The position value \a item is based on the command identifier.
|
|
* - MF_BYPOSITION\n
|
|
* The position value \a item is based on the position in the menu.
|
|
* \param pmii The pointer to a MENUITEMINFO structure contains the information.
|
|
*
|
|
* \return The function returns 0 for success, non-zero for failure.
|
|
*
|
|
* \note The type of \a item changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetMenuItemInfo, MENUITEMINFO
|
|
*/
|
|
MG_EXPORT int GUIAPI SetMenuItemInfo (HMENU hmnu, LINT item,
|
|
UINT flag, PMENUITEMINFO pmii);
|
|
|
|
/** @} end of menu_fns */
|
|
|
|
/**
|
|
* \defgroup dialog_fns Dialog operations
|
|
* @{
|
|
*/
|
|
|
|
/* Dialog codes */
|
|
/**
|
|
* \def DLGC_WANTARROWS
|
|
* \brief Control wants arrow keys.
|
|
*/
|
|
#define DLGC_WANTARROWS 0x0001
|
|
/**
|
|
* \def DLGC_WANTTAB
|
|
* \brief Control wants tab keys
|
|
*/
|
|
#define DLGC_WANTTAB 0x0002
|
|
/**
|
|
* \def DLGC_WANTALLKEYS
|
|
* \brief Control wants all keys.
|
|
*/
|
|
#define DLGC_WANTALLKEYS 0x0004
|
|
/**
|
|
* \def DLGC_WANTCHARS
|
|
* \brief Want MSG_CHAR messages.
|
|
*/
|
|
#define DLGC_WANTCHARS 0x0008
|
|
|
|
/**
|
|
* \def DLGC_WANTENTER
|
|
* \brief Control wants enter keys.
|
|
*/
|
|
#define DLGC_WANTENTER 0x0010
|
|
/**
|
|
* \def DLGC_HASSETSEL
|
|
* \brief Understands EM_SETSEL message.
|
|
*/
|
|
#define DLGC_HASSETSEL 0x0080
|
|
|
|
/**
|
|
* \def DLGC_DEFPUSHBUTTON
|
|
* \brief Default pushbutton.
|
|
*/
|
|
#define DLGC_DEFPUSHBUTTON 0x0100
|
|
/**
|
|
* \def DLGC_PUSHBUTTON
|
|
* \brief Non-default pushbutton.
|
|
*/
|
|
#define DLGC_PUSHBUTTON 0x0200
|
|
/**
|
|
* \def DLGC_RADIOBUTTON
|
|
* \brief Radio button.
|
|
*/
|
|
#define DLGC_RADIOBUTTON 0x0400
|
|
/**
|
|
* \def DLGC_3STATE
|
|
* \brief 3 States button item.
|
|
*/
|
|
#define DLGC_3STATE 0x0800
|
|
/**
|
|
* \def DLGC_STATIC
|
|
* \brief Static item: don't include.
|
|
*/
|
|
#define DLGC_STATIC 0x1000
|
|
/**
|
|
* \def DLGC_BUTTON
|
|
* \brief Button item: can be checked.
|
|
*/
|
|
#define DLGC_BUTTON 0x2000
|
|
|
|
/**
|
|
* Structure which defines a control.
|
|
*/
|
|
typedef struct _CTRLDATA
|
|
{
|
|
/** Class name of the control */
|
|
const char* class_name;
|
|
/** Control style */
|
|
DWORD dwStyle;
|
|
/** Control position in dialog */
|
|
int x, y, w, h;
|
|
/** Control identifier
|
|
* \note The type changed from int to LINT since v3.2.
|
|
*/
|
|
LINT id;
|
|
/** Control caption */
|
|
const char* caption;
|
|
/** Additional data */
|
|
DWORD dwAddData;
|
|
/** Control extended style */
|
|
DWORD dwExStyle;
|
|
|
|
/** window element renderer name */
|
|
const char* werdr_name;
|
|
|
|
/** table of we_attrs */
|
|
const WINDOW_ELEMENT_ATTR* we_attrs;
|
|
} CTRLDATA;
|
|
typedef CTRLDATA* PCTRLDATA;
|
|
|
|
/**
|
|
* Structure which defines a dialogbox.
|
|
*
|
|
* Example:
|
|
*
|
|
* \include dlgtemplate.c
|
|
*/
|
|
typedef struct _DLGTEMPLATE
|
|
{
|
|
/** Dialog box style */
|
|
DWORD dwStyle;
|
|
/** Dialog box extended style */
|
|
DWORD dwExStyle;
|
|
/** Dialog box position */
|
|
int x, y, w, h;
|
|
/** Dialog box caption */
|
|
const char* caption;
|
|
/** Dialog box icon */
|
|
HICON hIcon;
|
|
/** Dialog box menu */
|
|
HMENU hMenu;
|
|
/** Number of controls */
|
|
int controlnr;
|
|
/** Poiter to control array */
|
|
PCTRLDATA controls;
|
|
/** Addtional data, must be zero */
|
|
DWORD dwAddData;
|
|
} DLGTEMPLATE;
|
|
typedef DLGTEMPLATE* PDLGTEMPLATE;
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateMainWindowIndirectParamEx (PDLGTEMPLATE pDlgTemplate, \
|
|
* HWND hOwner, WNDPROC WndProc, LPARAM lParam, \
|
|
* const char* werdr_name, WINDOW_ELEMENT_ATTR* we_attrs, \
|
|
* const char* window_name, const char* layer_name);
|
|
* \brief Uses a dialog template and other information to create a modeless
|
|
* main window and controls in it, and pass a parameter to the window
|
|
* procedure.
|
|
*
|
|
* This function uses a dialog template pointed to by \a pDlgTemplate and
|
|
* other information to create a modeless main window and controls in it.
|
|
* The parameter specified by \a lParam will be passed to the window procedure
|
|
* as the second paramter of MSG_INITDIALOG message.
|
|
*
|
|
* \param pDlgTemplate The pointer to a DLGTEMPLATE structure.
|
|
* \param hOwner The handle to the hosting main window.
|
|
* \param WndProc The window procedure of the new main window.
|
|
* \param lParam The parameter will be passed to the window procedure.
|
|
* \param werdr_name The name of window element renderer. NULL for default
|
|
* renderer.
|
|
* \param we_attrs The pointer to window element attribute table. NULL for
|
|
* default window attribute table.
|
|
* \param window_name The window name; reserved for future use.
|
|
* \param layer_name The layer name; reserved for future use.
|
|
*
|
|
* \return Handle to the new main window, HWND_INVALID on error.
|
|
*
|
|
* \sa CreateMainWindowIndirectParam, DestroyMainWindowIndirect,
|
|
* DialogBoxIndirectParam, DLGTEMPLATE
|
|
*/
|
|
|
|
MG_EXPORT HWND GUIAPI CreateMainWindowIndirectParamEx (PDLGTEMPLATE pDlgTemplate,
|
|
HWND hOwner, WNDPROC WndProc, LPARAM lParam,
|
|
const char* werdr_name, WINDOW_ELEMENT_ATTR* we_attrs,
|
|
const char* window_name, const char* layer_name);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateMainWindowIndirectParam (
|
|
PDLGTEMPLATE pDlgTemplate, HWND hOwner,
|
|
WNDPROC WndProc, LPARAM lParam)
|
|
* \brief A simplified version of CreateMainWindowIndirectParamEx.
|
|
*
|
|
* This function creates a main window by calling
|
|
* CreateMainWindowIndirectParamEx function and passing NULL for
|
|
* werdr_name, we_attrs, window_name, and layer_name parameters.
|
|
*
|
|
* \sa CreateMainWindowIndirectParamEx
|
|
*/
|
|
static inline HWND GUIAPI CreateMainWindowIndirectParam (
|
|
PDLGTEMPLATE pDlgTemplate, HWND hOwner,
|
|
WNDPROC WndProc, LPARAM lParam)
|
|
{
|
|
return CreateMainWindowIndirectParamEx (pDlgTemplate, hOwner,
|
|
WndProc, lParam, NULL, NULL, NULL, NULL);
|
|
}
|
|
|
|
/**
|
|
* \fn HWND GUIAPI CreateMainWindowIndirect (
|
|
PDLGTEMPLATE pDlgTemplate, HWND hOwner,
|
|
WNDPROC WndProc)
|
|
* \brief A simplified version of CreateMainWindowIndirectParam.
|
|
*
|
|
* This function creates a main window by calling CreateMainWindowIndirectParam
|
|
* function and passing 0 for lParam parameter.
|
|
*
|
|
* \sa CreateMainWindowIndirectParam
|
|
*/
|
|
static inline HWND GUIAPI CreateMainWindowIndirect (
|
|
PDLGTEMPLATE pDlgTemplate, HWND hOwner, WNDPROC WndProc)
|
|
{
|
|
return CreateMainWindowIndirectParam (pDlgTemplate, hOwner, WndProc, 0);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI DestroyMainWindowIndirect (HWND hMainWin)
|
|
* \brief Destroys a main window created by \a CreateMainWindowIndirectParam.
|
|
*
|
|
* This function destroys the main window which was created by
|
|
* \a CreateMainWindowIndirectParam function.
|
|
*
|
|
* \param hMainWin The handle to the main window.
|
|
*
|
|
* \sa CreateMainWindowIndirectParam
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI DestroyMainWindowIndirect (HWND hMainWin);
|
|
|
|
/**
|
|
* \fn int GUIAPI DialogBoxIndirectParamEx (PDLGTEMPLATE pDlgTemplate, \
|
|
* HWND hOwner, WNDPROC DlgProc, LPARAM lParam, \
|
|
* const char* werdr_name, WINDOW_ELEMENT_ATTR* we_attrs, \
|
|
* const char* window_name, const char* layer_name);
|
|
* \brief Creates a modal dialog box from a dialog box template
|
|
* in memory and other information.
|
|
*
|
|
* This function creates a modal dialog box from a dialog box template
|
|
* in memory and other information. Before displaying the dialog box,
|
|
* the function passes an application-defined value to the dialog box
|
|
* procedure as the second parameter of the MSG_INITDIALOG message.
|
|
* An application can use this value to initialize the controls in the
|
|
* dialog box.
|
|
*
|
|
* \param pDlgTemplate The pointer to a DLGTEMPLATE structure.
|
|
* \param hOwner The handle to the hosting main window.
|
|
* \param DlgProc The window procedure of the new dialog box.
|
|
* \param lParam The parameter will be passed to the window procedure.
|
|
* \param werdr_name The name of window element renderer. NULL for
|
|
* default renderer.
|
|
* \param we_attrs The pointer to window element attribute table.
|
|
* NULL for default window attribute table.
|
|
* \param window_name The window name; reserved for future use.
|
|
* \param layer_name The layer name; reserved for future use.
|
|
*
|
|
* \return Return value of the dialog box, i.e., the second argument
|
|
* passed to EndDialog function which closes the dialog box.
|
|
*
|
|
* \sa EndDialog, DialogBoxIndirectParam, CreateMainWindowIndirectParam,
|
|
* DLGTEMPLATE
|
|
*/
|
|
|
|
MG_EXPORT int GUIAPI DialogBoxIndirectParamEx (PDLGTEMPLATE pDlgTemplate,
|
|
HWND hOwner, WNDPROC DlgProc, LPARAM lParam,
|
|
const char* werdr_name, WINDOW_ELEMENT_ATTR* we_attrs,
|
|
const char* window_name, const char* layer_name);
|
|
|
|
/**
|
|
* \fn int GUIAPI DialogBoxIndirectParam (PDLGTEMPLATE pDlgTemplate,
|
|
HWND hOwner, WNDPROC DlgProc, LPARAM lParam)
|
|
* \brief A simplified version of DialogBoxIndirectParamEx.
|
|
*
|
|
* This function creates a dialog box by calling
|
|
* DialogBoxIndirectParamEx function and passing NULL for
|
|
* werdr_name, we_attrs, window_name, and layer_name parameters.
|
|
*
|
|
* \sa DialogBoxIndirectParamEx
|
|
*/
|
|
static inline int GUIAPI DialogBoxIndirectParam (PDLGTEMPLATE pDlgTemplate,
|
|
HWND hOwner, WNDPROC DlgProc, LPARAM lParam)
|
|
{
|
|
return DialogBoxIndirectParamEx (pDlgTemplate, hOwner, DlgProc, lParam,
|
|
NULL, NULL, NULL, NULL);
|
|
}
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI EndDialog (HWND hDlg, int endCode)
|
|
* \brief Destroys a modal dialog box, causing MiniGUI to end any processing
|
|
* for the dialog box.
|
|
*
|
|
* This function destroys the modal dialog box \a hDlg created by
|
|
* \a DialogBoxIndirectParam and ends any processing for the dialog box.
|
|
* The argument \a endCode will be returned by \a DialogBoxIndirectParam
|
|
* as the return value.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param endCode The value will be returned by \a DialogBoxIndirectParam.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \sa DialogBoxIndirectParam
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI EndDialog (HWND hDlg, int endCode);
|
|
|
|
/**
|
|
* \fn void GUIAPI DestroyAllControls (HWND hWnd)
|
|
* \brief Destroys all controls in a window.
|
|
*
|
|
* This function destroys all controls (child windows) in a window.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
*
|
|
* \sa DestroyWindow
|
|
*/
|
|
MG_EXPORT void GUIAPI DestroyAllControls (HWND hWnd);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetDlgDefPushButton (HWND hWnd)
|
|
* \brief Get the default push button control in a window.
|
|
*
|
|
* This function gets the handle to the default push button
|
|
* (with BS_DEFPUSHBUTTON style) in the specified window \a hWnd.
|
|
*
|
|
* \param hWnd The handle to the window.
|
|
* \return The handle to the default push button,
|
|
* zero for non default push button in the window.
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetDlgDefPushButton (HWND hWnd);
|
|
|
|
/**
|
|
* \fn LINT GUIAPI GetDlgCtrlID (HWND hwndCtl)
|
|
* \brief Get the integer identifier of a control.
|
|
*
|
|
* This function gets the integer identifier of the control \a hwndCtl.
|
|
*
|
|
* \param hwndCtl The handle to the control.
|
|
*
|
|
* \return The identifier of the control, -1 for error.
|
|
*
|
|
* \note The type of return value changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetDlgItem
|
|
*/
|
|
MG_EXPORT LINT GUIAPI GetDlgCtrlID (HWND hwndCtl);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetDlgItem (HWND hDlg, LINT nIDDlgItem)
|
|
* \brief Retrieve the handle to a control in a dialog box.
|
|
*
|
|
* This function retrieves the handle to a control, whose identifier is
|
|
* \a nIDDlgItem, in the specified dialog box \a hDlg.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param nIDDlgItem The identifier of the control.
|
|
*
|
|
* \note The type of \a nIDDlgItem changed from int to LINT since v3.2.
|
|
*
|
|
* \return The handle to the control, zero for not found.
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetDlgItem (HWND hDlg, LINT nIDDlgItem);
|
|
|
|
/**
|
|
* \fn UINT GUIAPI GetDlgItemInt (HWND hDlg, LINT nIDDlgItem, \
|
|
* BOOL *lpTranslated, BOOL bSigned)
|
|
* \brief Translates the text of a control in a dialog box into an integer
|
|
* value.
|
|
*
|
|
* This function translates the text of the control, whose identifier is
|
|
* \a nIDDlgItem in the dialog box \a hDlg into an integer value.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param nIDDlgItem The identifier of the control.
|
|
* \param lpTranslated The pointer to a boolean value, which indicates whether
|
|
* translated successfully.
|
|
* \param bSigned Indicates whether handle the text as a signed integer.
|
|
*
|
|
* \return The translated 32-bit integer.
|
|
*
|
|
* \note MiniGUI uses \a strtol or \a strtoul to convert the string value
|
|
* to a 32-bit integer, and pass the base as 0. Thus, the valid string value
|
|
* should be in the following forms:
|
|
*
|
|
* - [+|-]0x[0-9|A-F]*\n
|
|
* Will be read in base 16.
|
|
* - [+|-]0[0-7]*\n
|
|
* Will be read in base 8.
|
|
* - [+|-][1-9][0-9]*\n
|
|
* Will be read in base 10.
|
|
*
|
|
* \note The type of \a nIDDlgItem changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetDlgItemText, SetDlgItemInt
|
|
*/
|
|
MG_EXPORT UINT GUIAPI GetDlgItemInt (HWND hDlg, LINT nIDDlgItem,
|
|
BOOL *lpTranslated, BOOL bSigned);
|
|
|
|
/**
|
|
* \fn int GUIAPI GetDlgItemText (HWND hDlg, LINT nIDDlgItem, \
|
|
* char* lpString, int nMaxCount)
|
|
* \brief Retrieve the title or text associated with a control in a dialog box.
|
|
*
|
|
* This function retrieves the title or text associated with a control, whose
|
|
* identifier is \a nIDDlgItem in the dialog box \a hDlg.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param nIDDlgItem The identifier of the control.
|
|
* \param lpString The pointer to a buffer which receives the text.
|
|
* \param nMaxCount The maximal length of the string, not including
|
|
* the null character.
|
|
*
|
|
* \return The length of the null-terminated text.
|
|
*
|
|
* \note The buffer should at least have size of (\a nMaxCount + 1).
|
|
*
|
|
* \note The type of \a nIDDlgItem changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetDlgItemInt, GetDlgItemText2
|
|
*/
|
|
MG_EXPORT int GUIAPI GetDlgItemText (HWND hDlg, LINT nIDDlgItem,
|
|
char* lpString, int nMaxCount);
|
|
|
|
/**
|
|
* \fn char* GUIAPI GetDlgItemText2 (HWND hDlg, LINT id, int* lenPtr)
|
|
* \brief Retrieve the title or text associated with a control in a dialog box.
|
|
*
|
|
* This function is similiar as \a GetDlgItemText function,
|
|
* but it allocates memory for the text and returns the pointer
|
|
* to the allocated buffer. You should free the buffer when done by using
|
|
* \a free function.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param id The identifier of the control.
|
|
* \param lenPtr The pointer to an integer which receives the length of the text
|
|
* if it is not NULL.
|
|
*
|
|
* \return The pointer to the allocated buffer.
|
|
*
|
|
* \note The type of \a id changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetDlgItemText
|
|
*/
|
|
MG_EXPORT char* GUIAPI GetDlgItemText2 (HWND hDlg, LINT id, int* lenPtr);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetNextDlgGroupItem (HWND hDlg, \
|
|
* HWND hCtl, BOOL bPrevious)
|
|
* \brief Retrieve the handle to the first control in a group of controls
|
|
* that precedes (or follows) the specified control in a dialog box.
|
|
*
|
|
* This function retrieves the handle to the first control in a group of
|
|
* controls that precedes (or follows) the specified control \a hCtl in
|
|
* the dialog box \a hDlg.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param hCtl The handle to the control.
|
|
* \param bPrevious A boolean value indicates to retrive the preceding or
|
|
* following control. TRUE for preceding control.
|
|
*
|
|
* \return The handle to the preceding or following control.
|
|
*
|
|
* \sa GetNextDlgTabItem
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetNextDlgGroupItem (HWND hDlg,
|
|
HWND hCtl, BOOL bPrevious);
|
|
|
|
/**
|
|
* \fn HWND GUIAPI GetNextDlgTabItem (HWND hDlg, HWND hCtl, BOOL bPrevious)
|
|
* \brief Retrieve the handle to the first control that has the WS_TABSTOP
|
|
* style that precedes (or follows) the specified control.
|
|
*
|
|
* This function retrieves the handle to the first control that has the
|
|
* WS_TABSTOP style that precedes (or follows) the specified control \a hCtl
|
|
* in the dialog box \a hDlg.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param hCtl The handle to the control.
|
|
* \param bPrevious A boolean value indicates to retrive the preceding or
|
|
* following control. TRUE for preceding control.
|
|
*
|
|
* \return The handle to the preceding or following control.
|
|
*
|
|
* \sa GetNextDlgGroupItem
|
|
*/
|
|
MG_EXPORT HWND GUIAPI GetNextDlgTabItem (HWND hDlg, HWND hCtl, BOOL bPrevious);
|
|
|
|
/**
|
|
* \fn LRESULT GUIAPI SendDlgItemMessage (HWND hDlg, LINT nIDDlgItem, \
|
|
* UINT message, WPARAM wParam, LPARAM lParam)
|
|
* \brief Send a message to the specified control in a dialog box.
|
|
*
|
|
* This function sends a message specified by (\a message, \a wParam, \a lParam)
|
|
* to the specified control whose identifier is \a nIDDlgItem in the dialog
|
|
* box \a hDlg.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param nIDDlgItem The identifier of the control.
|
|
* \param message The message identifier.
|
|
* \param wParam The first message parameter.
|
|
* \param lParam The second message parameter.
|
|
*
|
|
* \return The return value of the message handler.
|
|
*
|
|
* \note The type of \a nIDDlgItem changed from int to LINT since v3.2.
|
|
*
|
|
* \sa SendMessage, GetDlgItem
|
|
*/
|
|
MG_EXPORT LRESULT GUIAPI SendDlgItemMessage (HWND hDlg, LINT nIDDlgItem,
|
|
UINT message, WPARAM wParam, LPARAM lParam);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetDlgItemInt (HWND hDlg, LINT nIDDlgItem, \
|
|
* UINT uValue, BOOL bSigned)
|
|
* \brief Set the text of a control in a dialog box to the string
|
|
* representation of a specified integer value.
|
|
*
|
|
* This function sets the text of the control whose identifier is \a nIDDlgItem
|
|
* in the dialog box \a hDlg to the string representation of
|
|
* the specified integer value \a nValue.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param nIDDlgItem The identifier of the control.
|
|
* \param uValue The 32-bit integer value.
|
|
* \param bSigned A boolean value indicates whether the integer value is a
|
|
* signed integer.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \note The type of \a nIDDlgItem changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetDlgItemInt, SetDlgItemText
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetDlgItemInt (HWND hDlg, LINT nIDDlgItem,
|
|
UINT uValue, BOOL bSigned);
|
|
|
|
/**
|
|
* \fn BOOL GUIAPI SetDlgItemText (HWND hDlg, int nIDDlgItem, \
|
|
* const char* lpString)
|
|
* \brief Set the title or text of a control in a dialog box.
|
|
*
|
|
* This function sets the title or text of the control whose identifier
|
|
* is \a nIDDlgItem in the dialog box \a hDlg to the string pointed to
|
|
* by \a lpString.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param nIDDlgItem The identifier of the control.
|
|
* \param lpString The pointer to the string.
|
|
*
|
|
* \return TRUE on success, FALSE on error.
|
|
*
|
|
* \note The type of \a nIDDlgItem changed from int to LINT since v3.2.
|
|
*
|
|
* \sa GetDlgItemText, SetDlgItemInt
|
|
*/
|
|
MG_EXPORT BOOL GUIAPI SetDlgItemText (HWND hDlg, LINT nIDDlgItem,
|
|
const char* lpString);
|
|
|
|
#ifdef _MGCTRL_BUTTON
|
|
|
|
/**
|
|
* \fn void GUIAPI CheckDlgButton (HWND hDlg, LINT nIDDlgItem, int nCheck)
|
|
* \brief Changes the check status of a button control.
|
|
*
|
|
* This function changes the check status of the button control whose
|
|
* identifier is \a nIDDlgItem in the dialog box \a hDlg.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param nIDDlgItem The identifier of the control.
|
|
* \param nCheck The state of the button. If the button is a normal button,
|
|
* the value being zero means the button is checked, otherwise unchecked.
|
|
* If the button is a special button with three states, the value
|
|
* can be one of the following values:
|
|
* - BST_UNCHECKED\n
|
|
* The button is unchecked.
|
|
* - BST_CHECKED\n
|
|
* The button is checked.
|
|
* - BST_INDETERMINATE\n
|
|
* The button is in indeterminate state.
|
|
*
|
|
* \note The type of \a nIDDlgItem changed from int to LINT since v3.2.
|
|
*
|
|
* \sa CheckRadioButton, IsDlgButtonChecked
|
|
*/
|
|
MG_EXPORT void GUIAPI CheckDlgButton (HWND hDlg, LINT nIDDlgItem, int nCheck);
|
|
|
|
/**
|
|
* \fn void GUIAPI CheckRadioButton (HWND hDlg, \
|
|
* LINT idFirstButton, LINT idLastButton, LINT idCheckButton)
|
|
* \brief Adds a check mark to (checks) a specified radio button in a group
|
|
* and removes a check mark from (clears) all other radio buttons in
|
|
* the group.
|
|
*
|
|
* This function adds a check mark to (checks) the specified radio button
|
|
* \a idCheckButton in a group between \a idFirstButton and \a idLastButton,
|
|
* and removes a check mark from (clears) all other radio buttons in the group.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param idFirstButton The identifier of the first control in the group.
|
|
* \param idLastButton The identifier of the last control in the group.
|
|
* \param idCheckButton The identifier of the control to be checked.
|
|
*
|
|
* \note The type of \a idFirstButton, \a idLastButton, and \a idCheckButton
|
|
* changed from int to LINT since v3.2.
|
|
*
|
|
* \sa CheckDlgButton
|
|
*/
|
|
MG_EXPORT void GUIAPI CheckRadioButton (HWND hDlg,
|
|
LINT idFirstButton, LINT idLastButton, LINT idCheckButton);
|
|
|
|
/**
|
|
* \fn int GUIAPI IsDlgButtonChecked (HWND hDlg, LINT idButton)
|
|
* \brief Determine whether a button control has a check mark next to it or
|
|
* whether a three-state button control is grayed, checked, or neither.
|
|
*
|
|
* This function determines whether the button control whose identifier is
|
|
* \a idButton has a check mark next to it or whether a three-state button
|
|
* control is grayed, checked, or neither.
|
|
*
|
|
* \param hDlg The handle to the dialog box.
|
|
* \param idButton The identifier of the button.
|
|
*
|
|
* \return The check state of the button. If the button is a normal button,
|
|
* the value being zero means the button is checked, otherwise unchecked.
|
|
* If the button is a special button with three states, the value
|
|
* can be one of the following values:
|
|
* - BST_UNCHECKED\n
|
|
* The button is unchecked.
|
|
* - BST_CHECKED\n
|
|
* The button is checked.
|
|
* - BST_INDETERMINATE\n
|
|
* The button is in indeterminate state.
|
|
*
|
|
* \note The type of \a idButton tem changed from int to LINT since v3.2.
|
|
*
|
|
* \sa CheckDlgButton
|
|
*/
|
|
MG_EXPORT int GUIAPI IsDlgButtonChecked (HWND hDlg, LINT idButton);
|
|
#endif
|
|
|
|
/** @} end of dialog_fns */
|
|
|
|
/**
|
|
* \defgroup msgbox_fns Message box operations
|
|
* @{
|
|
*/
|
|
|
|
#if defined(_MGCTRL_STATIC) && defined (_MGCTRL_BUTTON)
|
|
|
|
/* Standard control IDs */
|
|
#define IDC_STATIC 0
|
|
#define IDOK 1
|
|
#define IDCANCEL 2
|
|
#define IDABORT 3
|
|
#define IDRETRY 4
|
|
#define IDIGNORE 5
|
|
#define IDYES 6
|
|
#define IDNO 7
|
|
|
|
#define MINID_RESERVED 0xF001
|
|
#define MAXID_RESERVED 0xFFFF
|
|
|
|
#define MB_OK 0x00000000
|
|
#define MB_OKCANCEL 0x00000001
|
|
#define MB_YESNO 0x00000002
|
|
#define MB_RETRYCANCEL 0x00000003
|
|
#define MB_ABORTRETRYIGNORE 0x00000004
|
|
#define MB_YESNOCANCEL 0x00000005
|
|
#define MB_CANCELASBACK 0x00000008 /* customized style */
|
|
#define MB_TYPEMASK 0x00000007
|
|
|
|
#define MB_ICONHAND 0x00000010
|
|
#define MB_ICONQUESTION 0x00000020
|
|
#define MB_ICONEXCLAMATION 0x00000030
|
|
#define MB_ICONASTERISK 0x00000040
|
|
#define MB_ICONMASK 0x000000F0
|
|
|
|
#define MB_ICONINFORMATION MB_ICONASTERISK
|
|
#define MB_ICONSTOP MB_ICONHAND
|
|
|
|
#define MB_DEFBUTTON1 0x00000000
|
|
#define MB_DEFBUTTON2 0x00000100
|
|
#define MB_DEFBUTTON3 0x00000200
|
|
#define MB_DEFMASK 0x00000F00
|
|
|
|
/* #define MB_APPLMODAL 0x00000000 */
|
|
/* #define MB_SYSTEMMODAL 0x00001000 */
|
|
/* #define MB_TASKMODAL 0x00002000 */
|
|
|
|
#define MB_NOFOCUS 0x00008000
|
|
|
|
#define MB_ALIGNCENTER 0x00000000
|
|
#define MB_ALIGNTOPLEFT 0x00010000
|
|
#define MB_ALIGNBTMLEFT 0x00020000
|
|
#define MB_ALIGNTOPRIGHT 0x00030000
|
|
#define MB_ALIGNBTMRIGHT 0x00040000
|
|
#define MB_ALIGNMASK 0x00070000
|
|
|
|
#define MB_BASEDONPARENT 0x00080000 /* default is desktop. */
|
|
|
|
/**
|
|
* \fn int GUIAPI MessageBox (HWND hParentWnd, const char* pszText, \
|
|
* const char* pszCaption, DWORD dwStyle)
|
|
* \brief Displays a message box within one, two, or three push buttons.
|
|
*
|
|
* This function displays a message box within one, two, or three buttons,
|
|
* and returns the identifier of the button clicked by the user. You can
|
|
* pass \a dwStyle argument with different values to control the number of
|
|
* buttons, the button titles, and so on.
|
|
*
|
|
* \param hParentWnd The handle to the hosting main window.
|
|
* \param pszText The message text will be displayed in the message box.
|
|
* \param pszCaption The caption of the message box.
|
|
* \param dwStyle Specifies the contents and behavior of the dialog box.
|
|
* This parameter can be a combination of flags from the following groups
|
|
* of flags.
|
|
*
|
|
* To indicate the buttons displayed in the message box, specify
|
|
* one of the following values.
|
|
* - MB_OK\n
|
|
* Create a message box within only one button whose title is "OK".
|
|
* - MB_OKCANCEL\n
|
|
* Create a message box within two buttons whose title are "OK"
|
|
* and "Cancel" respectively.
|
|
* - MB_YESNO\n
|
|
* Create a message box within two buttons whose title are "Yes"
|
|
* and "No" respectively.
|
|
* - MB_RETRYCANCEL\n
|
|
* Create a message box within two buttons whose title are "Retry"
|
|
* and "Cancel" respectively.
|
|
* - MB_ABORTRETRYIGNORE\n
|
|
* Create a message box within three buttons whose title are
|
|
* "Abort", "Retry" and "Ignore" respectively.
|
|
* - MB_YESNOCANCEL\n
|
|
* Create a message box within three buttons whose title are
|
|
* "Yes", "No" and "Cancel" respectively.
|
|
* - MB_CANCELASBACK\n
|
|
* Title "Cancel" replaced with title "Previous".
|
|
*
|
|
* To display an icon in the message box, specify one of the following
|
|
* values.
|
|
* - MB_ICONHAND\n
|
|
* Display a hand/stop icon in the message box.
|
|
* - MB_ICONQUESTION\n
|
|
* Display a question mark icon in the message box.
|
|
* - MB_ICONEXCLAMATION\n
|
|
* Display a exclamation mark icon in the message box.
|
|
* - MB_ICONASTERISK\n
|
|
* Display an information icon in the message box.
|
|
* - MB_ICONINFORMATION\n
|
|
* Display an information icon in the message box.
|
|
* - MB_ICONSTOP\n
|
|
* Display a hand/stop icon in the message box.
|
|
*
|
|
* To indicate the default button, specify one of the following values.
|
|
* - MB_DEFBUTTON1\n
|
|
* The first button is the default button.
|
|
* - MB_DEFBUTTON2\n
|
|
* The second button is the default button.
|
|
* - MB_DEFBUTTON3\n
|
|
* The third button is the default button.
|
|
*
|
|
* To indicate the default text alignment, specify one of the following
|
|
* values.
|
|
* - MB_ALIGNCENTER\n
|
|
* The message box is center aligned.
|
|
* - MB_ALIGNTOPLEFT\n
|
|
* The message box is upper-left aligned.
|
|
* - MB_ALIGNBTMLEFT\n
|
|
* The message box is lower-left aligned.
|
|
* - MB_ALIGNTOPRIGHT\n
|
|
* The message box is upper-right aligned.
|
|
* - MB_ALIGNBTMRIGHT\n
|
|
* The message box is lower-right aligned.
|
|
*
|
|
* To indicate the default align based on hosting window, specify the following value.
|
|
* - MB_BASEDONPARENT\n
|
|
* A flag indicates that the alignments above are based on the
|
|
* hosting window, not the desktop.
|
|
*
|
|
* \return The identifier of the button clicked by user, can be one of the
|
|
* following values:
|
|
* - IDOK\n
|
|
* The "OK" button clicked.
|
|
* - IDCANCEL\n
|
|
* The "Cancel" or "Previous" button clicked.
|
|
* - IDABORT\n
|
|
* The "Abort" button clicked.
|
|
* - IDRETRY\n
|
|
* The "Retry" button clicked.
|
|
* - IDIGNORE\n
|
|
* The "Ignore" button clicked.
|
|
* - IDYES\n
|
|
* The "Yes" button clicked.
|
|
* - IDNO\n
|
|
* The "No" button clicked.
|
|
*
|
|
* \note This function will call \a GetSysText to translate the button
|
|
* titles to localized text.
|
|
*
|
|
* \sa GetSysText, DialogBoxIndirectParam
|
|
*/
|
|
MG_EXPORT int GUIAPI MessageBox (HWND hParentWnd, const char* pszText,
|
|
const char* pszCaption, DWORD dwStyle);
|
|
|
|
#endif /* _MGCTRL_STATIC && _MGCTRL_BUTTON */
|
|
|
|
/**
|
|
* \fn void GUIAPI MessageBeep (DWORD dwBeep)
|
|
* \brief Makes a sound of beep.
|
|
*
|
|
* This function makes a sound of beep. We ignore \a dwBeep argument so far.
|
|
*
|
|
* \param dwBeep The beep type, ignored so far.
|
|
*
|
|
* \sa Beep, Ping, Tone
|
|
*/
|
|
MG_EXPORT void GUIAPI MessageBeep (DWORD dwBeep);
|
|
|
|
/** @} end of msgbox_fns */
|
|
/** @} end of window_fns */
|
|
/** @} end of fns */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* _MGUI_WINDOW_H */
|
|
|