RichEdit中显示的控制

关于 RichEdit使用的几个经验代码
  • 该段代码的功能为在RichEdit中显示指定的字符串(pPreview,类型为BYTE*),可以为 text 或者 rtf 之类。在有滚动条的情况下,会自动进行滚动,从第一行起始处显示。在显示 rtf 后再显示普通文本时,不会沿用上一个 rtf 中的格式。

其中之所以采用BYTE*型的pPreview,而不使用CString型的sPreview,是因为在Unicode编译环境下编译后,当Windows系统的区域设置不是中国而是English等地方时,采用非Unicode编码的字符串会显示乱码。所以这里采用BYTE*型,并要求将字符串转变Unicode形式。

     CHARRANGE charrage;

     int nFirstVisibleLine = 0;

     charrage.cpMin = 0;

     charrage.cpMax = -1;

     m_ctlRichEdit.SendMessage(EM_EXSETSEL, 0, (LPARAM)&charrage);

     m_ctlRichEdit.SendMessage(EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&m_DefaultCF);

     m_ctlRichEdit.SendMessage(EM_REPLACESEL, false, (LPARAM)pPreview);

     charrage.cpMin = 0;

     charrage.cpMax = 0;

     m_ctlRichEdit.SendMessage(EM_EXSETSEL, 0, (LPARAM)&charrage);

     nFirstVisibleLine = m_ctlRichEdit.SendMessage(EM_GETFIRSTVISIBLELINE, 0, 0);

     m_ctlRichEdit.SendMessage(EM_LINESCROLL, 0, -nFirstVisibleLine);

     m_ctlRichEdit.ShowWindow(SW_SHOW);

  • 设置RichEdit中的字体。进行数据的16进制显示时,为了美观和方便阅读,一般会使用字体自身宽度一定的字体,例如字体"Courier New",或者直接使用系统已定制的字体"ANSI_FIXED_FONT"。

     HFONT hf;

     LRESULT lErrorCode = 0;

     char pBuffer[100];

     CString sTmp;

     hf = (HFONT)GetStockObject(ANSI_FIXED_FONT);     // Set the edit control's font to a fixed-width font.

     m_Font.Attach(hf);

     m_wndRichEdit.SetFont(&m_Font);

  • 该段代码的功能是显示信息之后将进行滚动以显示最后的内容。

     m_wndLog.SendMessage(WM_VSCROLL, SB_BOTTOM, 0);

  • 使用Clear()函数或使用WM_CLEAR消息清除选中文本,RichEdit控件不能为ReadOnly属性。
  • 删除从第一行开始的数行信息,可使用以下代码

void CDSLog::DeleteLines(int nCount)

{

 CHARRANGE cr = { 0 };

 for (int i = 0; i < nCount; i++)

 {

  cr.cpMax += m_wndLog.SendMessage(EM_LINELENGTH, cr.cpMax, 0);

  cr.cpMax++;

 }

 m_wndLog.SendMessage(EM_EXSETSEL, 0, (LPARAM)&cr);

 m_wndLog.SendMessage(EM_REPLACESEL, false, (LPARAM)_T(""));    //此处,如果RichEdit控件不为ReadOnly,可使用WM_CLEAR消息。

 if (m_wndLog.SendMessage(EM_LINELENGTH, 0, 0) == 0)

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值