MFC中CEdit类使用方法小结_第1页
MFC中CEdit类使用方法小结_第2页
MFC中CEdit类使用方法小结_第3页
MFC中CEdit类使用方法小结_第4页
MFC中CEdit类使用方法小结_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CEdit类提供了Windows编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创立一个编辑控件。在两种情形下,首先调用CEdit构造程序构造CEdit对象,再调用Create成员函数创立Windows编辑控件并将其与CEdit对象连接。构造在CEdit的派生类中可以单步实现。为派生类编写构造程序并从构造程序中调用Create。CEdit从CWnd继承了重要的功能,要在CEdit对象中设置或获取文本,使用CWnd成员函数SetWindowTe*t和GetWindowTe*t,可以设置和得到编辑控件的全部容,即使它是一个多行控件。如果编辑控件是多行的,使用CEdit成员函数GetLine,GetSel,GetSel和ReplaceSel来获取和写入控件的局部文本。如果要处理编辑控件发往其父类〔通常是一个CDialog派生类〕的通知消息,则向父类中为每一消息添加一个消息映射入口和消息处理成员函数。各消息映射入口可采用如下形式:ON_Notification(id,memberF*n)其中id指定了发送通知的编辑控件的子窗口ID,memberF*n为你写好的处理通知的父成员函数的名字。父函数形式如下:af*_msgvoidmemberF*n();下面是一组可能的消息映射入口,以及在何种情况下向父类发送的描述:ON_EN_CHANGE用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在Windows更新显示之后发送的。ON_EN_ERRSPACE编辑控件不能为特定请求分配足够的空间。ON_EN_HSCROLL用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。ON_EN_KILLFOCUS编辑控件失去输入焦点。ON_EN_MA*TE*T当前输入超过了为编辑控件指定的数目,并作截尾处理。当编辑控件不具有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<af*win.h>请参阅CWnd,CButton,CboBo*,CListBo*,CScrollBar,CStatic,CDialogCEdit类的成员构造函数CEdit构造一个CEdit控件对象Create创立一个Windows编辑控件,并将其与CEdit对象连接CEdit属性CanUndo决定一个编辑控件操作是否能够被撤销GetLineCount获得多行编辑控件中的行数GetModify决定编辑控件的容是否被修改SetModify为编辑控件设置或去除修改标记GetRect为编辑控件获取格式化的矩形GetHandle获得为当前多行编辑控件分配的存的句柄SetHandle设置为多行编辑控件使用的本地存的句柄SetMargins为CEdit设置左边和右边的空白边界GetMargins获得为CEdit设置左边和右边的空白边界SetLimitTe*t设置CEdit能够容纳的文本的最大量GetLimitTe*t获得CEdit能够容纳的文本的最大量PosFromChar获得指定字符索引的左上角的坐标CharFromPos获得最靠近指定位置的字符的行和字符索引GetLine从编辑控件中获得一行文本GetPasswordChar获得当用户输入文本时在编辑控件中显示的口令GetFirstVisibleLeLine决定在编辑控件中最顶部的可视的行CEdit操作EmptyUndoBuffer重新设置〔去除〕编辑控件的撤销标记FmtLines设置在多行编辑控件中的软回车翻开或关闭LimitTe*t用户在输入文本时的文本长度限制LineFromChar获得包含指定字符索引的行的数目LineInde*获得在多行编辑控件中的*行的字符索引LineLength获得编辑控件中的行的长度LineScroll在多行编辑控件中滚动文本ReplaceSel用指定文本覆盖编辑控件中当前被选中的文本SetPasswordChar设置或去除当用户输入文本时在编辑控件中显示的口令SetRect设置多行编辑控件的带格式的矩形,并更新该控件SetRectNP设置多行编辑控件的带格式的矩形,而不必重新绘制SetSel在编辑控件中选定文本SetTabStops设置多行编辑控件的制表键停顿位SetReadOnly为编辑控件设置只读状态CEdit剪贴板操作Undo撤销上一次的编辑控件操作Clear删除〔去除〕编辑控件中当前选中的文本Copy将编辑控件中的当前选中文本以CF_TE*T格式拷贝到剪贴板中Cut删除编辑控件中当前选中的文本,并将删除的文本以CF_TE*T格式拷贝到剪贴板中Paste在当前光标位置插入剪贴板的文本。只有在剪贴板数据为CF_TE*T格式时才进展插入CEdit::CanUndoBOOLCanUndo()const;返回值如果上一次编辑操作可以用Undo成员函数撤销,则返回非零值,否则为0。说明调用该函数来决定上一次编辑操作是否可以撤销。要了解更多信息,请参阅Win32文档中的EM_CANUNDO。请参阅CEdit::Undo,CEdit::EmptyUndoBufferCEdit::CEditCEdit();说明构造一个CEdit对象。使用Create来创立Windows编辑控件。请参阅CEdit::CreateCEdit::CharFromPosintCharFromPos(CPointpt)const;返回值返回WORD低位的字符索引,以及WORD高位的行索引。参数pt在客户区域中的CEdit对象的点的坐标。说明调用该函数来获取基于0索引的行和最接近CEdit控件中指定点的字符索引。注意该成员函数在Windows95和WindowsNT4.0中有效。要了解更多的信息,请参阅Win32文档中的EM_CHARFROMMOPS。请参阅CEdit::PosFromCharCEdit::ClearvoidClear();说明调用该函数来删除〔去除〕编辑控件中当前选中的文本。由Clear进展的操作可以通过调用Undo成员函数撤销。要删除当前选定文本并将其拷贝到剪贴板上,调用Cut成员函数。要了解更多的信息,请参阅Win32文档中的WM_CLEAR。请参阅CEdit::Undo,CEdit::Copy,CEdit::Cut,CEdit::PasteCEdit::CopyvoidCopy();说明调用该函数将编辑控件中的当前选中文本以CF_TE*T格式拷贝到剪贴板中。要了解更多的信息,请参阅Win32文档中的WM_COPY。请参阅CEdit::Clear,CEdit::Cut,CEdit::PasteCEdit::CreateBOOLCreate(DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UNITnID);返回值初始化成功,则返回非零值,否则为0。参数dwStyle指定编辑控件的风格。可以组合使用控件的编辑风格。rect指定控件的尺寸和位置。可以是RECT构造或CRect对象。pParentWnd指定编辑控件的父窗口〔通常使用CDialog〕。其值不能为NULL。nID指定编辑控件的ID。说明构造CEdit对象分两步。首先调用CEdit构造程序,再调用Create,这样就创立了一个Windows编辑控件,并将其与CEdit对象连接。当执行Create时,Windows发送WM_NCCREATE,WM_NCCALCSIZE,WM_CREATE和WM_GETMINMA*INFO消息到编辑控件。缺省地,这些消息由CWnd基类中的OnNcCalcSize,OnCreate,OnNcCreate和OnGetMinMa*Info成员函数处理。要扩展缺省的消息处理,先从CEdit派生一个类,为新类添加消息映射并覆盖上述消息处理成员函数。例如,覆盖OnCreate为新类执行所需要的初始化操作。可以为编辑控件应用如下的风格:WS_CHILD总是采用WS_VISIBLE经常采用WS_DISABLED很少采用WS_GROUP组合控件WS_TABSTOP按制表键次序包含编辑控件请参阅CEdit::CEditCEdit::CutvoidCut();说明调用该函数来删除〔剪切〕在编辑控件中的当前选定文本,并将其用CF_TE*T格式拷贝到剪贴板中。由Cut执行的删除可以由Undo成员函数来撤销。删除当前选定局部而不将已删除文本置于剪贴板,调用Clear成员函数。要了解更多的信息,请参阅Win32文档中的WM_CUT。请参阅CEdit::Undo,CEdit::Clear,CEdit::Copy,CEdit::PasteCEdit::EmptyUndoBufferVoidEmptyUndoBuffer();说明调用此成员函数重新设置〔去除〕一个编辑控件中的撤消标记,使编辑控件不可撤消最近一次操作。撤消标记在编辑控件的*个操作可以撤消时建立。当调用SetWindows或SetHandleCwnd成员函数时,撤消标记自动被去除。要了解更多的信息,请参阅Win32文档中的EM_EMPTYUNDOBUFFER。请参阅CEdit::CanUndo,CEdit::SetHandle,CEdit::Undo,CWnd::SetWindowTe*tCEdit::FmtLinesBOOLFmtLines(BOOLbAddEOL);返回值如果发生格式化,则返回非零值,否则为0。参数bAddEOl指定是否要插入软断行符,值为True时插入软断行符,为False时去掉软断行符。说明调用此成员函数用于设置在一个多行编辑控件中是否包含软断行符。一个软断行符包含在断行行末插入两个回车和一个换行,这是因为一行可容纳的文字有限。而一个硬断行符包含一个回车和一个断行。以硬断行符完毕的行不受FmtLines的影响。仅在CEdit对象是一个多行编辑控件时Windows才响应此命令。FmtLines仅影响GetHandle返回的缓冲区和WM_GETTE*T返回的文本,而对编辑控件中的显示无影响。要了解更多信息,请参阅Win32文档中的EM_FMTLINES。请参阅CEdit::GetHandle,CWnd::GetWindowTe*tCEdit::GetFirstVisibleLineintGetFirstVisibleLine()const;返回值可视的最顶端行的行号〔行号由0开场〕,对单行编辑控件来说,返回值为0。说明调用此成员函数决定编辑控件中可视的最顶端行的行号。要了解更多信息,请参阅Win32文档中的EM_GETFIRSTVISIBLELINE。请参阅CEdit::GetLineCEdit::GetHandleHLOCALGetHandle()const;返回值一个用于标识编辑控件容的局部存句柄。如果发生错误,例如发送信息到一个单行编辑控件,则返回值为0。说明调用此成员函数来获取一个多行编辑控件中当前分配的存句柄。此句柄是一个局部存句柄,可被任何局部Windows存储函数作为一个参数来获得。GetHandle仅仅被多行编辑控件处理。在一个多行编辑控件的对话框中调用此成员函数时,对话框必须由DS_LOCAL-EDIT的样式标志集生成。如果不是,虽然也可以得到一个非零的返回值,但此返回值不可被使用。注意GetHandle不可在Windows95下运行。如果在Windows95下调用,会返回NULL。GetHandle可在WindowsNT3.51版及以上使用。要了解有关的更多信息,请参阅Win32文档中的EM_GETHANDLE。请参阅CEdit::SetHandleCEdit::GetLimitTe*tUINTGetLimitTe*t()const;返回值对当前CEdit对象的文本大小限制,以字节计算。说明调用此成员函数来获取该CEdit对象的文本大小限制,文本限制是此编辑控件可以接收的文本的最大长度〔以字节计算〕。注意此成员函数仅在Windows95和WindowsNT4.0以上版本中可用。要了解更多信息,请参阅Win32文档中的EM_GETLIMITTE*T。请参阅CEdit::SetLimitTe*t,CEdit::LimitTe*tCEdit::GetLineintGetLine(intnInde*,LPCTSTRlpszBuffer)const;intGetLine(intnInde*,LPCTSTRlpszBuffer,intnMa*Length)const;返回值实际拷贝的字节数。如果由nInde*指定的行号大于此编辑控件的行数,则返回值为0。参数nInde*指定从多行编辑控件中检索的行的行号,行号由0指定。对单行编辑控件,此参数被忽略。lpszBuffer指向获取此行备份的缓冲区。缓冲区的第一个字必须指定能被拷贝到缓冲区的最大字节数。nMa*Length指定能被拷贝到缓冲区的最大字节数,GetLine在调用Windows之前将此值放置到lpszBuffer的第一个字中。说明调用此成员函数从编辑控件中获取文本的一行并将其放置到lpszBuffer缓冲区。被拷贝的行不包括空终止符。要了解更多信息,请参阅Win32文档中的EM_GETLINE。CEdit::GetLineCount

