CRichEdit控件操作使用
CRichEdit控件操作相关< 转载><div class="bvMsg">一般性问题
1. 代码编译通过了,运行后RichEdit控件不显示,在InitInstance中添加
BOOL CWinApp::InitInstance ()
{
…
AfxInitRichEdit(); - RichEdit 1.0
或 AfxInitRichEdit2(); - RichEdit 2.0
…
}
2. 升级默认的RichEdit版本,默认的版本有BUG,在InitInstance中添加
BOOL CWinApp::InitInstance ()
{
…
LoadLibrary("RICHED20.DLL");
…
FreeLibrary();
}
如果是CRichEditView基类的话,可用如下消息机制:
BOOL CRichEditView::PreCreateWindow(CREATESTRUCT& cs)
{
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;
return CRichEditView::PreCreateWindow(cs);
}
3. 在RichEdit控件的输入框中最后追加一行
CRichEditCtrl.SetSel(-1, -1);
CRichEditCtrl.ReplaceSel((LPCTSTR)str);
4. 限制RichEdit控件的字数
CRichEditCtrl.LimitText(long nChars)
5. 设置RichEdit控件的换行切换
如果是CRichEditView基类的话,可用如下消息机制:
BOOL CRichEditView::OnInitialUpdate()
{
…
m_nWordWrap = WrapNone;
WrapChanged();
…
}
如果是在Dialog,可使用SetTargetDevice,并在RichEdit的属性里面加上want return
CRichEditCtrl.SetTargetDevice(m_dcTarget, GetPrintWidth());
WrapChanged实际上也是调用
CRichEditCtrl.SetTargetDevice(NULL, 0); //m_nWordWrap == WrapToWindow
CRichEditCtrl.SetTargetDevice(NULL, 1); //m_nWordWrap == WrapNone
CRichEditCtrl.SetTargetDevice(NULL, 2);// m_nWordWrap == WrapToTargetDevice
6. 设置RichEdit控件不带格式的数据粘贴
CRichEditCtrl.PasteSpecial(CF_TEXT);
7. 设置RichEdit控件的滚动条自动随输入滚动到最后一行
int nFirstVisible = CRichEditCtrl.GetFirstVisibleLine();
if (nFirstVisible > 0)
{
CRichEditCtrl.LineScroll(-nFirstVisible, 0);
}
或CRichEditCtrl.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);
页:
[1]