MFC RichEdit 实现多行显示,并自动滚屏
CRichEditCtrl m_rheditOutputText;
m_rheditOutputText.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);
CString curdata = str + "\r\n";
CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |
CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
cf.yHeight = 6 * 6;//文字高度
m_rheditOutputText.SetReadOnly(TRUE);
cf.crTextColor = color; //文字颜色
m_rheditOutputText.SetSelectionCharFormat(cf);
m_rheditOutputText.SetSel(-1, -1);
m_rheditOutputText.ReplaceSel(curdata);
想做txt阅读器时发现
richedit
的scrollbar位置(为了下次阅读方便,下次读取直接获取上次阅读位置)不好处理,使用GetScrollPos、SetScrollPos能够获取设置scorllbar位置的值,但是!SetScorllPos调用后只更新了scorllbar的位置
richedit
的内容没得到更新,google一下没有个现成的解决,只得msdn。
WM_VSCROLL重点标记一
RichEdit
的意思是“富文本编辑控件”,在Edit的基础上添加了很多功能,如对不同字体、字号、文本颜色、背景色、插入Ole对象的支持,Windows系统的写字板就是基于
RichEdit
的。这篇文章就是介绍
RichEdit
的相关知识的。
滚
动条的属性设置是在Window节点下设置的,无论在xml里怎么样设置都不
行
:
<Default name="VScrollBar" value="button1normalimage=&quot;file=&apos;scrollbar.bmp&apos; source=&apos;0,90,16,106&a...
m_pChatRecordListBox = (
RichEdit
*)FindControl(_T("chat_form"));
//初始化时加载富文本框控件,忽略
Load();
//加载完毕后直接设置 移动到底部。会出现问题,进到页面时是空白,需要移动鼠标才会出现
((ScrollableBox*)m_pChatRecordListBox)->EndDown();
//我们可以等
RichEdit
控件加载完毕后,再设置延时移动到底部
//可以在另一个线程中添加延时Sleep,然后再执
行
//需要注
首先,在页面上添加两个
RichEdit
2控件,添加变量为C
RichEdit
Ctrl类型的m_edit1和m_edit2.
在CXXXDlg::CXXXDlg里添加:
AfxInit
RichEdit
2();
LoadLibrary(_T("RICHED20.DLL"));
VS2019中,C
RichEdit
使用不像CEdit一样,可以直接通过添加事件处理程序来对事件进
行
相应。默认的event mask是ENM_NONE,意味着没有讯息会发送给parent window。需要给event mask设置EN
RichEdit
.SelAttributes.Color := TypeAndColor.Color;
RichEdit
.Lines.Add(TypeAndColor.StrData + str);
PostMessage(
RichEdit
.Handle, WM_VSCROLL, SB_BOTTOM, 0);