CEdit类的一些用法

CEdit类提供了Windows 编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit构造程序构造CEdit对象,再调用Create成员函数创建Windows 编辑控件并将其与CEdit对象连接。构造在CEdit的派生类中可以单步实现。为派生类编写构造程序并从构造程序中调用Create。CEdit从CWnd 继承了重要的功能,要在CEdit对象中设置或获取文本,使用CWnd 成员函数SetWindowText和GetWindowText,可以设置和得到编辑控件的全部内容,即使它是一个多行控件。如果编辑控件是多行的,使用CEdit成员函数GetLine,GetSel,GetSel和ReplaceSel来获取和写入控件的部分文本。

 

如果要处理编辑控件发往其父类(通常是一个CDialog派生类)的通知消息,则向父类中为每一消息添加一个消息映射入口和消息处理成员函数。各消息映射入口可采用如下形式:

ON_Notification(id,memberFxn)

其中id指定了发送通知的编辑控件的子窗口ID,memberFxn为你写好的处理通知的父成员函数的名字。父函数形式如下:

afx_msg void memberFxn();

下面是一组可能的消息映射入口,以及在何种情况下向父类发送的描述:

ON_EN_CHANGE     用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在

                 Windows更新显示之后发送的。

ON_EN_ERRSPACE   编辑控件不能为特定请求分配足够的空间。

ON_EN_HSCROLL    用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。

ON_EN_KILLFOCUS  编辑控件失去输入焦点。

ON_EN_MAXTEXT    当前输入超过了为编辑控件指定的数目,并作截尾处理。当编辑控件不具有

                 ON_EN_HSCROLL风格且要输入的字符会超过编辑控件的宽度时,发送消息。当编辑控件

                 不具有ON_EN_VSCROLL风格且要输入的字符会超过编辑控件的高度时,也会发送消息。

ON_EN_SETFOCUS   编辑控件获得焦点。

ON_EN_UPDATE     编辑控件将要显示变动的文本。在控件对文本格式化之后但在显示文本之前发送消息,

                 以便在必要时改变窗口尺寸。

ON_EN_VSCROLL    用户单击了编辑控件中的垂直滚动条,父窗口在屏幕更新之前被通知。

 

如果在对话框内创建CEdit对象,CEdit对象在用户关闭对话框时自动被删除。如果使用对话框编辑器从对话资源中创建CEdit对象,CEdit对象在用户关闭对话框时自动被删除。如果在窗口内创建CEdit对象,也需要删除它。如果在栈上创建CEdit对象,它被自动删除。如果使用new函数在堆上创建CEdit对象,在用户中止编辑控件时,必须对其调用delete来删除它。如果在CEdit对象中分配存储空间,覆盖CEdit析构程序来处理分配情况。关于CEdit的更多信息,请参阅联机文档“VisualC++程序员指南”中的“控件主题”。

#include

请参阅  CWnd,CButton,CComboBox,CListBox,CScrollBar,CStatic,CDialog

 

CEdit类的成员

构造函数

CEdit    构造一个CEdit控件对象

Create   创建一个Windows编辑控件,并将其与CEdit对象连接CEdit

属性

CanUndo        决定一个编辑控件操作是否能够被撤销

GetLineCount   获得多行编辑控件中的行数GetModify决定编辑控件的内容是否被修改SetModify为编辑控

               件设置或清除修改标记

GetRect        为编辑控件获取格式化的矩形

GetHandle      获得为当前多行编辑控件分配的内存的句柄

SetHandle      设置为多行编辑控件使用的本地内存的句柄

SetMargins     为CEdit设置左边和右边的空白边界

GetMargins     获得为CEdit设置左边和右边的空白边界

SetLimitText   设置CEdit能够容纳的文本的最大量

GetLimitText   获得CEdit能够容纳的文本的最大量

PosFromChar    获得指定字符索引的左上角的坐标

CharFromPos    获得最靠近指定位置的字符的行和字符索引

GetLine        从编辑控件中获得一行文本

GetPasswordChar          获得当用户输入文本时在编辑控件中显示的口令

GetFirstVisibleLeLine    决定在编辑控件中最顶部的可视的行

 

CEdit 操作

EmptyUndoBuffer      重新设置(清除)编辑控件的撤销标记

FmtLines             设置在多行编辑控件中的软回车打开或关闭

LimitText            用户在输入文本时的文本长度限制

LineFromChar         获得包含指定字符索引的行的数目

LineIndex            获得在多行编辑控件中的某行的字符索引

LineLength           获得编辑控件中的行的长度

LineScroll           在多行编辑控件中滚动文本

ReplaceSel           用指定文本覆盖编辑控件中当前被选中的文本

SetPasswordChar      设置或清除当用户输入文本时在编辑控件中显示的口令

SetRect              设置多行编辑控件的带格式的矩形,并更新该控件

SetRectNP            设置多行编辑控件的带格式的矩形,而不必重新绘制

SetSel               在编辑控件中选定文本

SetTabStops          设置多行编辑控件的制表键停顿位

SetReadOnly          为编辑控件设置只读状态

 

CEdit剪贴板操作

Undo           撤销上一次的编辑控件操作

Clear          删除(清除)编辑控件中当前选中的文本

Copy           将编辑控件中的当前选中文本以CF_TEXT格式拷贝到剪贴板中

Cut            删除编辑控件中当前选中的文本,并将删除的文本以CF_TEXT格式拷贝到剪贴板中

Paste          在当前光标位置插入剪贴板内的文本。只有在剪贴板数据为CF_TEXT格式时才进行插入

 

CEdit::CanUndo

BOOL CanUndo() const;

返回值如果上一次编辑操作可以用Undo成员函数撤销,则返回非零值,否则为0。说明调用该函数来决定上一次编辑操作是否可以撤销。

要了解更多信息,请参阅Win 32文档中的EM_CANUNDO 。请参阅  CEdit::Undo,CEdit::EmptyUndoBuffer

 

CEdit::CEditCEdit();说明构造一个CEdit对象。使用Create来创建Windows 编辑控件。

请参阅  CEdit::Create

 

CEdit::CharFromPos

int CharFromPos(CPointpt) const;

返回值返回WORD低位的字符索引,以及WORD高位的行索引。参数pt在客户区域中的CEdit对象的点的坐标。说明调用该函数来获取基于0索引的行和最接近CEdit控件中指定点的字符索引。

注意  该成员函数在Windows 95和Windows NT 4.0中有效。

要了解更多的信息,请参阅Win 32文档中的EM_CHARFROMMOPS。请参阅  CEdit::PosFromChar

 

CEdit::Clear

void Clear();

说明调用该函数来删除(清除)编辑控件中当前选中的文本。

由Clear进行的操作可以通过调用Undo成员函数撤销。要删除当前选定文本并将其拷贝到剪贴板上,调用Cut成员函数。要了解更多的信息,请参阅Win32文档中的WM_CLEAR。请参阅 CEdit::Undo,CEdit::Copy,CEdit::Cut,CEdit::Paste

 

CEdit::Copyv

oid Copy();

说明调用该函数将编辑控件中的当前选中文本以CF_TEXT格式拷贝到剪贴板中。要了解更多的信息,请参阅Win 32文档中的WM_COPY。请参阅  CEdit::Clear,CEdit::Cut,CEdit::Paste

 

CEdit::Create

