win32(4)
来源:互联网 发布:疯狂java博客 编辑:程序博客网 时间:2024/04/30 20:43
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
- win32(4)
- Win32状态(sc-win32-status)说明
- Win32 Error Codes (Win32 错误代码)
- Win32 API(一)
- WIN32汇编-(1)
- WIN32汇编-(2)
- win32练习-createprcoess()
- (win32)main&proc
- (win32)键盘消息
- win32(二)
- win32(三)
- win32(四)
- win32(五)
- win32(六)
- win32(七)
- win32(八)
- win32(九)
- win32(十)
- 20140408收盘小结
- 七周项目一,深层复制
- vijos 1069 区间DP
- bsh for android : 天气预报 API
- Hadoop 新 MapReduce 框架 Yarn 详解
- win32(4)
- 车床数控系统界面
- 死循环的另外一种写法
- 找对儿游戏(html5)
- windows 7 (win7) help 帮助文件(.hlp)无法打开的解决
- C++ 重载(overload)、重写(overrride)、重定义(redefine)
- Unity 3D 学习笔记
- android view 焦点总结
- [LeetCode]Populating Next Right Pointers in Each Node