IntGetLineCount()const;

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

DWORDGetMargins()const;

返回值双字的低字位为左边距,高字位为右边距。说明调用此成员函数获取编辑控件的左右边距,以像素表示。注意此成员函数仅在Windows95和WindowsNT4.0以上版本中可用。要了解更多信息,请参阅Win32文档中的EM_GETMARGINS。请参阅CEdit::SetMarginsCEdit::GetModify

BOOLGetModify()const

返回值如果编辑控件的容被改变,则返回值为非零,否则为0。说明调用此成员函数测试编辑控件的容是否被改变。Windows有一个部标记来说明编辑控件的容是否被改变。当编辑控件首次被创立时此标记被去除,在调用SetModify成员函数时也被去除。要了解更多信息,请参阅Win32文档中的EM_GETMODIFY。请参阅CEdit::SetModifyCEdit::GetPasswordCharTCHARGetPasswordChar()const;

返回值指定在用户输入字符处显示的字符。如果无密码,则返回NULL。说明调用此成员函数获取在用户输入密码时所显示的密码字符。如果编辑控件是用ES_PASSWORD风格建立的,则缺省的密码字符为一个星号〔*〕。要了解更多信息,请参阅Win32文档中的EM_GETPASSWORDCHAR。请参阅CEdit::SetPasswordCharCEdit::GetRect