BOOL Create(DWORDdwStyle,const RECT&rect,CWnd*pParentWnd,UNIT nID);

返回值初始化成功,则返回非零值,否则为0。参数dwStyle指定编辑控件的风格。可以组合使用控件的编辑风格。

 

rect          指定控件的尺寸和位置。可以是RECT结构或CRect对象 。

pParentWnd    指定编辑控件的父窗口(通常使用CDialog )。其值不能为NULL。

nID           指定编辑控件的ID。

 

说明

构造CEdit对象分两步。首先调用CEdit构造程序,再调用Create,这样就创建了一个Windows 编辑控件,并将其与CEdit对象连接。当执行Create时,Windows 发送WM_NCCREATE ,WM_NCCALCSIZE,WM_CREATE 和WM_GETMINMAXINFO 消息到编辑控件。

缺省地,这些消息由CWnd 基类中的OnNcCalcSize,OnCreate,OnNcCreate和OnGetMinMaxInfo成员函数处理。要扩展缺省的消息处理,先从CEdit派生一个类,为新类添加消息映射并覆盖上述消息处理成员函数。例如,覆盖OnCreate为新类执行所需要的初始化操作。

可以为编辑控件应用如下的风格:

WS_CHILD     总是采用

WS_VISIBLE   经常采用

WS_DISABLED  很少采用

WS_GROUP     组合控件

WS_TABSTOP   按制表键次序包含编辑控件

请参阅  CEdit::CEdit

 

CEdit::Cut

void Cut();

说明调用该函数来删除(剪切)在编辑控件中的当前选定文本,并将其用CF_TEXT格式拷贝到剪贴板中。由Cut执行的删除可以由Undo成员函数来撤销。删除当前选定部分而不将已删除文本置于剪贴板,调用Clear成员函数。要了解更多的信息,请参阅Win 32文档中的WM_CUT。请参阅  CEdit::Undo,CEdit::Clear,CEdit::Copy,CEdit::Paste

 

CEdit::EmptyUndoBuffer

Void EmptyUndoBuffer();

说明调用此成员函数重新设置(清除)一个编辑控件中的撤消标记,使编辑控件不可撤消最近一次操作。撤消标记在编辑控件的某个操作可以撤消时建立。当调用SetWindows 或SetHandle Cwnd成员函数时,撤消标记自动被清除。要了解更多的信息,请参阅Win32文档中的EM_EMPTYUNDOBUFFER。请参阅  CEdit::CanUndo,CEdit::SetHandle, CEdit::Undo,CWnd::SetWindowText

 

CEdit::FmtLines

BOOL  FmtLines(BOOL bAddEOL);

返回值如果发生格式化,则返回非零值,否则为0。

参数

    bAddEOl

    指定是否要插入软断行符,值为True时插入软断行符,为False时去掉软断行符。说明调用此成员函数用于设置在一个多行编辑控件中是否包含软断行符。一个软断行符包含在断行行末插入两个回车和一个换行,这是因为一行可容纳的文字有限。而一个硬断行符包含一个回车和一个断行。以硬断行符结束的行不受FmtLines的影响。

仅在CEdit对象是一个多行编辑控件时Windows才响应此命令。FmtLines仅影响GetHandle返回的缓冲区和WM_GETTEXT返回的文本,而对编辑控件中的显示无影响。

要了解更多信息,请参阅Win32文档中的EM_FMTLINES。

请参阅  CEdit::GetHandle,CWnd::GetWindowText

 

CEdit::GetFirstVisibleLine

intGetFirstVisibleLine()const;

返回值可视的最顶端行的行号(行号由0开始),对单行编辑控件来说,返回值为0。说明调用此成员函数决定编辑控件中可视的最顶端行的行号。

要了解更多信息,请参阅Win32文档中的EM_GETFIRSTVISIBLELINE。

请参阅  CEdit::GetLine

 

CEdit::GetHandle

HLOCAL GetHandle() const;

返回值一个用于标识编辑控件内容的局部内存句柄。如果发生错误,例如发送信息到一个单行编辑控件,则返回值为0。说明调用此成员函数来获取一个多行编辑控件中当前分配的内存句柄。此句柄是一个局部内存句柄,可被任何局部Windows存储函数作为一个参数来获得。

GetHandle仅仅被多行编辑控件处理。

在一个多行编辑控件的对话框中调用此成员函数时,对话框必须由DS_LOCAL-EDIT的样式标志集生成。如果不是,虽然也可以得到一个非零的返回值,但此返回值不可被使用。

注意 

      GetHandle不可在Windows 95下运行。如果在Windows 95下调用,会返回NULL。GetHandle可在WindowsNT 3.51版及以上使用。要了解有关的更多信息,请参阅Win32文档中的EM_GETHANDLE。

请参阅  CEdit::SetHandle

 

CEdit::GetLimitText

UINT GetLimitText()const;

返回值对当前CEdit对象的文本大小限制,以字节计算。说明调用此成员函数来获取该CEdit对象的文本大小限制,文本限制是此编辑控件可以接收的文本的最大长度(以字节计算)。

注意 

     此成员函数仅在Windows 95和WindowsNT 4.0以上版本中可用。要了解更多信息,请参阅Win32文档中的EM_GETLIMITTEXT。

请参阅  CEdit::SetLimitText,CEdit::LimitText

 

CEdit::GetLine

int GetLine(int nIndex,LPCTSTR lpszBuffer) const;

int GetLine(int nIndex,LPCTSTR lpszBuffer, int nMaxLength) const;

返回值实际拷贝的字节数。如果由nIndex指定的行号大于此编辑控件的行数,则返回值为0。

参数

nIndex    指定从多行编辑控件中检索的行的行号,行号由0指定。对单行编辑控件,此参数被忽略。

lpszBuffer指向获取此行备份的缓冲区。缓冲区的第一个字必须指定能被拷贝到缓冲区的最大字节数。  nMaxLength指定能被拷贝到缓冲区的最大字节数,GetLine在调用Windows之前将此值放置到lpszBuffer的第一个字中。说明调用此成员函数从编辑控件中获取文本的一行并将其放置到lpszBuffer缓冲区。被拷贝的行不包括空终止符。要了解更多信息,请参阅Win32文档中的EM_GETLINE。

 

 

 

 

CEdit::GetLineCount
Int GetLineCount()const;
返回值
在多行编辑控件中的包含的一个整数总行数。如果没有向控件输入任何文本,则返回值为1。
说明调用此成员函数获取一个多行编辑控件中的总行数。此函数仅应用于多行编辑控件。
要了解更多信息,请参阅Win32文档中的EM_GETLINECOUNT。

 

CEdit::GetMargins
DWORD GetMargins()const;
返回值
双字的低字位为左边距,高字位为右边距。
说明调用此成员函数获取编辑控件的左右边距,以像素表示。
注意  此成员函数仅在Windows 95和Windows NT 4.0以上版本中可用。
要了解更多信息,请参阅Win32文档中的EM_GETMARGINS。
请参阅  CEdit::SetMargins

 

CEdit::GetModify
BOOL  GetModify()const
返回值
      如果编辑控件的内容被改变,则返回值为非零,否则为0。
说明

    调用此成员函数测试编辑控件的内容是否被改变。Windows有一个内部标记来表明编辑控件的内容是否被改变。当编辑控件首次被创建时此标记被清除,在调用SetModify成员函数时也被清除。
