编辑控件(edit)

MFC 专栏收录该内容
139 篇文章 0 订阅

原文地址:http://hi.baidu.com/dbfr2011818/item/a85c9c16a0df57cc38cb301f

编辑框(Edit)控件实际上是一个简易的文本编辑器,用户可以在编辑框中输入可添加或插入文本。还有复制、粘贴、剪切、删除等编辑功能。
  应用程序用CreateWindowEx创建编辑框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。

Edit Styles

常数 说明

                   ES_MULTILINE 多行文本,指定编辑控件可以多行文本编辑,用户每按一次Enter,在当前光标次输入一个回车换行符(0Dh,0Ah),文本增加一行。

                   ES_LEFT 文本显示居左。

                   ES_CENTER 文本显示居中。

                   ES_RIGHT 文本显示居右。

                   ES_LOWERCASE 把用户输入的字母统统转换成小写字母。

                   ES_UPPERCASE 把用户输入的字母统统转换成大写字母。

                   ES_OEMCONVERT 使编辑框中的正文可以在ANSI字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的。

                   ES_AUTOHSCROLL 当用户在行尾键入一个字符时,正文将自动向右滚动10个字符,当用户按回车键时,正文总是滚向左边。

                   ES_AUTOVSCROLL 当用户在最后一个可见行按回车键时,正文向上滚动一页。

                   ES_NUMBER 只接收数码输入,其它字符输入一律无效。

                   ES_NOHIDESEL 当编辑框失去输入焦点,正文中的选择保持不变,缺省时正文中的选择将失效。

                   ES_READONLY 将编辑框设置成只读的。 ES_PASSWORD 使所有键入的字符都用“*”来显示。

                   ES_WANTRETURN 使多行编辑器接收回车键输入并换行。

        如果不指定该风格,按回车键会选择缺省的命令按钮,这往往会导致对话框的关闭。
  当用户在编辑控件上进行各种操作时,其父窗口将收到WM_COMMAND通知消息,同时wParam的低16位带控件的ID。lParam带控件句柄(hWnd),wParam的高16位带有如下表的消息代码。

                    消息代码 用户操作

                 EN_CHANGE 编辑框的内容被用户改变了。

                 与EN_UPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的。

                 EN_ERRSPACE 编辑框控件无法申请足够的动态内存来满足需要。

                 EN_HSCROLL 用户在水平滚动条上单击鼠标。

                 EN_KILLFOCUS 编辑框失去输入焦点。

                 EN_MAXTEXT 输入的字符超过了规定的最大字符数。在没有ES_AUTOHSCROLL或ES_AUTOVSCROLL的编辑框中,当正文超出了编辑框的边框时也会发出该消息。

                 EN_SETFOCUS 编辑框获得输入焦点。

                 EN_UPDATE 在编辑框准备显示改变了的正文时发送该消息。

                 EN_VSCROLL 用户在垂直滚动条上单击鼠标。
  应用程序可以通过调用SendMessage向控件发送如下消息来设定和查询控件各种参数。

                  uMsg wParam lParam 说明

                   EM_UNDO 0 0 撤消前一次在控件的编辑操作,当重复发送本消息,控件将在撤消和恢复中来回切换。

                   EM_CANUNDO 0 0 检测控件撤消缓冲区是否为空,通常控件把最后一次在控件的编辑操作保存在一个撤消缓冲区,如果缓冲区非空则返回TRUE表示上次操作可以撤消,否则返回FALSE,应用程序可以利用该返回值来禁止或允许菜单或工具条的“撤消”项。

                  EM_EMPTYUNDOBUFFER 0 0 清除控件的撤消缓冲区,使其不能撤消前一次编辑操作。

                  EM_REPLACESEL TRUE或FALSE 替换文本指针 用指定文本替换编辑控件中的当前选定内容,如果wParam为TRUE,则本次操作允许撤消,FALSE禁止撤消。         

                   EM_SETSEL 起点 终点 设置编辑控件中文本选定内容范围,该范围被高亮度显示,用于为复制、替换、粘贴、剪切、删除等编辑功能指定范围。

                    使用本功能,键盘光标将被移至指定的终点后面,通常使用指定相同起点和终点来移动键盘光标而不选定范围。当指定的起点等于0和终点等于-1时,全文全部被选中,此法常用在清空编辑控件。当指定的起点等于-2和终点等于-1时,全文均不选,键盘光标移至文本未端,此法常用在文本未端追加内容。

             注意:当控件没有输入焦点时,本操作将会失败,一般在执行本操作前都应调用SetFocus先取得输入焦点。

                   EM_GETSEL 起点缓冲地址或NULL 终点缓冲地址或NULL 取得编辑控件中选定内容的范围,返回值中低16位为起点与高16位为终点,如果wParam和lParam中指定了地址,则会在该地址填入相应值(dword)。本操作也常用来求取键盘光标位置。

                    EM_CHARFROMPOS 0 位置 取得指定位置处的字符相对于文本头部的偏移,使用本操作应先在lParam的高16位指定行号,低16位指定列号,行列是按编辑控件的客户区左上角为原点(0,0)计算的。如果指定的位置超出控件客户区则返回-1

                     EM_FMTLINES TRUE或FALSE 0 决定是否在取回的文本宇串中包含软回车字符

                     EM_GETFIRSTVISIBLELINE 0 0 取得编辑控件中显示的第一行

                     EM_GETHANDLE 0 0 取得编辑控件文本缓冲区。

                     EM_GETLIMITTEXT 0 0 获取一个编辑控件中文本的最大长度

                     EM_GETLINE 行号 缓冲地址 从编辑控件取回一行的内容,缓冲区第一个字(word)必须先填写缓冲区的长度,

                     EM_GETLINECOUNT 0 0 取得一个编辑控件的总行数

                     EM_GETMARGINS 0 0 获取编辑控件的左、右边距,返回值低16位为左边距,高16位为右边距

                     EM_GETMODIFY 0 0 取编辑控件的修改标志,返回 TRUE则控件文本已被修改,返回FALSE则未变。此值可以来决定是否提示用户存盘。                                                      

                     EM_GETPASSWORDCHAR 0 0 取得编辑控件用来显示密码的字符,返回NULL表示没有字符。

                     EM_GETRECT 0 RECT结构地址 获取一个编辑控件的格式化矩形

                     EM_GETTHUMB 0 0 取得多行文本编辑控件的滚动框的当前位置。

                     EM_GETWORDBREAKPROC 0 0 取得整字换行回调函数EditWordBreakProc指针。

                     EM_LIMITTEXT 最大值 0 限制编辑中文本的最大长度

                     EM_LINEFROMCHAR 字符偏移 0 取得指定的字符偏移处的行号。

                     EM_LINEINDEX 行号 0 取得指定行第一个字符偏移

                     EM_LINELENGTH 字符偏移 0 取得指定字符偏移处对应的一行长度字符数。

                     EM_LINESCROLL 列字符 行数 滚动编辑控件

                     EM_POSFROMCHAR POINT结构地址 字符偏移 取得指定字符偏移的显示位置行列号,行列是按编辑控件的客户区左上角为原点(0,0)计算的。字符偏移是相对于文本头部的偏移。

                     EM_SCROLL

                        SB_LINEDOWN
                        SB_LINEUP
                        SB_PAGEDOWN
                        SB_PAGEUP

                        0 编辑框显示文本垂直滚动。滚动方向:SB_LINEDOWN向下滚动一行,SB_LINEUP向上滚动一行,SB_PAGEDOWN向下滚动一页,SB_PAGEUP向上滚动一页。

                     EM_SCROLLCARET 0 0 把键盘光标移至可见范围。

                     EM_SETHANDLE 缓冲区指针 0 为编辑控件指定新的文本缓冲区。此操作仅适用对话框创建带DS_LOCALEDIT风格的控件。

                     EM_SETLIMITTEXT 长度(字节) 0 限制编辑控件中的文本缓冲区最大长度。

                     EM_SETMARGINS

                            EC_LEFTMARGIN
                            EC_RIGHTMARGIN
                            EC_USEFONTINFO

                    边距 设置编辑控件的左、右边距,当wParam含EC_LEFTMARGIN时在lParam的低16位指定左边距点数,当wParam含EC_RIGHTMARGIN时在lParam的高16位指定右边距点数。当指定wParam为EC_USEFONTINFO时,则用当前字体的字符"A"的宽度指定右边距和字符"C"的宽度指定左边距lParam被忽略。

                  EM_SETMODIFY TRUE或FALSE 0 用于设置或清除一个编辑控件的修改标志

                  EM_SETPASSWORDCHAR 字符 0 指定控件用来显示密码字符,缺省为“*”。当wParam为0时,本操作将清除控件的ES_PASSWORD风格,并按实际字符显示。

                  EM_SETREADONLY TRUE或FALSE 0 决定是否将编辑控件设为只读,同时决定控件的ES_READONLY风格

                  EM_SETRECT 0 RECT结构地址 为一个编辑控件设置格式化矩形

                  EM_SETRECTNP 0 RECT结构地址 与EM_SETRECT类似,只是控件此时不会重画         

                  EM_SETTABSTOPS 制表站数 站距表地址 设置编辑控件中的制表站间距,当制表站数为0时lParam被忽略,所有制表站距均为32个对话框单位,当制表站数不为0时lParam指向一个由32位(dword)组成的站距表,以对话框单位为宽度计算单位。

                     EM_SETWORDBREAK 0 0 本操作现已不支持,请使用EM_SETWORDBREAKPROC。

                     EM_SETWORDBREAKPROC 0 函数入口地址 设置整字换行回调函数EditWordBreakProc指针。