voidGetRect(LPRECTlpRect)const;

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

DWORDGetSel()const;

voidGetSel(int&nStartChar,int&nEndChar)const;

返回值此版本返回一个双字,其低位字为起始位置,高位字为第一个未被选中的字符的位置。参数nStartChar指向当前选中局部的第一个字符位置,用整数表示。nEndChar指向第一个未被选中的字符的位置,用整数表示。说明调用此成员函数获取一个编辑控件中当前被选中局部〔如果有〕的起始和完毕位置,可用参数也可用返回值。要了解更多信息,请参阅Win32文档中的EM_GETSEL。请参阅CEdit::SetSelCEdit::LimitTe*t

voidLimitTe*t(intnChars=0);

参数nChars指定用户可以输入的文本的长度〔以字节枚举〕。如果参数为0,则长度设置为UINT_MA*个字节,这是缺省情况。说明调用此成员函数限定用户可以向编辑控件中输入的文本的长度。改变文本限定使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用CWnd中的SetWindowTe*t成员函数能拷贝到编辑控件中的文本的长度。如果用SetWindowTe*t函数输入的文本超过调用LimitTe*t函数所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会制止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以。注意在Win32(Windows95和WindowsNT)中,SetLimitTe*t代替此函数。要了解更多信息,请参阅Win32文档中的EM_LIMITTE*T。请参阅CWnd::SetWindowsTe*t,CEdit::GetLimitTe*t,CEdit::SelLimitTe*tCEdit::LineFromCharIntLineFromChar(intnInde*=-1)const;

返回值返回由nInde*指定的字符索引的行号,此行号从0开场。如果nInde*为-1,则返回所选局部第一个字符的行号,如果无选定局部,则返回当前行号。参数nInde*包含编辑控件文本中所需字符的基于0的索引值,或者包含-1。如果为-1则指定为当前行,即包含脱字符的行。说明调用此成员函数获取包含指定字符索引的行的行号,字符索引指编辑控件中从开场到指定字符的字符数。此成员函数仅适用于多行编辑控件。要了解更多信息,请参阅Win32文档中的EM_LINEFROMCHAR。请参阅CEdit::LineInde*CEdit::LineInde*IntLineInde*(intnLine=-1)const;