要了解更多信息,请参阅Win32文档中的EM_GETMODIFY。
请参阅  CEdit::SetModify

 

CEdit::GetPasswordChar

TCHARGetPasswordChar()const;
返回值
    指定在用户输入字符处显示的字符。如果无密码,则返回NULL。
说明

    调用此成员函数获取在用户输入密码时所显示的密码字符。如果编辑控件是用ES_PASSWORD风格建立的,则缺省的密码字符为一个星号(* )。
要了解更多信息,请参阅Win32文档中的EM_GETPASSWORDCHAR。
请参阅  CEdit::SetPasswordChar

 

CEdit::GetRect
void GetRect(LPRECT lpRect)const;
参数

   lpRect   指向RECT结构以接收格式化矩形。
说明

    调用此成员函数获取一个编辑控件的格式化矩形。此格式化矩形为文本的边界矩形,与编辑控件窗口的大小无关。多行编辑控件的格式化矩形可以被SetRect和SetRectNP成员函数改变。
要了解更多信息,请参阅Win32文档中的EM_GETRECT。
请参阅  CEdit::SetRect,CEdit::SetRectNP

 

CEdit::GetSel
DWORD GetSel()const;
void GetSel(int& nStartChar,int& nEndChar)const;
返回值
      此版本返回一个双字,其低位字为起始位置,高位字为第一个未被选中的字符的位置。

参数

   nStartChar    指向当前选中部分的第一个字符位置,用整数表示。

   nEndChar      指向第一个未被选中的字符的位置,用整数表示。
说明

     调用此成员函数获取一个编辑控件中当前被选中部分(如果有)的起始和结束位置,可用参数也可用返回值。
要了解更多信息,请参阅Win32文档中的EM_GETSEL。
请参阅  CEdit::SetSel

 

CEdit::LimitText
void LimitText(int nChars=0);
参数

   nChars    指定用户可以输入的文本的长度(以字节枚举)。如果参数为0,则长度设置为UINT_MAX个字节,这是缺省情况。
说明

    调用此成员函数限定用户可以向编辑控件中输入的文本的长度。改变文本限定使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用CWnd中的SetWindowText成员函数能拷贝到编辑控件中的文本的长度。如果用SetWindowText函数输入的文本超过调用LimitText函数所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会禁止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以内。
注意  在Win32(Windows95和WindowsNT)中,SetLimitText代替此函数。
要了解更多信息,请参阅Win32文档中的EM_LIMITTEXT。
请参阅  CWnd::SetWindowsText,CEdit::GetLimitText,CEdit::SelLimitText

 

CEdit::LineFromChar

Int LineFromChar(intnIndex=-1)const;
返回值
    返回由nIndex指定的字符索引的行号,此行号从0开始。如果nIndex为-1,则返回所选部分第一个字符的行号,如果无选定部分,则返回当前行号。

参数

    nIndex包含编辑控件文本中所需字符的基于0的索引值,或者包含-1。如果为-1则指定为当前行,即包含脱字符的行。
说明  调用此成员函数获取包含指定字符索引的行的行号,字符索引指编辑控件中从开始到指定字符的字符数。此成员函数仅适用于多行编辑控件。
要了解更多信息,请参阅Win32文档中的EM_LINEFROMCHAR。
请参阅  CEdit::LineIndex

 

CEdit::LineIndex

Int LineIndex(intnLine=-1)const;
返回值
  nLine所指定的行的字符索引。如果指定的行号大于编辑控件的行数,则返回-1。

参数

   nline   包含编辑控件文本中所需字符的索引值(此索引由0开始),如果为-1则指定为当前行,即包含脱字符的行。
说明

   调用此成员函数获取多行编辑控件中一行的字符索引,字符索引指从文本控件中文本开头到指定行的字符数。此成员函数仅适用于多行编辑控件。
要了解更多信息,请参阅Win32文档中的EM_LINEINDEX。
请参阅  CEdit::LineFromChar

 

CEdit::LineLength

Int LineLength(intnLine=-1)const;
返回值
    当函数由多行编辑控件调用时,返回由nLine所指定的行的长度(以字节数表示);当函数由单行编辑控件调用时,返回编辑控件中文本的长度(以字节数表示)。

参数

    nLine指定要获取长度的行的字符索引。如果参数值为-1,表示当前行(即包含脱字符的行),不包括此行中被选中的部分文本的长度。LineLength在单行编辑控件调用时是被忽略的。
说明

    调用此成员函数获取在编辑控件中一行的字符长度。调用此成员函数在多行编辑控件中获取一个指定了行号的行的字符索引。
要了解更多信息,请参阅Win32文档中的EM_LINELENGTH。
请参阅  CEdit::LineIndex

 

CEdit::LineScroll
void LineScroll(int nLine,int nChars=0);
参数

   nLine    指定纵向滚动的行数。

   nChars   指定水平滚动的字符数。如果编辑控件使用ES_RIGHT或ES_CENTER风格,此值无效。
说明

   调用此成员函数滚动多行编辑控件的文本。此成员函数仅用于多行编辑控件。编辑控件的纵向滚动不能超过该文本的最后一行,如果当前行号加上由nLines指定的行数超过编辑控件中的总行数,则它的值被调整而使得文本的最后一行滚动达到编辑控件窗口的顶端。此函数可以水平滚动经过每行的最后一个字符。
要了解更多信息,请参阅Win32文档中的EM_LLNESCROLL。
请参阅  CEdit::LineIndex

 

CEdit::Paste
void Paste();

说明

    调用此成员函数将剪贴板上的数据插入CEdit的插入点,仅在剪贴板上的数据具有CF_TEXT格式时数据才可以被插入。
要了解更多信息,请参阅Win32文档中的WM_PASTE。
请参阅  CEdit::Clear,CEdit::Copy, CEdit::Cut

 

CEdit::PosFromChar
Cpoint PosFromChar(UINT nChar)const;
返回值
     由nChar指定的字符的左上角坐标。

参数

    nChar指定字符的索引(从0开始)。
说明

    调用此成员函数获取此CEdit对象中一个指定字符的位置(左上角),此字符由它的索引值给定。如果nChar大于此CEdit对象中最后一个字符的索引,则返回CEdit对象中经过最后一个字符后的坐标位置。
注意  此成员函数仅适用于以Windows 95和Windows NT开始的版本。
要了解更多信息,请参阅Win32文档中的EM_POSFROMCHAR。
请参阅  CEdit::CharFromPos

 

CEdit::ReplaceSel
void ReplaceSel(LPCTSTR lpszNewText,BOOL bCanUndo=False);
参数
   lpszNewText   指向一个以空终止的替换字符串。

   bCanUndo      如果指定此替代可以被撤消,则将此参数设置为TRUE。缺省值为FALSE。
说明

    调用此成员函数将编辑控件中的当前选定部分替换为由lpszNewText指定的文本。仅替换编辑控件中文本的一部分。如果要替换全部文本,请使用CWnd::SetWin-dow Text成员函数。如果当前未选定文本,则将文本插入当前光标位置。
要了解更多信息,请参阅Win32文档中的EM_REPLACESEL。
请参阅  CWnd::SetWindowText

 

CEdit::SetHandle
void SetHandle(HLOCAL hBuffer);
参数
   hBuffer  包含一个指向局部内存的句柄。此句柄必须已由LocalAlloc Windows函数使用 LMEM_MOVEABLE标记创建。该存储区被认为包含一个带空终止符的字符串,如果不是这样,则缓冲区的第一个字符应被设置为0。
