工控编程吧
标题:
90上位机VC MFC富编辑框文字查找与标识
[打印本页]
作者:
qq263946146
时间:
2015-12-16 21:52
标题:
90上位机VC MFC富编辑框文字查找与标识
(, 下载次数: 0)
上传
点击文件名下载附件
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();
}
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/1eec715ca53c1084336ca02b73039c62/0/0/w_19rt7h97p5.swf-albumId=5033569109-tvId=5033569109-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4