返回值nLine所指定的行的字符索引。如果指定的行号大于编辑控件的行数,则返回-1。参数nline包含编辑控件文本中所需字符的索引值〔此索引由0开场〕,如果为-1则指定为当前行,即包含脱字符的行。说明调用此成员函数获取多行编辑控件中一行的字符索引,字符索引指从文本控件中文本开头到指定行的字符数。此成员函数仅适用于多行编辑控件。要了解更多信息,请参阅Win32文档中的EM_LINEINDE*。请参阅CEdit::LineFromCharCEdit::LineLengthIntLineLength(intnLine=-1)const;

返回值当函数由多行编辑控件调用时,返回由nLine所指定的行的长度〔以字节数表示〕;当函数由单行编辑控件调用时,返回编辑控件中文本的长度〔以字节数表示〕。参数nLine指定要获取长度的行的字符索引。如果参数值为-1,表示当前行〔即包含脱字符的行〕,不包括此行中被选中的局部文本的长度。LineLength在单行编辑控件调用时是被忽略的。说明调用此成员函数获取在编辑控件中一行的字符长度。调用此成员函数在多行编辑控件中获取一个指定了行号的行的字符索引。要了解更多信息,请参阅Win32文档中的EM_LINELENGTH。请参阅CEdit::LineInde*CEdit::LineScroll

voidLineScroll(intnLine,intnChars=0);

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

voidPaste();说明调用此成员函数将剪贴板上的数据插入CEdit的插入点,仅在剪贴板上的数据具有CF_TE*T格式时数据才可以被插入。要了解更多信息,请参阅Win32文档中的WM_PASTE。请参阅CEdit::Clear,CEdit::Copy,CEdit::CutCEdit::PosFromChar

CpointPosFromChar(UINTnChar)const;

返回值由nChar指定的字符的左上角坐标。参数nChar指定字符的索引〔从0开场〕。说明调用此成员函数获取此CEdit对象中一个指定字符的位置〔左上角〕,此字符由它的索引值给定。如果nChar大于此CEdit对象中最后一个字符的索引,则返回CEdit对象中经过最后一个字符后的坐标位置。注意此成员函数仅适用于以Windows95和WindowsNT开场的版本。要了解更多信息,请参阅Win32文档中的EM_POSFROMCHAR。请参阅CEdit::CharFromPosCEdit::ReplaceSel

voidReplaceSel(LPCTSTRlpszNewTe*t,BOOLbCanUndo=False);

参数lpszNewTe*t指向一个以空终止的替换字符串。bCanUndo如果指定此替代可以被撤消,则将此参数设置为TRUE。缺省值为FALSE。说明调用此成员函数将编辑控件中的当前选定局部替换为由lpszNewTe*t指定的文本。仅替换编辑控件中文本的一局部。如果要替换全部文本,请使用CWnd::SetWin-dowTe*t成员函数。如果当前未选定文本,则将文本插入当前光标位置。要了解更多信息,请参阅Win32文档中的EM_REPLACESEL。请参阅CWnd::SetWindowTe*tCEdit::SetHandle

voidSetHandle(HLOCALhBuffer);

参数hBuffer包含一个指向局部存的句柄。此句柄必须已由LocalAllocWindows函数使用LMEM_MOVEABLE标记创立。该存储区被认为包含一个带空终止符的字符串,如果不是这样,则缓冲区的第一个字符应被设置为0。说明调用此成员函数设置一个可被多行编辑控件使用的局部存句柄。编辑控件便可以使用此缓冲区来存储当前显示的文本,而不必分配自己的缓冲区。此函数仅对多行编辑控件有效。当应用设置一个新的存储句柄时,应使用GetHandle成员函数获取一个当前缓冲存句柄,并使用LocalFreeWindows函数释放此缓冲区。此函数去除撤消缓冲区〔CanUndo成员函数返回0〕和部修改标记〔GetModify成员函数返回0〕,编辑控件被重新设置。仅在使用DS_LOCALEDIT风格标志设置构造一个多行编辑控件对话框后,才可以在此对话框中使用此成员函数。注意此函数不可在Windows95中使用,如果在Windows95中使用GetHandle会返回NULL。此函数仅在WindowsNT3.51以上的版本中使用。要了解更多信息,请参阅Win32文档中的EM_SETHANDLE,LocalAlloc,LocalFree。请参阅CEdit::CanUndo,CEdit::GetHandle,CEdit::GetModifyCEdit::SetLimitTe*t

voidSetLimitTe*t(UNITnMa*);

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

voidSetMargins(UINTnLeft,UintnRight);

参数nLeft以像素表示的新的文本左边距宽度。nRight以像素表示的新的文本右边距宽度。说明调用此成员函数设置编辑控件的左右边距。注意此成员函数仅在Windows95和WindowsNT4.0以上版本中可用。要了解更多信息,请参阅Win32文档中的EM_SETMARGINS。请参阅CEdit::GetMarginsCEdit::SetModify