说明

    调用此成员函数设置一个可被多行编辑控件使用的局部内存句柄。编辑控件便可以使用此缓冲区来存储当前显示的文本,而不必分配自己的缓冲区。此函数仅对多行编辑控件有效。当应用设置一个新的存储句柄时,应使用GetHandle成员函数获取一个当前缓冲内存句柄,并使用LocalFree Windows函数释放此缓冲区。此函数清除撤消缓冲区(CanUndo成员函数返回0)和内部修改标记(GetModify成员函数返回0),编辑控件被重新设置。仅在使用DS_LOCALEDIT风格标志设置构造一个多行编辑控件对话框后,才可以在此对话框中使用此成员函数。
注意  此函数不可在Windows 95中使用,如果在Windows 95中使用GetHandle会返回NULL。此函数仅在Windows NT 3.51以上的版本中使用。
要了解更多信息,请参阅Win32文档中的EM_SETHANDLE,LocalAlloc,LocalFree。
请参阅  CEdit::CanUndo,CEdit::GetHandle,CEdit::GetModify

 

CEdit::SetLimitText
void SetLimitText(UNIT nMax);
参数

   nMax   新的文本限制,以字节计算。
说明

   调用此成员函数设置编辑控件中的文本的长度限制。此限制是编辑控件可以接收的以字节形式表示的文本大小。改变文本限定仅使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用CWnd中的SetWindowText成员函数能拷贝到编辑控件中的文本的长度。如果用SetWindowText函数输入的文本超过调用LimitText函数所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会禁止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以内。在Win32中,SetLimitText代替此函数。
要了解更多信息,请参阅Win32文档中的EM_SETLIMITTEXT。
请参阅  CEdit::GetLimitText,CEdit::LimitText

 

CEdit::SetMargins
void SetMargins(UINT nLeft,Uint nRight);
参数
   nLeft   以像素表示的新的文本左边距宽度。
   nRight  以像素表示的新的文本右边距宽度。
说明

    调用此成员函数设置编辑控件的左右边距。

注意  此成员函数仅在Windows 95和Windows NT 4.0以上版本中可用。
要了解更多信息,请参阅Win32文档中的EM_SETMARGINS。
请参阅  CEdit::GetMargins

 

CEdit::SetModify
void SetModify(BOOL bModified=TRUE);
参数

    bModified   TRUE表示文本被改变了,FALSE表示没有改变,缺省情况下设定了改变标志。
说明

    调用此成员函数设置或清除编辑控件的改变标志。改变标记表明文本是否被改变。当用户改变文本时,此标志被自动设置,它的值在调用GetModify成员函数时获取。
要了解更多信息,请参阅Win32文档中的EM_SETMODIFY。
请参阅  CEdit::GetModify

 

CEdit::SetPasswordChar
void  GetPasswordChar(TCHARch);
参数
   ch   指定在用户输入字符处显示的字符。如果值为0,则显示输入的实际字符。
说明

    调用此成员函数在编辑控件中设置或清除用户输入文本时所显示的密码字符。此成员函数对多行编辑控件无效。当调用SetPasswordChar成员函数时,CEdit将用ch所指定的字符替代所有可视的字符。如果编辑控件是用ES_PASSWORD风格建立的,则缺省的密码字符被设置为一个星号(* )。此风格在SetPasswordChar以ch=0调用时删除。
要了解更多信息,请参阅Win32文档中的ES_SETPASSWORDCHAR。
请参阅  CEdit::GetPasswordChar

 

CEdit::SetReadOnly
BOOL SetReadOnly(BOOL bReadOnly=TRUE);
返回值
     操作成功,则返回非零值;当发生错误时为0。参数bReadOnly指定设置还是去掉编辑控件的只读状态。如果为TRUE值,则设置为只读状态;如果为FALSE值,则设置为可读写状态。
说明

    调用此成员函数设置编辑控件的只读状态。当前的只读状态可由CWnd::GetStyle的返回值的ES_READONLY标志测出。
要了解更多信息,请参阅Win32文档中的EM_SETREADONLY。
请参阅  CEdit::GetStyle

 

CEdit::SetRect
void GetRect(LPRECT lpRect);
参数
   lpRect    指向RECT结构或CRect对象的指针,指定格式化矩形的新的尺寸。
说明

   调用此成员函数用指定坐标设置一个编辑控件的矩形的尺寸。此成员函数仅对多行编辑控件有效。使用SetRect函数设置一个对多行编辑控件的格式化矩形。此格式化矩形为文本的边界矩形,与编辑控件窗口的大小无关。当编辑控件首次被创建时,格式化矩形与用户的编辑控件窗口区一样。使用SetRect成员函数后,应用程序可以使格式化矩形大于或小于编辑控件窗口。如果编辑控件没有滚动条,在格式化矩形大于窗口时,文本将被剪切而不是被覆盖。如果编辑控件包括一个边界,则格式化矩形的大小将被边界的大小变低。如果用GetRect成员函数的返回值来调整矩形的大小,在传递矩形之前应去掉边界大小。调用SetRect函数时,编辑控件的文本格式和显示方式将被重新设置。
要了解更多信息,请参阅Win32文档中的EM_SETRECT。
请参阅  CRect::CRect,CRect::CopyRect,CRect::operator=,CRect::SetRectEmpty,CEdit::GEtRect,Cedit::SetRectNP

 

CEdit::SetRectNP
void GetRectNP(LPRECT lpRect);
参数
   lpRect  指向RECT结构或CRect对象的指针,指定格式化矩形的新的大小。
说明

   调用此成员函数用一个多行编辑控件设置格式化矩形。此格式化矩形为文本的边界矩形,与编辑控件窗口的大小无关。除了编辑控件窗口不被重新设置外,SetRectNP与SetRect成员函数一致。当编辑控件首次被创建时格式化矩形与用户的编辑控件窗口区一样。使用SetRect NP成员函数后,应用程序可以使格式化矩形大于或小于编辑控件窗口。如果编辑控件没有滚动栏,在格式化矩形大于窗口时,文本将被剪切而不是被覆盖。此成员函数仅对多行编辑控件有效。
要了解更多信息,请参阅Win32文档中的EM_SETRECTNP。
请参阅  CRect::CRect::CopyRect,CRect::Operator=,CRect::SetRectEmpty,CEdit::GetRect,CEdit::SetRect

 

CEdit::SetSel
void SetSel(DWORD dwSelection, BOOL bNoScroll=FALSE);
void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll=False);
参数

    dwSelection  低位字指定起始位置,高位字为结束位置。如果低位为0,高位为-1,则编辑控件中的全部文本被选中;如果低位字为-1,则任何当前选定内容被去掉选定状态。

    bNoScroll    指示是否显示脱字符是滚动可见的。如果值为FALSE,则显示,TRUE不显示。

    nStartChar   指出当前选中部分的开始位置。如果nStartChar=0且nEndChar=-1,则编辑控件的文本被全选;如果nStartChar=-1,则任何当前选定内容被去掉选定状态。nEndChar指出结束位置。说明调用此成员函数在一个编辑控件中选择一定范围的字符。
要了解更多信息,请参阅Win32文档中的EM_SETSEL。
请参阅  CEdit::GetSel,CEdit::ReplaceSel

 