具体参考msdn

/*
EM_CANUNDO
	The EM_CANUNDO message determines whether there are any actions in an edit control's undo queue. You can send this message to either an edit control or a rich edit control.

	To send this message, call the SendMessage function with the following parameters. 

	SendMessage( 
	(HWND) hWnd,              // handle to destination window 
	EM_CANUNDO,               // message to send
	(WPARAM) wParam,          // not used; must be zero
	(LPARAM) lParam          // not used; must be zero
	);
Parameters
	This message has no parameters. 

	Return Values
	If there are actions in the control's undo queue, the return value is nonzero.

	If the undo queue is empty, the return value is zero.

	Remarks
	If the undo queue is not empty, you can send the EM_UNDO message to the control to undo the most recent operation.

	Edit controls and Rich Edit 1.0: The undo queue contains only the most recent operation.

	Rich Edit 2.0 and later: The undo queue can contain multiple operations. 

	Rich Edit: For information about the compatibility of rich edit versions with the various system versions, see About Rich Edit Controls. 

	Requirements 
	Windows NT/2000: Requires Windows NT 3.1 or later.
	Windows 95/98: Requires Windows 95 or later.
Version: Requires Rich Edit 1.0 or later.
Header: Declared in Winuser.h; include Windows.h.
*/

其他的详细请参考msdn

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

kuankuan_qiao

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值