/** * \file edit.h * \author Wei Yongming * \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 . 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 . \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 */