CEdit::SetTabStops
void SetTabStops();
BOOL SetTabStops(const int& cxEachStop);
BOOL SetTabStops(int nTabStops,LPINT rgTabStops);
返回值
      如果制表键被设置,则返回非零值,否则为0。
参数

    cxEachStop   指定在每个cxEachStop对话单位设置制表键停止。

    nTabStops    指定包含在rgTabStops中的制表键停止个数。此个数必须大于1。

    rgTabStops   是一个指向无符号整数数组的指针,此数组指定了对话单位的制表键停止个数。一个制表键单元是一个水平或垂直距离,一个水平制表键单元等于宽度相同的当前对话框的四分之一,一个垂直制表键单元等于高度相同的当前对话框的八分之一,对话基本单元是基于当前系统字体的高度和宽度计算的,WindowsGetDialogBaseUnits函数以像素形式返回当前对话基本单元。
说明

    调用此成员函数在一个多行编辑控件中设置制表键停止。当文本被拷贝到多行编辑控件时,文本中的任何制表键之间均会产生一段空白。要将缺省的制表键大小为32个对话单位,可不带参数调用此成员函数。如果大小比32大,用cxEachStop作参数调用;设置一个数组形式的制表键停止,可使用双参数调用。此成员函数仅适用于多行编辑控件。SetTabStops不会自动重画编辑窗口。如果要改变已在文本控件中的文本的制表键停止,应调用CWnd::InvalidateRect来重画编辑窗口。
要了解更多信息,请参阅Win32文档中的EM_SETTABSTOPS。
请参阅  CWnd::InvalidataRect

 

CEdit::Undo
BOOL Undo();
返回值
   对于单行编辑控件总是返回非零值。对于多行编辑控件,如果操作成功,则返回非零值,失败则返回0。
说明 

    调用此成员函数撤消编辑控件的最后一次操作。撤销操作也可以被撤消。例如,可以第一次调用撤销来保存被删文本,在没有别的操作发生时,可以再次调用撤消操作将文本删除。
要了解更多信息,请参阅Win32文档中的EM_UNDO。

 

 

 

 

CEdit类(编辑类)

CObject -> CCmdTarget -> CWnd ->CEdit

【说 明】CEdit类提供了Windows 编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。 可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit类的构造函数构造CEdit类的对象,再调用成员函数Create创建Windows 编辑控件并将其与CEdit类的对象连接。构造在CEdit的派生类中可以单步实现。为派生类编写构造函数并从构造函数中调用成员函数Create。

CEdit类从CWnd类继承了重要的功能,要在CEdit类的对象中设置或获取文本,使用CWnd类的成员函数SetWindowText和GetWindowText,可以设置和得到编辑控件的全部内容,即使它是一个多行控件。如果编辑控件是多行的,使用CEdit类的成员函数GetLine,GetSel,GetSel和ReplaceSel来获取和写入控件的部分文本。

如果要处理编辑控件发往其父类(通常是一个CDialog类的派生类)的通知消息,则向父类中为每一消息添加一个消息映射入口和消息处理成员函数。

各消息映射入口可采用如下形式:ON_Notification(id,memberFxn)

其中id指定了发送通知的编辑控件的子窗口ID,memberFxn为你写好的处理通知的父成员函数的名字。

父函数形式如下:

afx_msg void memberFxn();

下面是一组可能的消息映射入口,以及在何种情况下向父类发送的描述:


ON_EN_CHANGE

用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在Windows 更新显示之后发送的。


ON_EN_ERRSPACE

编辑控件不能为特定请求分配足够的空间。


ON_EN_HSCROLL

用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。


ON_EN_KILLFOCUS

编辑控件失去输入焦点。


ON_EN_MAXTEXT

当前输入超过了为编辑控件指定的数目,并作截尾处理。当编辑控件不具有ON_EN_HSCROLL风格且要输入的字符会超过编辑控件的宽度时,发送消息。当编辑控件不具有ON_EN_VSCROLL风格且要输入的字符会超过编辑控件的高度时,也会发送消息。


ON_EN_SETFOCUS

编辑控件获得焦点。


ON_EN_UPDATE

编辑控件将要显示变动的文本。在控件对文本格式化之后但在显示文本之前发送消息,以便在必要时改变窗口尺寸。


ON_EN_VSCROLL

用户单击了编辑控件中的垂直滚动条,父窗口在屏幕更新之前被通知。 如果在对话框内创建CEdit类的对象,CEdit类的对象在用户关闭对话框时自动被删除。 如果使用对话框编辑器从对话资源中创建CEdit类的对象,CEdit类的对象在用户关闭对话框时自动被删除。

如果在窗口内创建CEdit类的对象,也需要删除它。如果在栈上创建CEdit类的对象,它被自动删除。如果使用new函数在堆上创建CEdit类的对象,在用户中止编辑控件时,必须对其调用delete来删除它。如果在CEdit类的对象中分配存储空间,则需要重载CEdit析构函数来处理分配情况。【库 名】【成员函数
】(1)BOOLCanUndo() const;【返回值】如果上一次编辑操作可以用Undo成员函数撤销,则返回非零值,否则为0。【注 释】调用该函数来决定上一次编辑操作是否可以撤销。
(2)CEdit();

【注 释】构造一个CEdit类的对象。使用成员函数Create来创建Windows 编辑控件
(3)intCharFromPos(CPoint pt) const;【返回值】返回WORD低位的字符索引,以及WORD高位的行索引。【参 数】pt 在客户区域中的CEdit类的对象的点的坐标。【注 释】调用该函数来获取基于0索引的行和最接近CEdit控件中指定点的字符索引。注意,该成员函数在Windows95和Windows NT4.0中有效

(4)voidClear();【注 释】调用该函数来删除(清除)编辑控件中当前选中的文本。由成员函数Clear进行的操作可以通过调用成员函数Undo撤销。要删除当前选定文本并将其拷贝到剪贴板上,调用成员函数Cut
。(5)voidCopy();【注 释】调用该函数将编辑控件中的当前选中文本以CF_TEXT格式拷贝到剪贴板中
。(6)BOOLCreate(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);【返回值】初始化成功,则返回非零值,否则为0。【参 数】dwStyle 指定编辑控件的风格。可以是窗口风格和控件的编辑风格的组合。可以使用的编辑风格如下:


ES_AUTOHSCROLL

当用户在行的末尾键入了一个字符时自动将文本向右滚动10个字符。当用户按下ENTER键时,控件把所有文本滚动回位置0。


ES_AUTOVSCROLL

当用户在最后一行按下ENTER键时自动将文本镶上滚动一页。


ES_CENTER

在一个多行编辑控件中使文本水平居中显示。


ES_LEFT

使文本作对齐。


ES_LOWERCASE

在字符输入到编辑器控件时,转换所有的字符成为小写。


ES_MULTILINE

指定编辑控件为多行风格(缺省为单行风格)。

对于在对话框中的多行编辑控件,按下ENTER键将执行按下对话框中缺省按钮的操作,如果希望换行则必须设置ES_WANTRETURN风格。

当多行编辑控件的父窗口不是一个对话框类的对象,而且指定了ES_AUTOVSCROLL风格,则编辑控件尽可能多地显示行并且在用户按下ENTER键时垂直滚动。若未给出ES_AUTOVSCROLL风格,则编辑控件尽可能多地显示行,若当没有再可显示的行时用户按下ENTER键,则发出“嘟嘟”声。

