RichEdit中显示的控制
2006-01-26 10:34
288 查看
关于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)
}
该段代码的功能为在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)
}
相关文章推荐
- 在Richedit上进行Delphi代码语法加亮显示
- 使用 RzRichEdit 显示多色彩的Debug信息函数。
- 给激活了WS_HSCROLL,WS_VSCROLL的RichEdit增加自动换行的控制(转)
- RichEdit显示行号
- windows sdk编程 richedit创建,像十六进制编辑器一样显示文件
- 给激活了WS_HSCROLL,WS_VSCROLL的RichEdit增加自动换行的控制(转)
- RichEdit显示文件中的BMP以及插入BMP到RichEdit
- RichEdit 控件:语法高亮显示
- ROS下利用 moveit 控制gazebo模型并在rviz中显示的探索总结
- 给激活了WS_HSCROLL,WS_VSCROLL的RichEdit增加自动换行的控制
- Richedit中图片显示
- Richedit应用:有趣的随机色与随机字符的获取与控制
- 如何在richEdit里面特殊显示某些字符
- 通过ATL COM组件实现在RichEdit中各种图片的显示(包括Gif图片的显示)
- vc6中richedit显示链接的实现
- 给激活了WS_HSCROLL,WS_VSCROLL的RichEdit增加自动换行的控制
- 在UWP中使用RichEditBox只读时图片显示问题(最后有关于RichEditBox颜色问题的解决方案)
- 一个可以显示图片(包括GIF动画)的ATL控件,以及在RichEdit中如何使用此控件插入图片
- c++builder RichEdit的源码显示之亮显(附代码)
- RichEdit显示行号