ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:19.73KB ,
资源ID:8651798      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8651798.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VC++ EDIT控件的SetLimitText用法.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VC++ EDIT控件的SetLimitText用法.docx

1、VC+ EDIT控件的SetLimitText用法用VC+6.0编程的时候,文本编辑控件Edit Box是一个经常用到的控件。如果你是用它输入一些简单的文字、数字等信息,直接拿来用就可以了,但如果你用它制作大文本的编辑软件,就会觉得不好控制,许多功能无法实现,即便用CEditView,也只会生成一个类似于记事本的东西,再想加入些自己编写的功能也很困难。下面我以CEdit为基类定义了一个CEditBox类,加入了许多文本编辑时经常要用到的接口函数,用它来控制Edit Box控件就很容易制作出具有较强文本编辑功能的编辑软件了。在这个扩展类中主要增加了以下功能:增加控件的容量,使它能容纳大文本;可设

2、置编辑控件文字颜色、背景色和字体;对控件内的文本和选择文本的访问;直接装入文件到控件和保存控件内容到文件;自定义的右键菜单;多重ReDo/UnDo功能。这些功能基本上都是独立的,实际使用时可根据需要选用所需功能。准备工作:用ClassWizard在工程中加入一个新类,基类选为CEdit,类名设置为CEditBox。一、设置控件的容量:EditBox控件默认情况下只能装入64K的文本,如果超出,多出部分会被自动截掉。利用CEdit类的SetLimitText()函数可重新设置控件容量。函数原型为:void SetLimitText(UINT nMax);参数为nMax为控件可接收的文本最大字节数

3、。设置方法:用ClassWizard在CEditBox类中添加消息函数PreSubclassWindow(),把设置文本容量的语句放在里面即可。voidCEditBox:PreSubclassWindow()SetLimitText(-1);/设置编辑控件可接收的最大字节数CEdit:PreSubclassWindow(); 因为nMax为无符号整型,-1是把它设置为可以取到的最大值。你也可以根据需要设置控件的容量。注意:在不同操作系统下,控件可设置的最大容量也不同。如果是Windows98,这个值就是64K,无法再增大了,而在Windows2000和WindowsXP下这个值要大得多,才可以

4、起到增加控件容量的目的。二、设置编辑控件的前景色、背景色和字体:在CEditBox的头文件中加入以下变量定义:COLORREFm_ForeColor;/文本颜色COLORREFm_BackColor;/背景色CBrushm_BkBrush;/背景刷CFont*p_Font;/字体指针intm_FontSize;/字体大小(1/10点)CStringm_FontName;/字体名在CEditBox的构造函数中设置它们的初值:CEditBox:CEditBox()m_ForeColor=RGB(0,0,0);/文字颜色(黑)m_BackColor=RGB(255,255,255);/文字背景色(白

5、)m_BkBrush.CreateSolidBrush(m_BackColor);/背景刷p_Font=NULL;/字体指针 在CEditBox的析构函数中回收创建的字体资源:CEditBox:CEditBox()if(p_Font)deletep_Font;/回收字体资源 这里只设置了前景色和背景色的默认值,如果想设置默认字体,可在上面的PreSubclassWindow()函数中进行设置:voidCEditBox:PreSubclassWindow()SetLimitText(-1);/设置编辑控件可接收的最大字节数m_FontSize=100;m_FontName=_T(宋体);p_Fo

6、nt=newCFont;/生成字体对象p_Font-CreatePointFont(m_FontSize,m_FontName);/创建字体SetFont(p_Font);/设置控件默认字体CEdit:PreSubclassWindow(); 这里使用了比较简单的CreatePointFont()函数创建字体,它只需给出字体尺寸和字体名。如果想创建更复杂的字体,可以改用CreateFont()函数。本例中设置控件的初始字体为尺寸为100(0.1点)的“宋体”字。如果你想用EditBox本身的默认字体作为初始字体,就不要在PreSubclassWindow()函数中加入这些语句。用ClassWi