若指定了ES_AUTOHSCROLL风格,则当插入字符超出控件的右边界时,该或行编辑控件自动水平滚动。要开始一个新行,用户必须按ENTER键。若未给出ES_AUTOHSCROLL风格,则控件根据需要自动将插入字符卷至下一行的开始处;若按下了ENTER键,仍将重起一行。卷行的位置由窗口的尺寸决定。若窗口的尺寸发生了变化,则卷行的位置也发生变化,且文本将被重新显示。

多行编辑控件可拥有滚动条。带滚动条的编辑控件处理其自己的滚动消息。不带滚动条的编辑控件按如上方法处理由父窗口发送的消息。


ES_NOHIDESEL

通常,编辑控件在失去输入焦点时编辑控件隐藏选中的文字并且当编辑控件重新获得输入焦点时反转选中的文字。指定本风格将使被选中的文本不被隐藏。


ES_NUMBER

被编辑的文本必须为数字,否则将不被处理。


ES_OEMCONVERT

在编辑控件中输入的文本被从ANSI字符集转换到OEM字符集然后又转换回ANSI字符集。这样就保证了应用程序调用WindowsAPI函数AnsiToOem把编辑控件中的ANSI字符串转换成OEM字符时字符被正确转换。此风格对含有文件名的编辑控件非常有用。


ES_PASSWORD

当向编辑控件中键入字符时,将所有字符显示成(*)。应用程序可使用成员函数SetPasswordChar来修改所显示的字符。此风格仅在编辑控件为单行时有效,一旦编辑控件设置了ES_MULTILINE风格则此风格无效。


ES_READONLY

防止用户输入或者编辑控件中的文本。


ES_RIGHT

使文本右对齐。


ES_UPPERCASE

在字符输入到编辑器控件时,转换所有的字符成为大写。


ES_WANTRETURN

对于在对话框中建立的多行文本编辑控件,当按下ENTER键时,编辑控件将消息发送给对话框,对话框将执行缺省操作OnOK,关闭对话框。在设置了此风格后,编辑控件就不会将消息发送给对话框了。此风格对于在框架窗口中建立的编辑控件无效。对于在对话框中建立的单行文本编辑控件也无效。

rect 指定控件的尺寸和位置。可以是RECT结构或CRect对象。pParentWnd指定编辑控件的父窗口(通常使用CDialog类的对象)。其值不能为NULL。nID 指定编辑控件的ID。

【注 释】构造CEdit类的对象分两步。首先调用CEdit类的构造函数,再调用成员函数Create,这样就创建了一个Windows 编辑控件,并将其与CEdit类的对象连接。当执行成员函数Create时,Windows 发送WM_NCCREATE,WM_NCCALCSIZE,WM_CREATE 和WM_GETMINMAXINFO消息到编辑控件。缺省地,这些消息由CWnd基类中的成员函数OnNcCalcSize,OnCreate,OnNcCreate和OnGetMinMaxInfo处理。要扩展缺省的消息处理,先从CEdit类派生一个类,为新类添加消息映射并重载上述消息处理成员函数。例如,重载成员函数OnCreate为新类执行所需要的初始化操作。
(7)voidCut();【注 释】调用该函数来删除(剪切)在编辑控件中的当前选定文本,并将其用CF_TEXT格式拷贝到剪贴板中。由成员函数Cut执行的删除可以由成员函数Undo来撤销。删除当前选定部分而不将已删除文本置于剪贴板,调用成员函数Clear。
(8)voidEmptyUndoBuffer();【注 释】调用此成员函数重新设置(清除)一个编辑控件中的撤消标记,使编辑控件不可撤消最近一次操作。撤消标记在编辑控件的某个操作可以撤消时建立。当调用成员函数SetHandle或基类CWnd类的成员函数SetWindowsText时,撤消标记自动被清除。
(9)BOOLFmtLines(BOOL bAddEOL);【返回值】如果发生格式化,则返回非零值,否则为0。【参 数】bAddEOL 指定是否要插入软断行符,值为True时插入软断行符,为False时去掉软断行符。【注 释】调用此成员函数用于设置在一个多行编辑控件中是否包含软断行符。一个软断行符包含在断行行末插入两个回车和一个换行,这是因为一行可容纳的文字有限。而一个硬断行符包含一个回车和一个断行。以硬断行符结束的行不受本成员函数的影响。仅在CEdit类的对象是一个多行编辑控件时Windows才响应此命令。本成员函数仅影响成员函数GetHandle返回的缓冲区和消息WM_GETTEXT返回的文本,而对编辑控件中的显示无影响。

(10)intGetFirstVisibleLine() const;【返回值】可视的最顶端行的行号(行号由0开始),对单行编辑控件来说,返回值为0。【注 释】调用此成员函数决定编辑控件中可视的最顶端行的行号。
(11)HLOCALGetHandle() const;【返回值】一个用于标识多行编辑控件内容的局部内存句柄。如果发生错误,例如检取信息的编辑控件为单行,则返回值为0。【注 释】调用此成员函数来获取一个多行编辑控件中当前分配的内存句柄。此句柄是一个局部内存句柄,可被任何局部Windows存储函数作为一个参数来获得。此成员函数仅仅被多行编辑控件处理。在一个多行编辑控件的对话框中调用此成员函数时,对话框必须设置风格DS_LOCALEDIT。如果不是,虽然也可以得到一个非零的返回值,但此返回值不可被使用。注意 此成员函数不可在Windows 95下运行。如果在Windows 95下调用,会返回NULL。此成员函数可在Windows NT3.51版及以上使用。
(12)UINTGetLimitText() const;【返回值】对当前CEdit类的对象的文本大小限制,以字节计算。【注 释】调用此成员函数来获取该CEdit对象的文本大小限制,文本限制是此编辑控件可以接收的文本的最大长度(以字节计算)。注意 此成员函数仅在Windows 95和Windows NT4.0以上版本中可用。
(13)intGetLine(int nIndex, LPTSTR lpszBuffer) const;

int GetLine(int nIndex, LPTSTR lpszBuffer,int nMaxLength) const;【返回值】实际拷贝的字节数。如果由参数nIndex指定的行号大于此编辑控件的行数,则返回值为0。【参 数】nIndex 指定从多行编辑控件中检索的行的行号,行号由0指定。对单行编辑控件,此参数被忽略。lpszBuffer指向获取此行备份的缓冲区。缓冲区的第一个字必须指定能被拷贝到缓冲区的最大字节数。nMaxLength指定能被拷贝到缓冲区的最大字节数,本成员函数在调用Windows之前将此值放置到参数lpszBuffer的第一个字中。【注 释】调用此成员函数从编辑控件中获取文本的一行并将其放置到参数lpszBuffer缓冲区。被拷贝的行不包括空终止符。
(14)intGetLineCount() const;

【返回值】在多行编辑控件中的包含的一个整数总行数。如果没有向控件输入任何文本,则返回值为-1。【注 释】调用此成员函数获取一个多行编辑控件中的总行数。此函数仅应用于多行编辑控件。
(15)DWORDGetMargins() const;

【返回值】双字的低字位为左边距,高字位为右边距。【注 释】调用此成员函数获取由成员函数SetMargins设置的编辑控件的左右边距,以像素表示。注意,此成员函数仅在Windows95和Windows NT4.0以上版本中可用。
(16)BOOLGetModify() const;

