横秋扫盲系列(4): CRichEditCtrl 超文本编辑(MSN/QQ常用控件) -- 2005-08-28 21:13:15

本文详细介绍了在VC++中使用CRichEditCtrl进行超文本编辑的方法,包括如何升级控件、设置字数限制、换行方式、只读模式、响应变化、设置字体格式、行间距、背景透明、获取内容、查找字符串等功能,并提供了聊天功能如链接、位图插入、GIF动画显示和IRichEditOleCallback的使用示例。
摘要由CSDN通过智能技术生成

一.常见问题
a.可以编译,不能执行的
AfxInitRichEdit();

b.升级默认的Riched版本(默认的有一些bug),如
可在InitInstance中添加
LoadLibrary("RICHED20.DLL")
最后注意 FreeLibrary

如果是CRichEditView基类的可用
BOOL CXXXXXXView::PreCreateWindow(CREATESTRUCT& cs)
{
//装入rich edit version 2.0
if (LoadLibraryA("RICHED20.DLL") == NULL)
{
AfxMessageBox(_T("Fail to load /"riched20.dll/"."),MB_OK | MB_ICONERROR);
PostMessage(WM_QUIT,0,0);
return FALSE;
}

m_strClass = RICHEDIT_CLASSA;//for 2.0 class

return CRichEditView::PreCreateWindow(cs);
}

c.最后追加行
richeditctrl.SetSel(-1, -1);
richeditctrl.ReplaceSel( (LPCTSTR)str );

d.字数限制
CRichEditCtrl::LimitText(long nChars)

e.换行切换
CRichEditView的OnInitialUpdate()函数中加入下面两句:
m_nWordWrap = WrapNone;
WrapChanged();
WrapChanged实际上也是调用
ctrl.SetTargetDevice(NULL, 1); //m_nWordWrap == WrapNone
ctrl.SetTargetDevice(NULL, 0); //m_nWordWrap == WrapToWindow
还有不常用的 m_nWordWrap == WrapToTargetDevice
ctrl.SetTargetDevice(m_dcTarget, GetPrintWidth());
如果是在Dialog中,可使用SetTargetDevice,注意在属性里面加上want return

f.有时候不希望带格式的数据粘贴,可通过PasteSpecial选择性粘贴
pmyRichEditCtrl->PasteSpecial(CF_TEXT);

g.随着输入随着自动滚动条滚动到最后一行
int nFirstVisible = pmyRichEditCtrl->GetFirstVisibleLine();
if (nFirstVisible > 0)
{
   pmyRichEditCtrl->LineScroll(-nFirstVisible, 0);
}

m_cRichEdit.PostMessage(WM_VSCROLL, SB_BOTTOM,0);


h.设置UNDO的次数(只能用在RICHED20以上,即默认不支持,必须升级)
SendMessage(EM_SETTEXTMODE,TM_MULTILEVELUNDO,0);
TM_MULTILEVELUNDO 支持多取消(默认值).可通过EM_SETUNDOLIMIT设置最大次数
SendMessage(EM_SETUNDOLIMIT,100,0);

i.响应OnChange
EM_SETEVENTMASK 设置 ENM_CHANGE
long lMask = GetEventMask();
lMask |= ENM_CHANGE;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
CRichEditCtrl是一个强大的编辑控件,类似于QQ中的文本输入框。它提供了许多丰富的功能和属性,使用户可以在文本框中进行各种编辑操作。 首先,CRichEditCtrl支持格式化文本的输入和显示。用户可以在文本框中输入普通文本、图像、表格等多种内容,并且可以对这些内容进行格式化,如设置字体、字号、颜色、对齐方式等,使文本呈现出更加丰富多样的样式。 其次,CRichEditCtrl还支持富文本编辑。用户可以在文本框中进行插入和删除操作,如插入链接、插入图片、插入超链接等。同时,用户还可以对文本进行复制、粘贴和剪切等操作,实现对文本内容的高效编辑和管理。 此外,CRichEditCtrl还提供了撤销和重做功能,使用户可以方便地撤销之前的编辑操作,并重新执行已经撤销的操作。这样,用户就可以随时回退到之前的状态,确保编辑操作的准确性和完整性。 最后,CRichEditCtrl还支持自动完成和输入提示功能。用户在输入文本时,CRichEditCtrl可以自动提供半透明的输入提示窗口,显示可能的补充内容,如常用词汇、表情符号等,帮助用户快速输入并提高输入效率。 综上所述,CRichEditCtrl类似于QQ中的编辑控件,它具有强大的编辑功能、支持富文本编辑和格式化显示、提供撤销和重做功能,同时还支持自动完成和输入提示。这使得用户可以在文本输入时体验到更多的便捷和灵活性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值