7、zard添加消息反射函数CtlColor()来修改控件的文本颜色和背景色。注意:在ClassWizard下可看到有两个很相似的消息,一个是“=WM_CTLCOLOR”消息,另一个是“WM_CTLCOLOR”消息,这里必须用“=WM_CTLCOLOR”消息添加函数。如果误用了“WM_CTLCOLOR”消息将得不到想要的效果。HBRUSHCEditBox:CtlColor(CDC*pDC,UINTnCtlColor)pDC-SetTextColor(m_ForeColor);/设置控件文字颜色pDC-SetBkColor(m_BackColor);/设置文字的背景色return(HBRUSH)m_

8、BkBrush.GetSafeHandle();/控件背景刷 PreSubclassWindow()和CtlColor()函数都是消息函数,为了设置控件颜色和字体,还需定义接口函数在使用时调用:/设置文本颜色voidCEditBox:SetForeColor(COLORREFcolor)m_ForeColor=color;Invalidate();/获取文本颜色COLORREFCEditBox:GetForeColor()returnm_ForeColor;/设置背景颜色voidCEditBox:SetBkColor(COLORREFcolor)m_BackColor=color;m_BkBr

9、ush.Detach();m_BkBrush.CreateSolidBrush(m_BackColor);Invalidate();/获取背景色COLORREFCEditBox:GetBkColor()returnm_BackColor;/设置字体voidCEditBox:SetTextFont(intFontSize,LPCTSTRFontName)if(p_Font)deletep_Font;p_Font=newCFont;p_Font-CreatePointFont(FontSize,FontName);SetFont(p_Font);m_FontSize=FontSize;m_Font

10、Name=FontName;/获取字体大小intCEditBox:GetFontSize()returnm_FontSize;/获取字体名CStringCEditBox:GetFontName()returnm_FontName; 至此,用CEditBox类可以定义出可设置颜色和字体的Edit Box控件了。使用时,先在对话框中加入一个Edit Box控件,用ClassWizard为定义一个控制变量m_Edit,类型设定为CEditBox。然后用m_Edit.SetForeColor(color)、m_Edit.SetBkColor()和m_Edit.SetTextFont(FontHight

11、,FontName)为控件设置颜色和字体,这样就可以作出一个美观的文本框了。说明:Edit Box控件只能放入纯文本,不支持对文本格式的设置,也就不能对局部的文字颜色和字体进行设置,所以,以上设置都是针对整个控件的。三、访问编辑控件的内容:Edit Box控件已经提供了几种访问控件内容的方法:定义一个与控件关联的变量,类型可设置为CString或其它类型,用UpdateData()函数来更新控件或变量。用GetWindowText()获取控件内文本,用SetWindowText()设置控件文本。用SetSel()设置控件内的选择区,用GetSel()获取控件中选择文本的位置,用ReplaceS

12、el()替换选择的文本。但只用这几种方法还是不太方便,所以在CEditBox类中又增加了几个访问接口函数。1、读取控件文本ReadText()intCEditBox:ReadText(CString&str)GetWindowText(str);/获取控件文本returnstr.GetLength();/文本长度 参数str是字符串的引用,用于接收读取的控件内容,返回值是控件中文本字节数。2、用字符串设置控件内容SetText()voidCEditBox:SetText(LPCTSTRstr)SetSel(0,-1,true);/全选ReplaceSel(str);/替换SetSel(0);/

13、设置插入点为起始位置 参数str是准备设置控件的内容,要求是字符串。3、读取当前选择的文本ReadSelText()intCEditBox:ReadSelText(CString&str)intselStart,selEnd;GetSel(selStart,selEnd);/获取当前选择的位置intselLen=selEnd-selStart;/求选择区长度if(selLen)CStringtext;GetWindowText(text);/获取控件文本str=text.Mid(selStart,selLen);/获取选择的文本elsestr=_T();returnselLen; 参数str是

14、字符串的引用,用于接收读出的文本,返回值是读出的文本字节数。如果当前控件中有内容被选择,则读出选择文本,并返回长度;如果没有选择的文本,读出的是空串,返回为0。4、设置选择区SetSelText()voidCEditBox:SetSelText(intnStartChar,intnSelLen)SetSel(nStartChar,nStartChar+nSelLen); 参数nStartChar为选择区起点(从0算起),nSelLen为选择区长度。功能是把控件的指定区域设置为选择的状态。5、当前是否有选择isSelect()BOOLCEditBox:isSelect()intselStart,