voidSetModify(BOOLbModified=TRUE);

参数bModifiedTRUE表示文本被改变了,FALSE表示没有改变,缺省情况下设定了改变标志。说明调用此成员函数设置或去除编辑控件的改变标志。改变标记说明文本是否被改变。当用户改变文本时,此标志被自动设置,它的值在调用GetModify成员函数时获取。要了解更多信息,请参阅Win32文档中的EM_SETMODIFY。请参阅CEdit::GetModifyCEdit::SetPasswordChar

voidGetPasswordChar(TCHARch);

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

BOOLSetReadOnly(BOOLbReadOnly=TRUE);

返回值操作成功,则返回非零值;当发生错误时为0。参数bReadOnly指定设置还是去掉编辑控件的只读状态。如果为TRUE值,则设置为只读状态;如果为FALSE值,则设置为可读写状态。说明调用此成员函数设置编辑控件的只读状态。当前的只读状态可由CWnd::GetStyle的返回值的ES_READONLY标志测出。要了解更多信息,请参阅Win32文档中的EM_SETREADONLY。请参阅CEdit::GetStyleCEdit::SetRect

voidGetRect(LPRECTlpRect);

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

voidGetRectNP(LPRECTlpRect);

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

voidSetSel(DWORDdwSelection,BOOLbNoScroll=FALSE);

voidSetSel(intnStartChar,intnEndChar,BOOLbNoScroll=False);

参数dwSelection低位字指定起始位置,高位字为完毕位置。如果低位为0,高位为-1,则编辑控件中的全部文本被选中;如果低位字为-1,则任何当前选定容被去掉选定状态。bNoScroll指示是否显示脱字符是滚动可见的。如果值为FALSE,则显示,TRUE不显示。nStartChar指出当前选中局部的开场位置。如果nStartChar=0且nEndChar=-1,则编辑控件的文本被全选;如果nStartChar=-1,则任何当前选定容被去掉选定状态。nEndChar指出完毕位置。说明调用此成员函数在一个编辑控件中选择一定围的字符。要了解更多信息,请参阅Win32文档中的EM_SETSEL。请参阅CEdit::GetSel,CEdit::ReplaceSelCEdit::SetTabStops

voidSetTabStops();

BOOLSetTabStops(constint&c*EachStop);

BOOLSetTabStops(intnTabStops,LPINTrgTabStops);

返回值如果制表键被设置,则返回非零值,否则为0。参数c*EachStop指定在每个c*EachStop对话单位设置制表键停顿。nTabStops指定包含在rgTabStops中的制表键停顿个数。此个数必须大于1。rgTabStops是一个指向无符号整数数组的指针,此数组指定了对话单位的制表键停顿个数。一个制表键单元是一个水平或垂直距离,一个水平制表键单元等于宽度一样的当前对话框的四分之一,一个垂直制表键单元等于高度一样的当前对话框的八分之一,对话根本单元是基于当前系统字体的高度和宽度计算的,WindowsGetDialogBaseUnits函数以像素形式返回当前对话根本单元。说明调用此成员函数在一个多行编辑控件中设置制表键停顿。当文本被拷贝到多行编辑控件时,文本中的任何制表键之间均会产生一段空白。要将缺省的制表键大小为32个对话单位,可不带参数调用此成员函数。如果大小比32大,用c*EachStop作参数调用;设置一个数组形式的制表键停顿,可使用双参数调用。此成员函数仅适用于多行编辑控件。SetTabStops不会自动重画编辑窗口。如果要改变已在文本控件中的文本的制表键停顿,应调用CWnd::InvalidateRect来重画编辑窗口。要了解更多信息,请参阅Win32文档中的EM_SETTABSTOPS。请参阅CWnd::InvalidataRectCEdit::Undo

BOOLUndo();

