90上位机VC MFC富编辑框文字查找与标识
90上位机VC MFC富编辑框文字查找与标识 功能展示 系统自带的TXT编辑器都有查找字符功能,我们当前例程也来用CRichEditCtrl控件来实现文字的查找与标识 功能,用户点击SEARCH后,例程会将找到的文本选中,效果如图 要点提示 例程主要是通过Cstring类的Find()函数实现查找字符功能,另外还配有RichEditCtrl类的SetSel(),LineFromChar(),lineindex()函数来实现; SetSel()将控件中指定字符设置为选中状态; LineFromChar(),是根据字符在控件中的索引,获得所在行的索引, lineindex()用于获得字符在本行的索引数; Find()用于查找字符,并返回字符的位置索引,根据这个位置索引可以计算出下一次开始查找的位置; 实现功能 1.新建基于对话框的应用程序,添加函数AfxInitRichEdit();初始化富编辑框控件 2.拖拽一富编号框控件,并关联变量CRichEditCtrl m_RichEdit;一编辑框控件ID为IDC_EDIT1,再添加 一按钮控件,关联函数OnSearch(); 3.添加三个变量用于保存查找的索引值及文本 private: CString m_sText; intm_nStartPos; int m_nLineIndex; 4.在初始化时初始化变量并加载些文字到富编辑框中 CStdioFile file;file.Open("ForTest.txt",CFile::modeRead); CString str; while(1) { DWORDi=file.ReadString(str); if(i==0) goto end;//已读取完 m_sText+=str; m_sText+="\n";} end:m_RichEdit.SetWindowText(m_sText); m_nLineIndex=0; m_nStartPos=0; ForTest.txt为保存在工程根目录的文本文件,里面有保存为测试用的文字 ; 最后是实现查找按钮的查找功能 void CGkbc8Dlg::OnSearch() { m_RichEdit.LineScroll(-m_nLineIndex); CString strfind; GetDlgItem(IDC_EDIT1)->GetWindowText(strfind); intret=m_sText.Find(strfind,m_nStartPos); intstrlen=strfind.GetLength(); m_RichEdit.SetSel(ret,ret+strlen); m_nStartPos=ret+strlen; m_nLineIndex=m_RichEdit.LineFromChar(ret); intlinepos=m_RichEdit.LineIndex(m_nLineIndex); m_RichEdit.LineScroll(m_nLineIndex); m_RichEdit.SetFocus(); } 我们来演示下功能实现的整个过程
|