win32(4)

1.RichEditView单文档工程——实现查找第一个选中的字符串

(1)新建查找对话框

#include "DlgFind.h"
void CMainFrame::OnButtonFind() 
{
// TODO: Add your command handler code here
CDlgFind *pDlg=new CDlgFind(this);
//pDlg->DoModal();
pDlg->Create(IDD_FIND_DIALOG,this);
//使对话框居中
pDlg->CenterWindow(this);
pDlg->ShowWindow(SW_SHOW);
}

(2)在编辑框中显示选中文本

class CTestDoc;//会报错,添加此声明
#include "TestView.h"
#include "MainFrm.h"

void CDlgFind::OnShowWindow(BOOL bShow, UINT nStatus) 
{
CDialog::OnShowWindow(bShow, nStatus);

// TODO: Add your message handler code here


CEdit *pEdit=(CEdit *)GetDlgItem(IDC_WORD);
pEdit->SetFocus();


CMainFrame *pFrame=(CMainFrame*)AfxGetMainWnd();
CTestView *pView=(CTestView*)pFrame->GetActiveView();
CRichEditCtrl *pCtrl=&(pView->GetRichEditCtrl());
this->SetDlgItemText(IDC_WORD,pCtrl->GetSelText());

//编辑框内的内容设置为选中 
pEdit->SetSel(0,-1);
}

(3)查找第一个匹配的文本

void CDlgFind::OnFind() 
{
// TODO: Add your control notification handler code here
CString word;
GetDlgItemText(IDC_WORD,word);
CMainFrame *pFrame=(CMainFrame*)AfxGetMainWnd();
CTestView *pView=(CTestView*)pFrame->GetActiveView();
CRichEditCtrl *pCtrl=&(pView->GetRichEditCtrl());


FINDTEXTEX ft;
ft.chrg.cpMin = 0;
ft.chrg.cpMax = -1;
ft.lpstrText= (LPSTR) word.GetBuffer(word.GetLength());
long n = pCtrl->FindText(FR_MATCHCASE|FR_DOWN, &ft);
if (n != -1)
pCtrl->SetSel(ft.chrgText);

}

2.在RichEditView中写文本
      一、在文本末尾写文字
  
{
   CString str;
   int nTextLength;
   CRichEditView *pView = GetView();
   CRichEditCtrl &edit = pView->GetRichEditCtrl();
  
   //要写的内容为ABCDEFG
   str = "ABCDEFG";
   //加入换行
   str += " ";
   //获得文字的长度
   nTextLength = edit.GetWindowTextLength();
   //将光标放在文本最末
   edit.SetSel(nTextLength, nTextLength);
   //写入文本
   edit.ReplaceSel(str);
}
  二、在光标后插入文本,可以使用CHARRANGE结构
{
   CString str;
  
   CHARRANGE crPos;
   CRichEditView *pView = GetView();
   CRichEditCtrl &edit = pView->GetRichEditCtrl();
  
   //用CHARRANGE结构体获得选择的文本位置
   edit.GetSel(crPos);
   //要写的内容为12345
   str = "12345";
   //如果没有选中文本,就直接写在光标后
   //如果选中了文本,就替代选中的文本
   if (crPos.cpMin != crPos.cpMax)
   {
     edit.SetSel(crPos.cpMin, crPos.cpMax);
   }
   else
   {
     edit.SetSel(crPos.cpMax, crPos.cpMax);
   }
  
   edit.ReplaceSel(str);  
}
  三、全选文本
{
   CRichEditView *pView = GetView();
   CRichEditCtrl &edit = pView->GetRichEditCtrl();
   edit.SetSel(0, -1);
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值