返回值对于单行编辑控件总是返回非零值。对于多行编辑控件,如果操作成功,则返回非零值,失败则返回0。说明调用此成员函数撤消编辑控件的最后一次操作。撤销操作也可以被撤消。例如,可以第一次调用撤销来保存被删文本,在没有别的操作发生时,可以再次调用撤消操作将文本删除。要了解更多信息,请参阅Win32文档中的EM_UNDO。CEdit类(编辑类)CObject->CCmdTarget->CWnd->CEdit【说明】CEdit类提供了Windows编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创立一个编辑控件。在两种情形下,首先调用CEdit类的构造函数构造CEdit类的对象,再调用成员函数Create创立Windows编辑控件并将其与CEdit类的对象连接。构造在CEdit的派生类中可以单步实现。为派生类编写构造函数并从构造函数中调用成员函数Create。CEdit类从CWnd类继承了重要的功能,要在CEdit类的对象中设置或获取文本,使用CWnd类的成员函数SetWindowTe*t和GetWindowTe*t,可以设置和得到编辑控件的全部容,即使它是一个多行控件。如果编辑控件是多行的,使用CEdit类的成员函数GetLine,GetSel,GetSel和ReplaceSel来获取和写入控件的局部文本。如果要处理编辑控件发往其父类(通常是一个CDialog类的派生类)的通知消息,则向父类中为每一消息添加一个消息映射入口和消息处理成员函数。各消息映射入口可采用如下形式:ON_Notification(id,memberF*n)其中id指定了发送通知的编辑控件的子窗口ID,memberF*n为你写好的处理通知的父成员函数的名字。父函数形式如下:af*_msgvoidmemberF*n();下面是一组可能的消息映射入口,以及在何种情况下向父类发送的描述:ON_EN_CHANGE用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在Windows更新显示之后发送的。ON_EN_ERRSPACE编辑控件不能为特定请求分配足够的空间。ON_EN_HSCROLL用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。ON_EN_KILLFOCUS编辑控件失去输入焦点。ON_EN_MA*TE*T当前输入超过了为编辑控件指定的数目,并作截尾处理。当编辑控件不具有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析构函数来处理分配情况。【库名】<af*win.h>【成员函数】〔1〕BOOLCanUndo()const;【返回值】如果上一次编辑操作可以用Undo成员函数撤销,则返回非零值,否则为0。【注释】调用该函数来决定上一次编辑操作是否可以撤销。〔2〕CEdit();【注释】构造一个CEdit类的对象。使用成员函数Create来创立Windows编辑控件〔3〕intCharFromPos(CPointpt)const;【返回值】返回WORD低位的字符索引,以及WORD高位的行索引。【参数】pt在客户区域中的CEdit类的对象的点的坐标。【注释】调用该函数来获取基于0索引的行和最接近CEdit控件中指定点的字符索引。注意,该成员函数在Windows95和WindowsNT4.0中有效。〔4〕voidClear();【注释】调用该函数来删除(去除)编辑控件中当前选中的文本。由成员函数Clear进展的操作可以通过调用成员函数Undo撤销。要删除当前选定文本并将其拷贝到剪贴板上,调用成员函数Cut

