1342 lines
30 KiB
C
Executable File
1342 lines
30 KiB
C
Executable File
/**
|
|
* \file edit.h
|
|
* \author Wei Yongming <vincent@minigui.org>
|
|
* \date 2001/12/29
|
|
*
|
|
\verbatim
|
|
|
|
This file is part of MiniGUI, a mature cross-platform windowing
|
|
and Graphics User Interface (GUI) support system for embedded systems
|
|
and smart IoT devices.
|
|
|
|
Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
|
|
Copyright (C) 1998~2002, WEI Yongming
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
Or,
|
|
|
|
As this program is a library, any link to this program must follow
|
|
GNU General Public License version 3 (GPLv3). If you cannot accept
|
|
GPLv3, you need to be licensed from FMSoft.
|
|
|
|
If you have got a commercial license of this program, please use it
|
|
under the terms and conditions of the commercial license.
|
|
|
|
For more information about the commercial license, please refer to
|
|
<http://www.minigui.com/en/about/licensing-policy/>.
|
|
|
|
\endverbatim
|
|
*/
|
|
|
|
/*
|
|
* $Id: edit.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_CTRL_EDIT_H
|
|
#define _MGUI_CTRL_EDIT_H
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/**
|
|
* \addtogroup controls
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \defgroup ctrl_edit Edit/MEdit control
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \def CTRL_EDIT
|
|
* \brief The class name of simple single-line editor box.
|
|
*
|
|
* This edit control uses the system default fixed logical font.
|
|
*/
|
|
#define CTRL_EDIT ("edit")
|
|
|
|
/**
|
|
* \def CTRL_SLEDIT
|
|
* \brief The class name of single-line editor box.
|
|
*
|
|
* This edit control uses the system logical font for control,
|
|
* which may be variable-width font.
|
|
*/
|
|
#define CTRL_SLEDIT ("sledit")
|
|
|
|
/**
|
|
* \def CTRL_BIDISLEDIT
|
|
* \brief The class name of BIDI single-line editor box.
|
|
*
|
|
* This edit control uses the system logical font for control,
|
|
* which may be variable-width font.
|
|
*/
|
|
#define CTRL_BIDISLEDIT ("bidisledit")
|
|
|
|
/**
|
|
* \def CTRL_MLEDIT
|
|
* \brief The class name of multiple-line editor box.
|
|
*
|
|
* This edit control uses the system logical font for control,
|
|
* which may be variable-width font.
|
|
*/
|
|
#define CTRL_MLEDIT ("mledit")
|
|
|
|
/**
|
|
* \def CTRL_MEDIT
|
|
* \brief Another class name of multiple-line editor box.
|
|
*
|
|
* This edit control uses the system logical font for control,
|
|
* which may be variable-width font.
|
|
*/
|
|
#define CTRL_MEDIT ("medit")
|
|
|
|
/**
|
|
* \defgroup ctrl_edit_styles Styles of edit control
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \def ES_LEFT
|
|
* \brief Left-aligned text.
|
|
*/
|
|
#define ES_LEFT 0x00000000L
|
|
|
|
/**
|
|
* \def ES_CENTER
|
|
* \brief Center-aligned text.
|
|
*/
|
|
#define ES_CENTER 0x00000001L
|
|
|
|
/**
|
|
* \def ES_RIGHT
|
|
* \brief Right-aligned text.
|
|
*/
|
|
#define ES_RIGHT 0x00000002L
|
|
|
|
/**
|
|
* \def ES_MULTILINE
|
|
* \brief Multi-line text.
|
|
*/
|
|
#define ES_MULTILINE 0x00000004L
|
|
|
|
/**
|
|
* \def ES_UPPERCASE
|
|
* \brief Converts all characters to uppercase as they are typed into the edit control.
|
|
*/
|
|
#define ES_UPPERCASE 0x00000008L
|
|
|
|
/**
|
|
* \def ES_LOWERCASE
|
|
* \brief Converts all characters to lowercase as they are typed into the edit control.
|
|
*/
|
|
#define ES_LOWERCASE 0x00000010L
|
|
|
|
/**
|
|
* \def ES_PASSWORD
|
|
* \brief Displays an asterisk (*) for each character typed into the edit control.
|
|
*/
|
|
#define ES_PASSWORD 0x00000020L
|
|
|
|
/**
|
|
* \def ES_AUTOVSCROLL
|
|
* \brief Show and hide the vertical scroll bar automatically
|
|
*/
|
|
#define ES_AUTOVSCROLL 0x00000040L
|
|
|
|
/**
|
|
* \def ES_AUTOHSCROLL
|
|
* \brief Show and hide the horizontal scroll bar automatically
|
|
*/
|
|
#define ES_AUTOHSCROLL 0x00000080L
|
|
|
|
/**
|
|
* \def ES_NOHIDESEL
|
|
* \brief Edit control with this style will remain selected when focus is lost
|
|
*/
|
|
#define ES_NOHIDESEL 0x00000100L
|
|
|
|
/**
|
|
* \def ES_AUTOSELECT
|
|
* \brief Selects all text when getting focus
|
|
*/
|
|
#define ES_AUTOSELECT 0x00000400L
|
|
//#define ES_OEMCONVERT 0x00000400L
|
|
|
|
/**
|
|
* \def ES_READONLY
|
|
* \brief Prevents the user from typing or editing text in the edit control.
|
|
*/
|
|
#define ES_READONLY 0x00000800L
|
|
|
|
/**
|
|
* \def ES_BASELINE
|
|
* \brief Draws base line under input area instead of frame border.
|
|
*/
|
|
#define ES_BASELINE 0x00001000L
|
|
|
|
/**
|
|
* \def ES_AUTOWRAP
|
|
* \brief Automatically wraps against border when inputting.
|
|
*/
|
|
#define ES_AUTOWRAP 0x00002000L
|
|
|
|
/**
|
|
* \def ES_TITLE
|
|
* \brief Shows specified title texts.
|
|
*/
|
|
#define ES_TITLE 0x00004000L
|
|
|
|
/**
|
|
* \def ES_TIP
|
|
* \brief Shows specified tip texts.
|
|
*/
|
|
#define ES_TIP 0x00008000L
|
|
|
|
/** @} end of ctrl_edit_styles */
|
|
|
|
/**
|
|
* \defgroup ctrl_edit_msgs Messages of edit control
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \def EM_GETSEL
|
|
* \brief Gets the selected string in the edit control.
|
|
*
|
|
* \code
|
|
* EM_GETSEL
|
|
*
|
|
* char *buffer;
|
|
* int len;
|
|
*
|
|
* wParam = (WPARAM)len;
|
|
* lParam = (LPARAM)buffer;
|
|
* \endcode
|
|
*
|
|
* \param len Length of buffer.
|
|
* \param buffer Pointer to the string buffer
|
|
*
|
|
* \return Length of the selected string
|
|
*/
|
|
#define EM_GETSEL 0xF0B0
|
|
|
|
/**
|
|
* \def EM_SETSEL
|
|
* \brief Sets the selected point in the edit control and makes
|
|
* the text between insertion point and selection point selected.
|
|
*
|
|
* Generally, you should send EM_SETCARETPOS first to set insertion
|
|
* point before you use EM_SETSEL to select text.
|
|
*
|
|
* \code
|
|
* EM_SETSEL
|
|
*
|
|
* int line_pos;
|
|
* int char_pos;
|
|
*
|
|
* wParam = (WPARAM)line_pos;
|
|
* lParam = (LPARAM)char_pos;
|
|
* \endcode
|
|
*
|
|
* \param line_pos Line position of the selection point.
|
|
* For single line editor, it is always zero.
|
|
* Note : For multi-line editor, "line" means a text string ended with a line
|
|
* seperator, not a single text line in wrap mode. So, char_pos
|
|
* means the character position in a text string.
|
|
* \param char_pos Character(wide character) position of the selection point.
|
|
*
|
|
* \return Length of the selected string
|
|
*/
|
|
#define EM_SETSEL 0xF0B1
|
|
|
|
/**
|
|
* \def EM_SETSELPOS
|
|
* \sa EM_SETSEL
|
|
*/
|
|
#define EM_SETSELPOS EM_SETSEL
|
|
|
|
/**
|
|
* \def EM_SETSELECTION
|
|
* \sa EM_SETSEL
|
|
*/
|
|
#define EM_SETSELECTION EM_SETSEL
|
|
|
|
/**
|
|
* \def EM_SELECTALL
|
|
* \brief Selects all the texts, the same meaning as ctrl+a
|
|
*
|
|
* \code
|
|
* EM_SELECTALL
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*/
|
|
#define EM_SELECTALL 0xF0B2
|
|
|
|
/**
|
|
* \def EM_GETSELPOS
|
|
* \brief Gets the position of the selection point.
|
|
*
|
|
* \code
|
|
* EM_GETSELPOS
|
|
* int* line_pos;
|
|
* int* char_pos;
|
|
*
|
|
* wParam = (WPARAM)line_pos;
|
|
* lParam = (LPARAM)char_pos;
|
|
* \endcode
|
|
*
|
|
* \param line_pos Pointer to a integer buffer to save the selection line position.
|
|
* For single line editor, it is always zero.
|
|
* Note : Here "line" means a text string ended with a line
|
|
* seperator, not a single text line in wrap mode. So, char_pos
|
|
* means the character position in a text string.
|
|
* \param char_pos Pointer to a integer buffer to save the selection character position.
|
|
*
|
|
* \return The string length of the text from the beginning to the selection point.
|
|
*/
|
|
#define EM_GETSELPOS 0xF0B3
|
|
|
|
/**
|
|
* \def EM_INSERTCBTEXT
|
|
* \brief Inserts the text in the clipboard to the current caret position
|
|
*
|
|
* \code
|
|
* EM_INSERTCBTEXT
|
|
* int len;
|
|
* const char *string;
|
|
*
|
|
* wParam = (WPARAM)len;
|
|
* lParam = (LPARAM)string;
|
|
* \endcode
|
|
*
|
|
* \param len Length of string
|
|
* \param string Pointer to the text string
|
|
*/
|
|
#define EM_INSERTCBTEXT 0xF0B4
|
|
|
|
/**
|
|
* \def EM_COPYTOCB
|
|
* \brief Copies the currently selected text to the clipboard
|
|
*
|
|
* \code
|
|
* EM_COPYTOCB
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0
|
|
* \endcode
|
|
*
|
|
* \return Length of the text which is really copied to clipboard.
|
|
*/
|
|
#define EM_COPYTOCB 0xF0B5
|
|
|
|
/**
|
|
* \def EM_CUTTOCB
|
|
* \brief Cuts the currently selected text to the clipboard
|
|
*
|
|
* \code
|
|
* EM_CUTTOCB
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0
|
|
* \endcode
|
|
*
|
|
* \return Length of the text which is really copied to clipboard.
|
|
*/
|
|
#define EM_CUTTOCB 0xF0B6
|
|
|
|
/**
|
|
* \def EM_SETLFDISPCHAR
|
|
* \brief Sets the char used to represent the line seperator.
|
|
*
|
|
* In default case, the line sperator will not be shown.
|
|
* If the char used to represent the line seperator is not zero,
|
|
* this char will be shown in place of line seperator.
|
|
*
|
|
* \code
|
|
* EM_SETLFDISPCHAR
|
|
* unsigned char ch;
|
|
*
|
|
* wParam = 0;
|
|
* lParam = ch;
|
|
* \endcode
|
|
*
|
|
* \param ch The char used to represent the line seperator
|
|
*/
|
|
#define EM_SETLFDISPCHAR 0xF0B7
|
|
|
|
/**
|
|
* \def EM_SETLINESEP
|
|
* \brief Sets the line seperator.
|
|
*
|
|
* In default case, the line sperator is Line Feed
|
|
* characters(LF , ASCII 10, '\n').
|
|
*
|
|
* \code
|
|
* EM_SETLINESEP
|
|
* unsigned char ch;
|
|
*
|
|
* wParam = 0;
|
|
* lParam = ch;
|
|
* \endcode
|
|
*
|
|
* \param ch The new line seperator
|
|
*/
|
|
#define EM_SETLINESEP 0xF0B8
|
|
|
|
/* #define EM_GETRECT 0xF0B2 */
|
|
/* #define EM_SETRECT 0xF0B3 */
|
|
/* #define EM_SETRECTNP 0xF0B4 */
|
|
/* #define EM_SCROLL 0xF0B5 */
|
|
|
|
/**
|
|
* \def EM_GETCARETPOS
|
|
* \brief Gets the position of the caret.
|
|
*
|
|
* \code
|
|
* EM_GETCARETPOS
|
|
* int* line_pos;
|
|
* int* char_pos;
|
|
*
|
|
* wParam = (WPARAM)line_pos;
|
|
* lParam = (LPARAM)char_pos;
|
|
* \endcode
|
|
*
|
|
* \param line_pos Pointer to a integer buffer to save the caret line position.
|
|
* For single line editor, it is always zero.
|
|
* Note : Here "line" means a text string ended with a line
|
|
* seperator, not a single text line in wrap mode. So, char_pos
|
|
* means the character position in a text string.
|
|
* \param char_pos Pointer to a integer buffer to save the caret character position.
|
|
*
|
|
* \return The string length of the text from the beginning to the caret pos.
|
|
*/
|
|
#define EM_GETCARETPOS 0xF0B9
|
|
|
|
/**
|
|
* \def EM_SETCARETPOS
|
|
* \brief Sets the position of the caret.
|
|
*
|
|
* \code
|
|
* EM_SETCARETPOS
|
|
* int line_pos;
|
|
* int char_pos;
|
|
*
|
|
* wParam = (WPARAM)line_pos;
|
|
* lParam = (LPARAM)char_pos;
|
|
* \endcode
|
|
*
|
|
* \param line_pos The new caret line position. For single line editor, it will be ignored.
|
|
* Note : Here "line" means a text string ended with a line
|
|
* seperator, not a single text line in wrap mode. So, char_pos
|
|
* means the character position in a text string.
|
|
* \param char_pos The new caret character position.
|
|
*
|
|
* \return Length of the string from the beginning to the caret position
|
|
* on success, otherwise -1.
|
|
*/
|
|
#define EM_SETCARETPOS 0xF0BA
|
|
|
|
/**
|
|
* \def EM_SETINSERTION
|
|
* \sa EM_SETCARETPOS
|
|
*/
|
|
#define EM_SETINSERTION EM_SETCARETPOS
|
|
|
|
/* #define EM_SCROLLCARET 0xF0B9 */
|
|
/* #define EM_GETMODIFY 0xF0BA */
|
|
/* #define EM_SETMODIFY 0xF0BB */
|
|
|
|
/**
|
|
* \def EM_GETLINECOUNT
|
|
* \brief Gets the line number.
|
|
*
|
|
* \code
|
|
* EM_GETLINECOUNT
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \return Line number on success, otherwise -1.
|
|
* \note Implemented for TextEdit control.
|
|
*/
|
|
#define EM_GETLINECOUNT 0xF0BC
|
|
|
|
/**
|
|
* \def EM_GETLINEHEIGHT
|
|
* \brief Gets the height of a line.
|
|
*
|
|
* \code
|
|
* EM_GETLINEHEIGHT
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \return Height value.
|
|
* \note Implemented for TextEdit control.
|
|
*/
|
|
#define EM_GETLINEHEIGHT 0xF0BD
|
|
|
|
/**
|
|
* \def EM_SETLINEHEIGHT
|
|
* \brief Sets the height of a line.
|
|
*
|
|
* \code
|
|
* EM_SETLINEHEIGHT
|
|
*
|
|
* wParam = (WPARAM)height;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \return The old height value.
|
|
* \note Implemented for TextEdit control.
|
|
*/
|
|
#define EM_SETLINEHEIGHT 0xF0BE
|
|
|
|
|
|
/*#define EM_LINEINDEX 0xF0BD */
|
|
/*#define EM_GETTHUMB 0xF0BE */
|
|
|
|
/* internal used now */
|
|
/**
|
|
* \def EM_LINESCROLL
|
|
* \brief reserved.
|
|
*
|
|
*/
|
|
#define EM_LINESCROLL 0xF0BF
|
|
|
|
/**
|
|
* \def EM_INSERTTEXT
|
|
* \brief Inserts the specified text to the current caret position
|
|
*
|
|
* Normally used to input a long string.
|
|
*
|
|
* \code
|
|
* EM_INSERTTEXT
|
|
* int len;
|
|
* const char *string;
|
|
*
|
|
* wParam = (WPARAM)len;
|
|
* lParam = (LPARAM)string;
|
|
* \endcode
|
|
*
|
|
* \param len Length of string
|
|
* \param string Pointer to the text string
|
|
*/
|
|
#define EM_INSERTTEXT 0xF0C0
|
|
|
|
/* Not use */
|
|
/**
|
|
* \def EM_LINELENGTH
|
|
* \brief reserved.
|
|
*
|
|
*/
|
|
#define EM_LINELENGTH 0xF0C1
|
|
|
|
/* Not use */
|
|
/**
|
|
* \def EM_REPLACESEL
|
|
* \brief reserved.
|
|
*
|
|
*/
|
|
#define EM_REPLACESEL 0xF0C2
|
|
|
|
/**
|
|
* \def EM_GETMAXLIMIT
|
|
* \brief Get text limit of a single-line edit control.
|
|
*/
|
|
#define EM_GETMAXLIMIT 0xF0C3
|
|
|
|
/* Not use */
|
|
/**
|
|
* \def EM_GETLINE
|
|
* \brief reserved.
|
|
*
|
|
*/
|
|
#define EM_GETLINE 0xF0C4
|
|
|
|
/**
|
|
* \def EM_LIMITTEXT
|
|
* \brief Set text limit of an edit control.
|
|
*
|
|
* \code
|
|
* EM_LIMITTEXT
|
|
* int newLimit;
|
|
*
|
|
* wParam = (WPARAM)newLimit;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \param newLimit The new text limit of an edit control, by character.
|
|
*/
|
|
#define EM_LIMITTEXT 0xF0C5
|
|
|
|
/**
|
|
* \def EM_REDO
|
|
* \brief Redo operation.
|
|
*
|
|
* \code
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
*/
|
|
#define EM_REDO 0xF0C6
|
|
/*#define EM_CANUNDO 0xF0C6 */
|
|
|
|
/**
|
|
* \def EM_UNDO
|
|
* \brief Undo operation.
|
|
*
|
|
* \code
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
*/
|
|
#define EM_UNDO 0xF0C7
|
|
|
|
/* Not use */
|
|
/**
|
|
* \def EM_FMTLINES
|
|
* \brief reserved.
|
|
*
|
|
*/
|
|
#define EM_FMTLINES 0xF0C8
|
|
|
|
/* Not use */
|
|
/**
|
|
* \def EM_LINEFROMCHAR
|
|
* \brief reserved.
|
|
*
|
|
*/
|
|
#define EM_LINEFROMCHAR 0xF0C9
|
|
|
|
/* Not use */
|
|
/**
|
|
* \def EM_SETTABSTOPS
|
|
* \brief reserved.
|
|
*
|
|
*/
|
|
#define EM_SETTABSTOPS 0xF0CB
|
|
|
|
/**
|
|
* \def EM_SETPASSWORDCHAR
|
|
* \brief Defines the character that edit control uses in conjunction with
|
|
* the ES_PASSWORD style.
|
|
*
|
|
* \code
|
|
* EM_SETPASSWORDCHAR
|
|
* char passwdChar;
|
|
*
|
|
* wParam = (WPARAM)passwdChar;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*/
|
|
#define EM_SETPASSWORDCHAR 0xF0CC
|
|
|
|
/* Not use */
|
|
#define EM_EMPTYUNDOBUFFER 0xF0CD
|
|
/* Not use */
|
|
#define EM_GETFIRSTVISIBLELINE 0xF0CE
|
|
|
|
/**
|
|
* \def EM_SETREADONLY
|
|
* \brief Sets or removes the read-only style (ES_READONLY) in an edit control.
|
|
*
|
|
* \code
|
|
* EM_SETREADONLY
|
|
* int readonly;
|
|
*
|
|
* wParam = (WPARAM)readonly;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \param readonly Indicates whether the edit control is read-only:
|
|
* - Zero\n
|
|
* Not read-only.
|
|
* - Non zero\n
|
|
* Read-only.
|
|
*/
|
|
#define EM_SETREADONLY 0xF0CF
|
|
|
|
/**
|
|
* \var typedef int (*ED_DRAWSEL_FUNC) (HWND hWnd, HDC hdc, int startx, int starty, const char* content, int len, int selout)
|
|
* \brief Type of the edit control callback function on drawing selected strings.
|
|
*
|
|
* \param hWnd Handle of the edit control.
|
|
* \param startx x value of the beginning drawing position.
|
|
* \param starty y value of the beginning drawing position.
|
|
* \param content The string which will be drawed.
|
|
* \param len Length of the string which should be drawed by this callback.
|
|
* \param selout Length of the selected string that have been drawed before calling this callback function.
|
|
*
|
|
* \return Width of the outputed strings.
|
|
*/
|
|
typedef int (*ED_DRAWSEL_FUNC) (HWND, HDC, int, int, const char*, int, int);
|
|
|
|
|
|
/**
|
|
* \def EM_SETDRAWSELECTFUNC
|
|
* \brief Sets the callback function on drawing selected chars
|
|
*
|
|
* \code
|
|
* EM_SETDRAWSELECTFUNC
|
|
* ED_DRAWSEL_FUNC drawsel;
|
|
*
|
|
* wParam = 0;
|
|
* lParam = (LPARAM)drawsel;
|
|
* \endcode
|
|
*
|
|
* \param drawsel The callback function used to draw selected strings.
|
|
*/
|
|
#define EM_SETDRAWSELECTFUNC 0xF0D0
|
|
|
|
/**
|
|
* \def EM_SETGETCARETWIDTHFUNC
|
|
* \brief Sets the callback function on getting caret width
|
|
*
|
|
* \code
|
|
* EM_SETGETCARETWIDTHFUNC
|
|
* int (*get_caret_width) (HWND, int);
|
|
*
|
|
* wParam = 0;
|
|
* lParam = (LPARAM)get_caret_width;
|
|
* \endcode
|
|
*
|
|
* \param get_caret_width The callback function used to get caret width.
|
|
* The window handle and the maximum caret width are passed as arguments.
|
|
*
|
|
* \return The desired caret width.
|
|
*/
|
|
#define EM_SETGETCARETWIDTHFUNC 0xF0D1
|
|
|
|
/*
|
|
#define EM_SETWORDBREAKPROC 0xF0D0
|
|
#define EM_GETWORDBREAKPROC 0xF0D1
|
|
*/
|
|
|
|
/**
|
|
* \def EM_GETPASSWORDCHAR
|
|
* \brief Returns the character that edit controls uses in conjunction with
|
|
* the ES_PASSWORD style.
|
|
*
|
|
* \code
|
|
* EM_GETPASSWORDCHAR
|
|
*
|
|
* wParam = 0;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \return The currently used password character
|
|
*/
|
|
#define EM_GETPASSWORDCHAR 0xF0D2
|
|
|
|
/**
|
|
* \def EM_SETLIMITTEXT
|
|
* \sa EM_LIMITTEXT
|
|
*/
|
|
#define EM_SETLIMITTEXT EM_LIMITTEXT
|
|
|
|
/**
|
|
* \def ED_CARETSHAPE_LINE
|
|
* \brief Line-shaped caret
|
|
*/
|
|
#define ED_CARETSHAPE_LINE 0
|
|
|
|
/**
|
|
* \def ED_CARETSHAPE_BLOCK
|
|
* \brief Block-shaped caret
|
|
*/
|
|
#define ED_CARETSHAPE_BLOCK 1
|
|
|
|
/**
|
|
* \def EM_CHANGECARETSHAPE
|
|
* \brief Changes the shape of the caret
|
|
*
|
|
* \code
|
|
* EM_CHANGECARETSHAPE
|
|
*
|
|
* int caret_shape;
|
|
*
|
|
* wParam = (WPARAM)caret_shape;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \param caret_shape Shape index of the caret, can be ED_CARETSHAPE_LINE or ED_CARETSHAPE_BLOCK.
|
|
*
|
|
* \return The old create shape
|
|
*/
|
|
#define EM_CHANGECARETSHAPE 0xF0D3
|
|
|
|
/**
|
|
* \def EM_REFRESHCARET
|
|
* \brief Refresh caret of the edit control
|
|
*/
|
|
#define EM_REFRESHCARET 0xF0D4
|
|
|
|
/**
|
|
* \def EM_ENABLECARET
|
|
* \brief To enable or disable the input caret
|
|
*
|
|
* \code
|
|
* EM_ENABLECARET
|
|
*
|
|
* BOOL bEnable;
|
|
*
|
|
* wParam = (WPARAM)bEnable;
|
|
* lParam = 0;
|
|
* \endcode
|
|
*
|
|
* \param bEnable TRUE to enable caret.
|
|
*
|
|
* \return The previous caret enabled status.
|
|
*/
|
|
#define EM_ENABLECARET 0xF0D5
|
|
|
|
/**
|
|
* \def EM_GETLIMITTEXT
|
|
* \brief Get text limit value of the edit control.
|
|
*
|
|
* \return -1 when user doesn't set limit value, otherwise return current
|
|
* limit value.
|
|
*/
|
|
#define EM_GETLIMITTEXT 0xF0D6
|
|
|
|
/*
|
|
* \def EM_SETMARGINS
|
|
* \brief Set the margins of edit control
|
|
*
|
|
* \code
|
|
* EM_SETMARGINS
|
|
*
|
|
* const RECT *prcMargins
|
|
*
|
|
* lParam = (LPARAM)prcMargins
|
|
* \endcode
|
|
*
|
|
* \param prcMargins : the margins info:
|
|
* - top : the top margin value
|
|
* - left: the left margin value
|
|
* - right: the right margin value
|
|
* - bottom: the bottom margin value
|
|
*
|
|
* \return ignored
|
|
*
|
|
* \sa EM_GETMARGINS
|
|
*/
|
|
#define EM_SETMARGINS 0xF0D7
|
|
|
|
/*
|
|
* \def EM_GETMARGINS
|
|
* \brief Get the margins of content
|
|
*
|
|
* \code
|
|
* EM_GETMARGINS
|
|
*
|
|
* RECT *prcMargins
|
|
*
|
|
* lParam = (LPARAM)prcMargins
|
|
* \endcode
|
|
*
|
|
* \param prcMargins : the margins info:
|
|
* - top : the top margin value
|
|
* - left: the left margin value
|
|
* - right: the right margin value
|
|
* - bottom: the bottom margin value
|
|
*
|
|
* \return TRUE / FALSE
|
|
*
|
|
* \sa EM_SETMARGINS
|
|
*/
|
|
#define EM_GETMARGINS 0xF0D8
|
|
/*
|
|
#define EM_POSFROMCHAR 0xF0D9
|
|
#define EM_CHARFROMPOS 0xF0DA
|
|
#define EM_SETIMESTATUS 0xF0DB
|
|
#define EM_GETIMESTATUS 0xF0DC
|
|
|
|
#define MEM_SCROLLCHANGE 0xF0DD
|
|
*/
|
|
|
|
/* Not use */
|
|
#define MED_STATE_YES 0x0
|
|
/* Not use */
|
|
#define MED_STATE_NOUP 0x1
|
|
/* Not use */
|
|
#define MED_STATE_NODN 0x2
|
|
/* Not use */
|
|
#define MED_STATE_NO 0x3
|
|
|
|
/**
|
|
* \def EM_SETTITLETEXT
|
|
* \brief Sets the title text displayed before content text.
|
|
*
|
|
* \code
|
|
* EM_SETTITLETEXT
|
|
* const char *title;
|
|
* int len;
|
|
*
|
|
* wParam = (WPARAM)len;
|
|
* lParam = (LPARAM)title;
|
|
* \endcode
|
|
*
|
|
* \note Implemented for TextEdit control.
|
|
*/
|
|
#define EM_SETTITLETEXT 0xF0DC
|
|
|
|
/**
|
|
* \def EM_GETTITLETEXT
|
|
* \brief Gets the title text displayed before content text.
|
|
*
|
|
* \code
|
|
* EM_GETTITLETEXT
|
|
* const char *buffer;
|
|
* int len;
|
|
*
|
|
* wParam = (WPARAM)len;
|
|
* lParam = (LPARAM)buffer;
|
|
* \endcode
|
|
*
|
|
* \param len Should be length of buffer minus 1, left space for '\\0'
|
|
* \param buffer String buffer
|
|
*
|
|
*
|
|
* \return Length of title
|
|
* \note Implemented for TextEdit control.
|
|
*/
|
|
#define EM_GETTITLETEXT 0xF0DD
|
|
|
|
/**
|
|
* \def EM_SETTIPTEXT
|
|
* \brief Sets the tip text displayed when content is empty.
|
|
*
|
|
* \code
|
|
* EM_SETTIPTEXT
|
|
* const char *buffer;
|
|
* int len;
|
|
*
|
|
* wParam = (WPARAM)len;
|
|
* lParam = (LPARAM)buffer;
|
|
* \endcode
|
|
*
|
|
*/
|
|
#define EM_SETTIPTEXT 0xF0DE
|
|
|
|
/**
|
|
* \def EM_GETTIPTEXT
|
|
* \brief Gets the tip text displayed when content is empty.
|
|
*
|
|
* \code
|
|
* EM_GETTIPTEXT
|
|
* const char *buffer;
|
|
* int len;
|
|
*
|
|
* wParam = (WPARAM)len;
|
|
* lParam = (LPARAM)buffer;
|
|
* \endcode
|
|
*
|
|
* \param len Should be length of buffer minus 1, left space for '\\0'
|
|
* \param buffer String buffer
|
|
*
|
|
* \return Length of tip text
|
|
*/
|
|
#define EM_GETTIPTEXT 0xF0DF
|
|
|
|
/**
|
|
* Structure defines text position information.
|
|
*/
|
|
typedef struct _TEXTPOSINFO {
|
|
/** The index of paragraph, if value is -1,
|
|
*it will take effect on the whole text.*/
|
|
int paragraph_index;
|
|
/** The index of line, if value is -1,
|
|
*it will take effect on the whole text.*/
|
|
int line_index;
|
|
/** The beginning byte position can be copied to the buffer.*/
|
|
int start_pos;
|
|
/** The maximal number of bytes can be copied to the buffer.
|
|
* It includes terminate character 0x0.*/
|
|
int copy_len;
|
|
/** The pointer to a buffer receives the text.
|
|
*Please make sure buffer size is more than the value of copy_len.*/
|
|
char *buff;
|
|
}TEXTPOSINFO;
|
|
|
|
/**
|
|
* \def EM_GETNUMOFPARAGRAPHS
|
|
* \brief Gets the number of paragraphs in textedit control.
|
|
*
|
|
* \return The number of paragraphs.
|
|
*/
|
|
#define EM_GETNUMOFPARAGRAPHS 0xF0E0
|
|
/**
|
|
* \def EM_GETPARAGRAPHLENGTH
|
|
* \brief Gets the specified paragraph length in textedit control.
|
|
*
|
|
* \code
|
|
* EM_GETPARAGRAPHLENGTH
|
|
* wParam = (WPARAM) index;
|
|
* \endcode
|
|
*
|
|
* \return The length of text.
|
|
*/
|
|
#define EM_GETPARAGRAPHLENGTH 0xF0E1
|
|
/**
|
|
* \def EM_GETPARAGRAPHTEXT
|
|
* \brief Gets the specified paragraph text from textedit control.
|
|
*
|
|
* \code
|
|
* EM_GETPARAGRAPHTEXT
|
|
* const char buffer[BUF_SIZE];
|
|
* TEXTPOSINFO info;
|
|
*
|
|
* info.start_pos = 0;
|
|
* info.copy_len = BUF_SIZE;
|
|
* info.buff = buffer;
|
|
* info.paragraph_index = -1;
|
|
*
|
|
* wParam = (WPARAM)&info;
|
|
* \endcode
|
|
*
|
|
* \return The copied length of text which doesn't include terminate
|
|
* character 0x0.
|
|
*/
|
|
#define EM_GETPARAGRAPHTEXT 0xF0E2
|
|
|
|
/*
|
|
* \def EM_MUSTUPDATEBKGND
|
|
* \brief Test if the bkgournd must be update
|
|
*
|
|
* \return BOOL. TRUE -- must update the bkground, texteditor would not use ScrollWindow
|
|
* FALSE -- bkground does not need to update, textditor use Scrollwindow
|
|
*
|
|
* if you want paint a image on bkground, please make this message return TRUE
|
|
*
|
|
*/
|
|
#define EM_MUSTUPDATEBKGND 0xF0E3
|
|
|
|
/**
|
|
* \def EM_SETCARETPOSBYLINE
|
|
* \brief Sets the selected point in the edit control and makes
|
|
* the text between insertion point and selection point selected.
|
|
* This is set by really line. That means if you set the TES_AUTOWRAP,
|
|
* the line number you set, the caret pos line number you see. This is
|
|
* different from EM_SETCARETPOS.
|
|
*
|
|
*
|
|
* \code
|
|
* EM_SETCARETPOSBYLINE
|
|
*
|
|
* int line_pos;
|
|
* int char_pos;
|
|
*
|
|
* wParam = (WPARAM)line_pos;
|
|
* lParam = (LPARAM)char_pos;
|
|
* \endcode
|
|
*
|
|
* \param line_pos Line position of the selection point.
|
|
* For single line editor, it is always zero.
|
|
* Note : For multi-line editor, "line" means a text string ended with a line
|
|
* seperator, in wrap mode there also is the really line number. So, char_pos
|
|
* means the character position in a text string.
|
|
* \param char_pos Character(wide character) position of the selection point.
|
|
*
|
|
* \return Length of the selected string
|
|
*/
|
|
#define EM_SETCARETPOSBYLINE 0xF0D9
|
|
|
|
/**
|
|
* \def EM_GETCARETPOSBYLINE
|
|
* \brief Gets the position of the caret.
|
|
*
|
|
* \code
|
|
* EM_GETCARETPOSBYLINE
|
|
* int* line_pos;
|
|
* int* char_pos;
|
|
*
|
|
* wParam = (WPARAM)line_pos;
|
|
* lParam = (LPARAM)char_pos;
|
|
* \endcode
|
|
*
|
|
* \param line_pos Pointer to a integer buffer to save the caret line position.
|
|
* For single line editor, it is always zero.
|
|
* \param char_pos Pointer to a integer buffer to save the caret character position.
|
|
*
|
|
* \return The string length of the text from the beginning to the caret pos.
|
|
*/
|
|
|
|
#define EM_GETCARETPOSBYLINE 0xF0DA
|
|
|
|
/**
|
|
* \def EM_SETSELPOSBYLINE
|
|
* \sa EM_SETSELBYLINE
|
|
*/
|
|
#define EM_SETSELPOSBYLINE 0xF0DB
|
|
|
|
/**
|
|
* \def EM_GETSELPOSBYLINE
|
|
* \brief Gets the position of the selection point.
|
|
*
|
|
* \code
|
|
* EM_GETSELPOSBYLINE
|
|
* int* line_pos;
|
|
* int* char_pos;
|
|
*
|
|
* wParam = (WPARAM)line_pos;
|
|
* lParam = (LPARAM)char_pos;
|
|
* \endcode
|
|
*
|
|
* \param line_pos Pointer to a integer buffer to save the selection line position.
|
|
* For single line editor, it is always zero.
|
|
* \param char_pos Pointer to a integer buffer to save the selection character position.
|
|
*
|
|
* \return The string length of the text from the beginning to the selection point.
|
|
*/
|
|
#define EM_GETSELPOSBYLINE 0xF0E4
|
|
|
|
/**
|
|
* \def EM_GETPARAGRAPHLENGTHINMCHAR
|
|
* \brief Gets the specified paragraph length in textedit control.
|
|
* in text not charactors.
|
|
*
|
|
* \code
|
|
* EM_GETPARAGRAPHLENGTHINCHAR
|
|
* wParam = (WPARAM) index;
|
|
* \endcode
|
|
*
|
|
* \return The length of text.
|
|
*/
|
|
#define EM_GETPARAGRAPHLENGTHINMCHAR 0xF0E5
|
|
|
|
/**
|
|
* \def EM_GETLINELENGTHINMCHAR
|
|
* \brief Gets the specified line length in textedit control.
|
|
* in charactors not byte.
|
|
*
|
|
* \code
|
|
* EM_GETLINELENGTHINMCHAR
|
|
* wParam = (WPARAM) index;
|
|
* \endcode
|
|
*
|
|
* \return The length of text.
|
|
*/
|
|
#define EM_GETLINELENGTHINMCHAR 0xF0E6
|
|
|
|
/**
|
|
* \def EM_GETLINELENGTH
|
|
* \brief Gets the specified line length in textedit control.
|
|
*
|
|
* \code
|
|
* EM_GETLINELENGTH
|
|
* wParam = (WPARAM) index;
|
|
* \endcode
|
|
*
|
|
* \return The length of text.
|
|
*/
|
|
#define EM_GETLINELENGTH 0xF0E7
|
|
|
|
/**
|
|
* \def EM_GETLINETEXT
|
|
* \brief Gets the specified line text from textedit control.
|
|
*
|
|
* \code
|
|
* EM_GETLINETEXT
|
|
* const char buffer[BUF_SIZE];
|
|
* TEXTPOSINFO info;
|
|
*
|
|
* info.start_pos = 0;
|
|
* info.copy_len = BUF_SIZE;
|
|
* info.buff = buffer;
|
|
* info.line_index = -1;
|
|
*
|
|
* wParam = (WPARAM)&info;
|
|
* \endcode
|
|
*
|
|
* \return The copied length of text which doesn't include terminate
|
|
* character 0x0.
|
|
*/
|
|
#define EM_GETLINETEXT 0xF0E8
|
|
|
|
#define EM_MSGMAX 0xF0EA
|
|
|
|
/** @} end of ctrl_edit_msgs */
|
|
|
|
/**
|
|
* \defgroup ctrl_edit_ncs Notification codes of edit control
|
|
* @{
|
|
*/
|
|
|
|
#define EN_ERRSPACE 255
|
|
|
|
/**
|
|
* \def EN_CLICKED
|
|
* \brief Notifies a click in an edit control.
|
|
*
|
|
* An edit control sends the EN_CLICKED notification code when the user clicks
|
|
* in an edit control.
|
|
*/
|
|
#define EN_CLICKED 0x0001
|
|
|
|
/**
|
|
* \def EN_DBLCLK
|
|
* \brief Notifies a double click in an edit control.
|
|
*
|
|
* An edit control sends the EN_CLICKED notification code when the user
|
|
* double clicks in an edit control.
|
|
*/
|
|
#define EN_DBLCLK 0x0002
|
|
|
|
/**
|
|
* \def EN_SETFOCUS
|
|
* \brief Notifies the receipt of the input focus.
|
|
*
|
|
* The EN_SETFOCUS notification code is sent when an edit control receives
|
|
* the input focus.
|
|
*/
|
|
#define EN_SETFOCUS 0x0100
|
|
|
|
/**
|
|
* \def EN_KILLFOCUS
|
|
* \brief Notifies the lost of the input focus.
|
|
*
|
|
* The EN_KILLFOCUS notification code is sent when an edit control loses
|
|
* the input focus.
|
|
*/
|
|
#define EN_KILLFOCUS 0x0200
|
|
|
|
/**
|
|
* \def EN_CHANGE
|
|
* \brief Notifies that the text is altered by the user.
|
|
*
|
|
* An edit control sends the EN_CHANGE notification code when the user takes
|
|
* an action that may have altered text in an edit control.
|
|
*/
|
|
#define EN_CHANGE 0x0300
|
|
|
|
/**
|
|
* \def EN_UPDATE
|
|
* \brief Notifies that the text is altered by sending MSG_SETTEXT
|
|
* TEM_RESETCONTENT, or EM_SETLINEHEIGHT message to it.
|
|
*
|
|
* An edit control sends the EN_UPDATE notification code when the control
|
|
* received MSG_SETTEXT, TEM_RESETCONTENT, or EM_SETLINEHEIGHT message.
|
|
*
|
|
* Note that this notification will occured when you call SetWindowText or
|
|
* SetDlgItemText function on the control.
|
|
*/
|
|
#define EN_UPDATE 0x0400
|
|
|
|
/**
|
|
* \def EN_MAXTEXT
|
|
* \brief Notifies reach of maximum text limitation.
|
|
*
|
|
* The EN_MAXTEXT notification message is sent when the current text
|
|
* insertion has exceeded the specified number of characters for the edit control.
|
|
*/
|
|
#define EN_MAXTEXT 0x0501
|
|
|
|
/* Not use */
|
|
#define EN_HSCROLL 0x0601
|
|
/* Not use */
|
|
#define EN_VSCROLL 0x0602
|
|
|
|
|
|
/**
|
|
* \def EN_SELCHANGED
|
|
* \brief Notifies that the current selection is changed in the text field.
|
|
*/
|
|
#define EN_SELCHANGED 0x0603
|
|
|
|
/**
|
|
* \def EN_CONTCHANGED
|
|
* \brief Notifies that the current content is changed in the text field
|
|
* when text edit losts focus.
|
|
*/
|
|
#define EN_CONTCHANGED 0x0604
|
|
|
|
/**
|
|
* \def EN_ENTER
|
|
* \brief Notifies the user has type the ENTER key in a single-line edit control.
|
|
*/
|
|
#define EN_ENTER 0x0700
|
|
|
|
/** @} end of ctrl_edit_ncs */
|
|
|
|
/* Edit control EM_SETMARGIN parameters */
|
|
/**
|
|
* \def EC_LEFTMARGIN
|
|
* \brief Value of wParam. Specifies the left margins to set.
|
|
*/
|
|
#define EC_LEFTMARGIN 0x0001
|
|
/**
|
|
* \def EC_RIGHTMARGIN
|
|
* \brief Value of wParam. Specifies the right margins to set.
|
|
*/
|
|
#define EC_RIGHTMARGIN 0x0002
|
|
/**
|
|
* \def EC_USEFONTINFO
|
|
* \brief Value of wParam. Specifies the user font info to set.
|
|
*/
|
|
#define EC_USEFONTINFO 0xffff
|
|
|
|
/* wParam of EM_GET/SETIMESTATUS */
|
|
/**
|
|
* \def EMSIS_COMPOSITIONSTRING
|
|
* \brief Indicates the type of status to retrieve.
|
|
*/
|
|
#define EMSIS_COMPOSITIONSTRING 0x0001
|
|
|
|
/* lParam for EMSIS_COMPOSITIONSTRING */
|
|
/**
|
|
* \def EIMES_GETCOMPSTRATONCE
|
|
* \brief lParam for EMSIS_COMPOSITIONSTRING(reserved).
|
|
*/
|
|
#define EIMES_GETCOMPSTRATONCE 0x0001
|
|
/**
|
|
* \def EIMES_CANCELCOMPSTRINFOCUS
|
|
* \brief lParam for EMSIS_COMPOSITIONSTRING(reserved).
|
|
*/
|
|
#define EIMES_CANCELCOMPSTRINFOCUS 0x0002
|
|
/**
|
|
* \def EIMES_COMPLETECOMPSTRKILLFOCUS
|
|
* \brief lParam for EMSIS_COMPOSITIONSTRING(reserved).
|
|
*/
|
|
#define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004
|
|
|
|
/** @} end of ctrl_edit */
|
|
|
|
/** @} end of controls */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* _MGUI_CTRL_EDIT_H */
|
|
|