【返回值】如果编辑控件的内容被改变,则返回值为非零,否则为0。【注 释】调用此成员函数测试编辑控件的内容是否被改变。Windows有一个内部标记来表明编辑控件的内容是否被改变。当编辑控件首次被创建时此标记被清除,在调用成员函数SetModify时也被清除。
(17)TCHARGetPasswordChar() const;

【返回值】指定在用户输入字符处显示的字符。如果无密码,则返回NULL。【注 释】调用此成员函数获取在用户输入密码时所显示的密码字符。如果编辑控件是用ES_PASSWORD风格建立的,则缺省的密码字符为一个星号(*)。
(18)voidGetRect(LPRECT lpRect) const;【参 数】lpRect 指向一个RECT结构类型的数据以接收格式化矩形。【注 释】调用此成员函数获取一个编辑控件的格式化矩形。此格式化矩形为文本的边界矩形,与编辑控件窗口的大小无关。多行编辑控件的格式化矩形可以被成员函数SetRect和SetRectNP改变。
(19)DWORDGetSel() const;

void GetSel(int& nStartChar, int&nEndChar) const;

【返回值】此版本返回一个双字,其低位字为起始位置,高位字为被选中字符串后第一个未被选中的字符的位置。【参 数】nStartChar指向当前选中部分的第一个字符位置,用整数表示。nEndChar指向被选中字符串后第一个未被选中的字符的位置,用整数表示。【注 释】调用此成员函数获取一个编辑控件中当前被选中部分(如果有)的起始和结束位置,可用参数也可用返回值。注意,当选中编辑控件的最后一个字符时高位字或者第二个参数的值为最后一个字符的索引值加一。当选中的文本不再同一行时,硬断行符也将占据两个索引值,而软换行符将占据3个索引值。每个汉字将占据两个索引值。

(20)voidLimitText(int nChar = 0) const;

【参 数】nChar 指定用户可以输入的文本的长度(以字节枚举)。如果参数为0,则长度设置为UINT_MAX个字节,这是缺省情况。UINT_MAX的值为0xffffffff。【注 释】调用此成员函数限定用户可以向编辑控件中输入的文本的长度。改变文本限定使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用CWnd类中的成员函数SetWindowText能拷贝到编辑控件中的文本的长度。如果用成员函数SetWindowText输入的文本超过调用成员函数LimitText所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会禁止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以内。注意,在Win32(Windows95和WindowsNT)中,成员函数SetLimitText可以代替此函数。


(21)intLineFromChar(int nIndex = -1) const;

【返回值】返回由nIndex指定的字符索引的行号,此行号从0开始。如果nIndex为-1,则返回所选部分第一个字符的行号,如果无选定部分,则返回当前行号。【参 数】nIndex 包含编辑控件文本中所需字符的基于0的索引值,或者包含-1。如果为-1则指定为当前行,即包含脱字符的行。【注 释】调用此成员函数获取包含指定字符索引的行的行号,字符索引指编辑控件中从开始到指定字符的字符数。此成员函数仅适用于多行编辑控件。
(22)intLineIndex(int nLine = -1) const;

【返回值】nLine所指定的行的第一个字符的索引值。如果指定的行号大于编辑控件的行数,则返回-1。【参 数】nLine 包含编辑控件文本中所需字符的行索引值(此索引由0开始),如果为-1则指定为当前行,即包含脱字符的行。【注 释】调用此成员函数获取多行编辑控件中一行的第一个字符的索引值,字符的索引值指从文本控件中文本开头到指定行的字符数。此成员函数仅适用于多行编辑控件。
(23)intLineLength(int nLine = -1) const;

【返回值】当成员函数由多行编辑控件调用时,返回由nLine所指定的字符索引值所在行的长度(以字节数表示);当成员函数由单行编辑控件调用时,返回编辑控件中文本的长度(以字节数表示)。【参 数】nLine 指定要获取长度的行中某一的字符的索引值。如果参数值为-1,表示当前行(即包含脱字符的行),不包括此行中被选中的部分文本的长度。成员函数LineLength在单行编辑控件调用时本参数被忽略。【注 释】调用此成员函数获取在编辑控件中一行的字符长度。
(24)voidLineScroll(int nLines, int nChars = 0);

【参 数】nLine 指定纵向滚动的行数。nChars 指定水平滚动的字符数。如果编辑控件使用ES_RIGHT或ES_CENTER风格,此值无效。【注 释】调用此成员函数滚动多行编辑控件的文本。此成员函数仅用于多行编辑控件。编辑控件的纵向滚动不能超过该文本的最后一行,如果当前行号加上由nLines指定的行数超过编辑控件中的总行数,则它的值被调整而使得文本的最后一行滚动达到编辑控件窗口的顶端。此函数可以水平滚动经过每行的最后一个字符。
(25)voidPaste() const;

【注 释】调用此成员函数将剪贴板上的数据插入CEdit的插入点,仅在剪贴板上的数据具有CF_TEXT格式时数据才可以被插入。
(26)CPointPosFromChar(UINT nChar) const;

【返回值】由nChar指定的字符的左上角坐标。【参 数】nChar 指定字符的索引值(从0开始)。【注 释】调用此成员函数获取此CEdit类的对象中一个指定字符的位置(左上角),此字符由它的索引值给定。如果nChar大于此CEdit对象中最后一个字符的索引,则(-1,-1)。注意,此成员函数仅适用于以Windows 95和Windows NT开始的版本。
(27)voidReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);

【参 数】lpszNewText指向一个以空终止的替换字符串。bCanUndo如果指定此替代可以被撤消,则将此参数设置为TRUE。缺省值为FALSE。【注 释】调用此成员函数将编辑控件中的当前选定部分替换为由参数lpszNewText指定的文本。仅替换编辑控件中文本的一部分。如果要替换全部文本,请使用基类CWnd类的成员函数SetWindowText。如果当前未选定文本,则将文本插入当前光标位置。
(28)voidSetHandle(HLOCAL hBuffer);

【参 数】hBuffer 包含一个指向局部内存的句柄。此句柄必须已由WindowsAPI函数LocalAlloc使用LMEM_MOVEABLE标记创建。该存储区被认为包含一个带空终止符的字符串,如果不是这样,则缓冲区的第一个字符应被设置为0。【注 释】调用此成员函数设置一个可被多行编辑控件使用的局部内存句柄。编辑控件便可以使用此缓冲区来存储当前显示的文本,而不必分配自己的缓冲区。此函数仅对多行编辑控件有效。当应用设置一个新的存储句柄时,应使用GetHandle成员函数获取一个当前缓冲内存句柄,并使用WindowsAPI函数LocalFree释放此缓冲区。此函数清除撤消缓冲区(CanUndo成员函数返回0)和内部修改标记(GetModify成员函数返回0),编辑控件被重新设置。仅在使用DS_LOCALEDIT风格标志设置构造一个多行编辑控件对话框后,才可以在此对话框中使用此成员函数。注意,此函数不可在Windows95中使用,如果在Windows 95中使用成员函数GetHandle会返回NULL。此函数仅在Windows NT3.51以上的版本中使用。
(29)voidSetLimitText(UINT nMax);