。〔5〕voidCopy();【注释】调用该函数将编辑控件中的当前选中文本以CF_TE*T格式拷贝到剪贴板中。〔6〕BOOLCreate(DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID);【返回值】初始化成功,则返回非零值,否则为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_GETMINMA*INFO消息到编辑控件。缺省地,这些消息由CWnd基类中的成员函数OnNcCalcSize,OnCreate,OnNcCreate和OnGetMinMa*Info处理。要扩展缺省的消息处理,先从CEdit类派生一个类,为新类添加消息映射并重载上述消息处理成员函数。例如,重载成员函数OnCreate为新类执行所需要的初始化操作。〔7〕voidCut();【注释】调用该函数来删除(剪切)在编辑控件中的当前选定文本,并将其用CF_TE*T格式拷贝到剪贴板中。由成员函数Cut执行的删除可以由成员函数Undo来撤销。删除当前选定局部而不将已删除文本置于剪贴板,调用成员函数Clear。〔8〕voidEmptyUndoBuffer();【注释】调用此成员函数重新设置(去除)一个编辑控件中的撤消标记,使编辑控件不可撤消最近一次操作。撤消标记在编辑控件的*个操作可以撤消时建立。当调用成员函数SetHandle或基类CWnd类的成员函数SetWindowsTe*t时,撤消标记自动被去除。〔9〕BOOLFmtLines(BOOLbAddEOL);【返回值】如果发生格式化,则返回非零值,否则为0。【参数】bAddEOL指定是否要插入软断行符,值为True时插入软断行符,为False时去掉软断行符。【注释】调用此成员函数用于设置在一个多行编辑控件中是否包含软断行符。一个软断行符包含在断行行末插入两个回车和一个换行,这是因为一行可容纳的文字有限。而一个硬断行符包含一个回车和一个断行。以硬断行符完毕的行不受本成员函数的影响。仅在CEdit类的对象是一个多行编辑控件时Windows才响应此命令。本成员函数仅影响成员函数GetHandle返回的缓冲区和消息WM_GETTE*T返回的文本,而对编辑控件中的显示无影响。〔10〕intGetFirstVisibleLine()const;【返回值】可视的最顶端行的行号(行号由0开场〕,对单行编辑控件来说,返回值为0。【注释】调用此成员函数决定编辑控件中可视的最顶端行的行号。〔11〕HLOCALGetHandle()const;【返回值】一个用于标识多行编辑控件容的局部存句柄。如果发生错误,例如检取信息的编辑控件为单行,则返回值为0。【注释】调用此成员函数来获取一个多行编辑控件中当前分配的存句柄。此句柄是一个局部存句柄,可被任何局部Windows存储函数作为一个参数来获得。此成员函数仅仅被多行编辑控件处理。在一个多行编辑控件的对话框中调用此成员函数时,对话框必须设置风格DS_LOCALEDIT。如果不是,虽然也可以得到一个非零的返回值,但此返回值不可被使用。注意此成员函数不可在Windows95下运行。如果在Windows95下调用,会返回NULL。此成员函数可在WindowsNT3.51版及以上使用。〔12〕UINTGetLimitTe*t()const;【返回值】对当前CEdit类的对象的文本大小限制,以字节计算。【注释】调用此成员函数来获取该CEdit对象的文本大小限制,文本限制是此编辑控件可以接收的文本的最大长度〔以字节计算〕。注意此成员函数仅在Windows95和WindowsNT4.0以上版本中可用。〔13〕intGetLine(intnInde*,LPTSTRlpszBuffer)const;intGetLine(intnInde*,LPTSTRlpszBuffer,intnMa*Length)const;【返回值】实际拷贝的字节数。如果由参数nInde*指定的行号大于此编辑控件的行数,则返回值为0。【参数】nInde*指定从多行编辑控件中检索的行的行号,行号由0指定。对单行编辑控件,此参数被忽略。lpszBuffer指向获取此行备份的缓冲区。缓冲区的第一个字必须指定能被拷贝到缓冲区的最大字节数。nMa*Length指定能被拷贝到缓冲区的最大字节数,本成员函数在调用Windows之前将此值放置到参数lpszBuffer的第一个字中。【注释】调用此成员函数从编辑控件中获取文本的一行并将其放置到参数lpszBuffer缓冲区。被拷贝的行不包括空终止符。〔14〕intGetLineCount()const;【返回值】在多行编辑控件中的包含的一个整数总行数。如果没有向控件输入任何文本,则返回值为-1。【注释】调用此成员函数获取一个多行编辑控件中的总行数。此函数仅应用于多行编辑控件。〔15〕DWORDGetMargins()const;【返回值】双字的低字位为左边距,高字位为右边距。【注释】调用此成员函数获取由成员函数SetMargins设置的编辑控件的左右边距,以像素表示。注意,此成员函数仅在Windows95和WindowsNT4.0以上版本中可用。〔16〕BOOLGetModify()const;【返回值】如果编辑控件的容被改变,则返回值为非零,否则为0。【注释】调用此成员函数测试编辑控件的容是否被改变。Windows有一个部标记来说明编辑控件的容是否被改变。当编辑控件首次被创立时此标记被去除,在调用成员函数SetModify时也被去除。〔17〕TCHARGetPasswordChar()const;【返回值】指定在用户输入字符处显示的字符。如果无密码,则返回NULL。【注释】调用此成员函数获取在用户输入密码时所显示的密码字符。如果编辑控件是用ES_PASSWORD风格建立的,则缺省的密码字符为一个星号(*)。〔18〕voidGetRect(LPRECTlpRect)const;【参数】lpRect指向一个RECT构造类型的数据以接收格式化矩形。【注释】调用此成员函数获取一个编辑控件的格式化矩形。此格式化矩形为文本的边界矩形,与编辑控件窗口的大小无关。多行编辑控件的格式化矩形可以被成员函数SetRect和SetRectNP改变。〔19〕DWORDGetSel()const;voidGetSel(int&nStartChar,int&nEndChar)const;【返回值】此版本返回一个双字,其低位字为起始位置,高位字为被选中字符串后第一个未被选中的字符的位置。【参数】nStartChar指向当前选中局部的第一个字符位置,用整数表示。nEndChar指向被选中字符串后第一个未被选中的字符的位置,用整数表示。【注释】调用此成员函数获取一个编辑控件中当前被选中局部(如果有)的起始和完毕位置,可用参数也可用返回值。注意,中选中编辑控件的最后一个字符时高位字或者第二个参数的值为最后一个字符的索引值加一。中选中的文本不再同一行时,硬断行符也将占据两个索引值,而软换行符将占据3个索引值。每个汉字将占据两个索引值。〔20〕voidLimitTe*t(intnChar=0)const;【参数】nChar指定用户可以输入的文本的长度(以字节枚举〕。如果参数为0,则长度设置为UINT_MA*个字节,这是缺省情况。UINT_MA*的值为0*ffffffff。【注释】调用此成员函数限定用户可以向编辑控件中输入的文本的长度。改变文本限定使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用CWnd类中的成员函数SetWindowTe*t能拷贝到编辑控件中的文本的长度。如果用成员函数SetWindowTe*t输入的文本超过调用成员函数LimitTe*t所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会制止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以。注意,在Win32(Windows95和WindowsNT)中,成员函数SetLimitTe*t可以代替此函数。〔21〕intLineFromChar(intnInde*=-1)const;【返回值】返回由nInde*指定的字符索引的行号,此行号从0开场。如果nInde*为-1,则返回所选局部第一个字符的行号,如果无选定局部,则返回当前行号。【参数】nInde*包含编辑控件文本中所需字符的基于0的索引值,或者包含-1。如果为-1则指定为当前行,即包含脱字符的行。【注释】调用此成员函数获取包含指定字符索引的行的行号,字符索引指编辑控件中从开场到指定字符的字符数。此成员函数仅适用于多行编辑控件。〔22〕intLineInde*(intnLine=-1)const;【返回值】nLine所指定的行的第一个字符的索引值。如果指定的行号大于编辑控件的行数,则返回-1。【参数】nLine包含编辑控件文本中所需字符的行索引值(此索引由0开场),如果为-1则指定为当前行,即包含脱字符的行。【注释】调用此成员函数获取多行编辑控件中一行的第一个字符的索引值,字符的索引值指从文本控件中文本开头到指定行的字符数。此成员函数仅适用于多行编辑控件。〔23〕intLineLength(intnLine=-1)const;【返回值】当成员函数由多行编辑控件调用时,返回由nLine所指定的字符索引值所在行的长度(以字节数表示);当成员函数由单行编辑控件调用时,返回编辑控件中文本的长度(以字节数表示)。【参数】nLine指定要获取长度的行中*一的字符的索引值。如果参数值为-1,表示当前行(即包含脱字符的行),不包括此行中被选中的局部文本的长度。成员函数LineLength在单行编辑控件调用时本参数被忽略。【注释】调用此成员函数获取在编辑控件中一行的字符长度。〔24〕voidLineScroll(intnLines,intnChars=0);【参数】nLine指定纵向滚动的行数。nChars指定水平滚动的字符数。如果编辑控件使用ES_RIGHT或ES_CENTER风格,此值无效。【注释】调用此成员函数滚动多行编辑控件的文本。此成员函数仅用于多行编辑控件。编辑控件的纵向滚动不能超过该文本的最后一行,如果当前行号加上由nLines指定的行数超过编辑控件中的总行数,则它的值被调整而使得文本的最后一行滚动到达编辑控件窗口的顶端。此函数可以水平滚动经过每行的最后一个字符。〔25〕voidPaste()const;【注释】调用此成员函数将剪贴板上的数据插入CEdit的插入点,仅在剪贴板上的数据具有CF_TE*T格式时数据才可以被插入。〔26〕CPointPosFromChar(UINTnChar)const;【返回值】由nChar指定的字符的左上角坐标。【参数】nChar指定字符的索引值(从0开场〕。【注释】调用此成员函数获取此CEdit类的对象中一个指定字符的位置(左上角),此字符由它的索引值给定。如果nChar大于此CEdit对象中最后一个字符的索引,则(-1,-1〕。注意,此成员函数仅适用于以Windows95和WindowsNT开场的版本。〔27〕voidReplaceSel(LPCTSTRlpszNewTe*t,BOOLbCanUndo=FALSE);【参数】lpszNewTe*t指向一个以空终止的替换字符串。bCanUndo如果指定此替代可以被撤消,则将此参数设置为TRUE。缺省值为FALSE。【注释】调用此成员函数将编辑控件中的当前选定局部替换为由参数lpszNewTe*t指定的文本。仅替换编辑控件中文本的一局部。如果要替换全部文本,请使用基类CWnd类的成员函数SetWindowTe*t。如果当前未选定文本,则将文本插入当前光标位置。〔28〕voidSetHandle(HLOCALhBuffer);【参数】hBuffer包含一个指向局部存的句柄。此句柄必须已由WindowsAPI函数LocalAlloc使用LMEM_MOVEABLE标记创立。该存储区被认为包含一个带空终止符的字符串,如果不是这样,则缓冲区的第一个字符应被设置为0。【注释】调用此成员函数设置一个可被多行编辑控件使用的局部存句柄。编辑控件便可以使用此缓冲区来存储当前显示的文本,而不必分配自己的缓冲区。此函数仅对多行编辑控件有效。当应用设置一个新的存储句柄时,应使用GetHandle成员函数获取一个当前缓冲存句柄,并使用WindowsAPI函数LocalFree释放此缓冲区。此函数去除撤消缓冲区(CanUndo成员函数返回0)和部修改标记(GetModify成员函数返回0),编辑控件被重新设置。仅在使用DS_LOCALEDIT风格标志设置构造一个多行编辑控件对话框后,才可以在此对话框中使用此成员函数。注意,此函数不可在Windows95中使用,如果在Windows95中使用成员函数GetHandle会返回NULL。此函数仅在WindowsNT3.51以上的版本中使用。〔29〕voidSetLimitTe*t(UINTnMa*);【参数】nMa*新的文本限制,以字节计算。【注释】调用此成员函数设置编辑控件中的文本的长度限制。此限制是编辑控件可以接收的以字节形式表示的文本大小。改变文本限定仅使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用基类CWnd类的成员函数SetWindowTe*t能拷贝到编辑控件中的文本的长度。如果用基类CWnd类的成员函数SetWindowTe*t输入的文本超过调用成员函数LimitTe*t函数所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会制止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以。在Win32中,成员函数LimitTe*t可以代替此函数。〔30〕voidSetMargins(UINTnLeft,UINTnRight);【参数】nLeft以像素表示的新的文本左边距宽度。nRight以像素表示的新的文本右边距宽度。【注释】调用此成员函数设置编辑控件的左右边距。注意,此成员函数仅在Windows95和WindowsNT4.0以上版本中可用。〔31〕voidSetModify(BOOLbModified=TRUE);【参数】bModifiedTRUE表示文本被改变了,FALSE表示没有改变,缺省情况下设定了改变标志。【注释】调用此成员函数设置或去除编辑控件的改变标志。改变标记说明文本是否被改变。当用户改变文本时,此标志被自动设置,它的值在调用成员函数GetModify时获取。〔32〕voidSetPasswordChar(TCHARch)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论