15、selEnd;GetSel(selStart,selEnd);/获取当前选择的位置returnselEnd-selStart; 如果当前控件中有选择的文本,返回非0值,否则返回0。以上是为了使控件访问更方便而增加的接口函数。再配合CEdit本身提供的访问函数,很多操作都可轻易实现了。CEdit控件提供访问函数主要有:int GetWindowText(LPCTSTR lpszStringBuf,int nMaxCount);获取控件文本,与ReadText()功能相同。void SetWindowText(LPCTSTR lpszString);设置控件文本。void GetSel(int&

16、nStartChar,int& nEndChar);获取选择区的位置void SetSel(int nStartChar,int nEndChar,BOOL bNoScroll=FALSE);设置选择区,参数为起点和终点,用SetSel(0,-1)可设置为全选void ReplaceSel(LPCTSTR lpszNewText,BOOL bCanUndo=FALSE);用字符串替换选择的文本四、与文件的接口:这部分接口函数供“打开文件”和“保存文件”等操作调用。把它们定义在CEditBox类中,增强了控件的封装性,也可以简化应用中“打开”和“保存”的操作。1、文件内容装入Edit控件void

17、CEditBox:LoadFile(LPCTSTRPathName)CFilefile;/构造一个CFile类的对象if(file.Open(PathName,CFile:modeRead)=0)/以读方式打开文件return;intlen=file.GetLength();/求文件长度CStringtext=_T();file.Read(text.GetBufferSetLength(len),len);/读文件text.ReleaseBuffer();file.Close();/关闭文件SetText(text);/装入编辑控件m_PathName=PathName;SetModify(f

18、alse);/清除修改标志 参数PathName为文件路径名,调用该函数可以把指定文件装入编辑控件。如果文件不存在,直接返回。2、保存编辑控件内容到文件voidCEditBox:SaveFile(LPCTSTRPathName)CFilefile;if(file.Open(PathName,CFile:modeCreate|CFile:modeWrite)=0)return;CStringtext;inttextLen=ReadText(text);file.Write(LPCTSTR)text,textLen);/把字符串内容写入文件file.Close();/关闭文件m_PathName=

19、PathName;SetModify(false);/清除修改标志 参数PathName为文件路径名,调用该函数可以把控件内容写入指定文件。如果建立文件失败,直接返回。3、新建文件voidCEditBox:NewFile()SetSel(0,-1,true);/全选Clear();/清除m_PathName=_T();SetModify(false);/清除修改标志 供“新建”文件菜单消息调用,功能是清空控件。4、是否有文件打开BOOLCEditBox:isOpenFile()return!(m_PathName.IsEmpty(); 如果控件中已经有打开的文件,返回非0,否则返回0。5、获取

20、打开的文件名CStringCEditBox:GetPathName()returnm_PathName; 如果控件中已经有打开的文件,返回文件路径名,否则返回空串。这5个函数中的m_PathName是在CEditBox中定义的字符串变量,并初始化为空串。五、自定义右键菜单:文本编辑框已经提供了一个默认右键菜单,如果你想重新定义一个来代替它,可以按下面的方法制作。在VC+的Project菜单下选择Add To Project下的Components and Controls,在弹出的对话框中打开Visual C+ Components,找到Pop-up Menu,单击Insert按钮,选择加入的

21、类为CEditBox,确定。关闭对话框。这时,你在CEditBox类中会看到已经加入了下面的代码:voidCEditBox:OnContextMenu(CWnd*,CPointpoint)/CG:ThisblockwasaddedbythePop-upMenucomponentif(point.x=-1&point.y=-1)/keystrokeinvocationCRectrect;GetClientRect(rect);ClientToScreen(rect);point=rect.TopLeft();point.Offset(5,5);CMenumenu;VERIFY(menu.Load

22、Menu(CG_IDR_POPUP_EDIT_BOX);CMenu*pPopup=menu.GetSubMenu(0);ASSERT(pPopup!=NULL);CWnd*pWndPopupOwner=this;while(pWndPopupOwner-GetStyle()&WS_CHILD)pWndPopupOwner=pWndPopupOwner-GetParent();pPopup-TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,pWndPopupOwner); 再到资源的Menu下,你可以找到一个ID号为CG_IDR_POPUP_EDIT_BOX的新菜单,编辑它就可得到你想要的右键菜单了。这和其它菜单的做法没有区别,我就不再详细介绍了。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1