【参 数】nMax 新的文本限制,以字节计算。【注 释】调用此成员函数设置编辑控件中的文本的长度限制。此限制是编辑控件可以接收的以字节形式表示的文本大小。改变文本限定仅使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用基类CWnd类的成员函数SetWindowText能拷贝到编辑控件中的文本的长度。如果用基类CWnd类的成员函数SetWindowText输入的文本超过调用成员函数LimitText函数所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会禁止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以内。在Win32中,成员函数LimitText可以代替此函数。
(30)voidSetMargins(UINT nLeft, UINT nRight);

【参 数】nLeft 以像素表示的新的文本左边距宽度。nRight以像素表示的新的文本右边距宽度。【注 释】调用此成员函数设置编辑控件的左右边距。注意,此成员函数仅在Windows95和Windows NT4.0以上版本中可用。
(31)voidSetModify(BOOL bModified = TRUE);

【参 数】bModifiedTRUE表示文本被改变了,FALSE表示没有改变,缺省情况下设定了改变标志。【注 释】调用此成员函数设置或清除编辑控件的改变标志。改变标记表明文本是否被改变。当用户改变文本时,此标志被自动设置,它的值在调用成员函数GetModify时获取。
(32)voidSetPasswordChar(TCHAR ch);

【参 数】ch 指定在用户输入字符处显示的字符。如果值为0,则显示输入的实际字符。【注 释】调用本成员函数在编辑控件中设置或清除用户输入文本时所显示的密码字符。此成员函数对多行编辑控件无效。当调用本成员函数时,CEdit将用ch所指定的字符替代所有可视的字符。如果编辑控件是用ES_PASSWORD风格建立的,则缺省的密码字符被设置为一个星号(*)。此风格在本成员函数以ch = 0调用时删除。注意,本成员函数没有刷新功能,也就是说,在调用本成员函数之后应调用基类CWnd类的成员函数Invalidate来刷新当前视,才会得到正确的显示结果。
(33)BOOLSetReadOnly(BOOL bReadOnly = TRUE);

【返回值】操作成功,则返回非零值;当发生错误时为0。【参 数】bReadOnly 指定设置还是去掉编辑控件的只读状态。如果为TRUE值,则设置为只读状态;如果为FALSE值,则设置为可读写状态。【注 释】调用此成员函数设置编辑控件的只读状态。当前的只读状态可由基类CWnd类的成员函数 GetStyle的返回值的ES_READONLY标志测出。
(34)voidSetRect(LPCRECT lpRect);

【参 数】lpRect 指向一个RECT结构类型数据或CRect对象的指针,指定格式化矩形的新的尺寸。【注 释】调用此成员函数用指定坐标设置一个编辑控件的矩形的尺寸。此成员函数仅对多行编辑控件有效。使用成员函数SetRect设置一个对多行编辑控件的格式化矩形。此格式化矩形为文本的边界矩形,与编辑控件窗口的大小无关。当编辑控件首次被创建时,格式化矩形与用户的编辑控件窗口区一样。使用成员函数SetRect后,应用程序可以使格式化矩形大于或小于编辑控件窗口。如果编辑控件没有滚动条,在格式化矩形大于窗口时,文本将被剪切而不是被覆盖。如果编辑控件包括一个边界,则格式化矩形的大小将因边界的存在而变小。如果用成员函数GetRect的返回值来调整矩形的大小,在传递矩形之前应将矩形坐标中的top、left值减1,bottom、right值加1,以此去掉边界的影响。调用成员函数SetRect时,编辑控件的文本格式和显示方式将被重新设置。
(35)voidSetRectNP(LPCRECT lpRect);

【参 数】lpRect 指向一个RECT结构类型数据或CRect对象的指针,指定格式化矩形的新的大小。【注 释】调用此成员函数用一个多行编辑控件设置格式化矩形。此格式化矩形为文本的边界矩形,与编辑控件窗口的大小无关。除了编辑控件窗口不被重新设置外,此成员函数与成员函数SetRect一致。当编辑控件首次被创建时格式化矩形与用户的编辑控件窗口区一样。使用此成员函数后,应用程序可以使格式化矩形大于或小于编辑控件窗口。如果编辑控件没有滚动栏,在格式化矩形大于窗口时,文本将被剪切而不是被覆盖。此成员函数仅对多行编辑控件有效。注意,成员函数SetRect相当于在调用此成员函数后再调用基类CWnd类的成员函数Invaliadte。

(36)voidSetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);

void SetSel(int nStartChar, int nEndChar,BOOL bNoScroll = FALSE);【参 数】dwSelection低位字指定被选中部分的第一个字符位置,高位字指定为被选中字符串后第一个未被选中的字符的位置。如果低位为0,高位为-1,则编辑控件中的全部文本被选中;如果低位字为-1,则任何当前选定内容被去掉选定状态。bNoScroll指示是否显示脱字符是滚动可见的。如果值为FALSE,则显示,TRUE不显示。nStartChar指出被选中部分的第一个字符位置。如果nStartChar= 0且nEndChar =-1,则编辑控件的文本被全选;如果nStartChar= -1,则任何当前选定内容被去掉选定状态。nEndChar指定为被选中字符串后第一个未被选中的字符的位置。【注 释】调用此成员函数在一个编辑控件中选择一定范围的字符。

(37)voidSetTabStops();

BOOL SetTabStops(const int& cxEachStop);BOOL SetTabStops(int nTabStops, LPINT rgTabStops);【返回值】如果制表键被设置,则返回非零值,否则为0。【参 数】cxEachStop 指定制表键宽度,本参数的单位为1/4个字符的宽度,本参数的设置值应大于8,否则将无法得到正确的显示。由本参数指定的宽度,包括制表键前一个字符和后一个字符,也就是说,当设置值为9时,由于制表键前一个字符和后一个字符各占了4各单位,实际显示为空白的制表键宽度只有1各单位的宽度。nTabStops 指定包含在参数rgTabStops中无符号整型数的个数。此参数必须大于1。rgTabStops是一个指向无符号整数数组的指针,此数组指定一组制表键宽度,当nTabStops为1时本参数指向一个无符号整型数,该整型数将作为编辑控件中所有制表键的宽度。一个制表键单位是一个水平或垂直距离,一个水平制表键单位等于宽度相同的当前对话基本单位的四分之一,一个垂直制表键单位等于高度相同的当前对话基本单位的八分之一,对话基本单位是基于当前系统字体的高度和宽度计算的,WindowsAPI函数GetDialogBaseUnits以像素形式返回当前对话基本单位。【注 释】调用此成员函数在一个多行编辑控件中设置制表键的宽度。当文本被拷贝到多行编辑控件时,文本中的任何制表键之间均会产生一段空白。缺省的制表键宽度为32个制表键单位,可不带参数调用此成员函数。此成员函数仅适用于多行编辑控件。此成员函数不会自动重画编辑窗口。如果要改变已在文本控件中的文本的制表键停止,应调用基类CWnd类的成员函数Invalidate来重画编辑窗口。

(38)BOOLUndo();

【返回值】对于单行编辑控件总是返回非零值。对于多行编辑控件,如果操作成功,则返回非零值,失败则返回0。【注 释】调用此成员函数撤消编辑控件的最后一次操作。撤销操作也可以被撤消。例如,可以第一次调用撤销来保存被删文本,在没有别的操作发生时,可以再次调用撤消操作将文本删除。

 

你可能感兴趣的:(CEdit类的一些用法)