锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源英语 / 用MFC开发带有wordwrapping和文本选择的文本阅读器
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

用MFC开发带有wordwrapping和文本选择的文本阅读器

Background

CTextView is a CView derived class that displays read-only text on the view. What makes it special is the ability to do word wrapping and text selection. This class is a modification of a class I made to parse and display IRC messages exactly like the view in MIRC. The only difference here is the direction of the text. IRC views usually display text from bottom going up, but CTextView does it normally from top to bottom just like Notepad.

You may prefer CTextView over CEditView in instances where you regularly append text to a read-only view and do not want the scrollbar jumping all over the place, where you want to easily add colors without resorting to subclassing the edit control, where you want something slick, smooth and not too bulky. CTextView has no text limit. It uses the IRC color coding scheme to display colors. The picture above is a display of an MIRC log file containing colors.

CTextView是一个CView派生类,在视图上显示只读文本。它的特殊之处在于能够进行自动换行和文本选择。这个类是我用来解析和显示IRC消息的类的修改,就像MIRC中的视图一样。这里唯一的区别是文本的方向。IRC视图通常显示从下往上的文本,但CTextView通常从记事本到上下一样。

你可能更喜欢CTextView,而不喜欢CEditView,特别是,您经常追加文本到一个只读视图和不希望滚动跳跃位置变来变去,有些更好的功能,比如轻松添加颜色,而不诉诸子类的编辑控件,这能功能灵活,光滑而不笨重。CTextView没有文字限制。它使用IRC颜色编码方案来显示颜色。上图是包含颜色的MIRC日志文件的显示。

Using CTextView in Your Code在代码中使用CTextView

To use CTextView in your code, you must change your CView derived class to CTextView derived one. This can be accomplished with a simple text replacement in your derived classes' .h and .cpp files. Import TextView.hTextView.cppMemdc.hMemdc.cppFontObject.hFontObject.cppAutoFont.hAutoFont.cppRegistryManager.hand RegistryManager.cpp into your project.要CTextView在代码中使用,必须将CView派生类更改为派生类CTextView。这可以通过派生类的.h.cpp文件中的简单文本替换来完成。将TextView.hTextView.cppMemdc.hMemdc.cppFontObject.hFontObject.cppAutoFont.hAutoFont.cppRegistryManager.hRegistryManager.cpp导入到您的项目中。

Adding Text添加文字

CTextView::AddLine(CString str)

Appends a line of text to the view. To display colors, format it using the IRC color scheme model, e.g.:在视图中附加一行文本。要显示颜色,请使用IRC颜色方案模型对其进行格式化,例如:

strText.Format("\x03%02d%s\x03 %s",8,"hello","world");
  AddLine(strText);

will display "hello" in yellow and "world" in the default color. The \x03 are color markers. The first \x03 means start color and the last \x03 means stop color. The actual color number must be in xx format, e.g., 08 or 02 or 11 (don't exceed 15).将以hello黄色显示“ ”,并world以默认颜色显示“ ” 。这\x03是颜色标记。第一种\x03方法是开始颜色,最后一种\x03意味着停止颜色。实际颜色编号必须为xx格式,例如08或02或11(不超过15)。

Word Wrapping

void CTextView::SetWordWrap(bool bWrapText)

Changes the word-wrapping mode. If word-wrapping is enabled, a horizontal bar is displayed. Otherwise, it is hidden.更改自动换行模式。如果启用自动换行,则会显示水平条。否则,它是隐藏的。

Text Selection文字选择

The selected text is automatically copied to the clipboard when the mouse is released. Just like in MIRC.释放鼠标时,所选文本会自动复制到剪贴板。就像MIRC一样。

Changing the Font更改字体

void CTextView::SetFont( LOGFONT& rFont )

Sets the font using a logfont structure. I included a class I made called CFontObject which can serialize the font to the registry. I also include my registry class which CFontObject uses for that purpose. Another class called CAutoFont I found on CodeProject is used by CFontObject to create fonts easily. Just call CFontObject("Arial") and a properly sized Arial font will be used. If you don't specify a font, the system font is used.使用logfont结构设置字体。我包含了一个我调用的类CFontObject,它可以将字体序列化到注册表中。我还包括注册表类配合CFontObject来注册。在CodeProject上找到的另一个名为CAutoFont的类用于CFontObject轻松创建字体。只需调用CFontObject("Arial"),即可使用尺寸合适的Arial字体。如果未指定字体,则使用系统字体。

Background, Foreground and Color Table背景,前景和颜色表

These can be changed in the constructor. You can easily add functions to change them at will.这些可以在构造函数中更改。您可以轻松添加功能以随意更改它们。

Flat Scrollbars扁平滚动条

#define USEFLATSB 1

to enable flat scrollbars. Comment it out to use normal scrollbars.启用扁平滚动条。注释掉它以使用普通的滚动条。

To Those Who May Modify the Code对那些可能修改代码的人

For normal use, the only function you'll probably deal with is AddLine. But if you intend to change the source code or tweak your derived classes, there are a few things you should know. If the size of the window or font changes, you should call recalclines(), updatevscroll() and updatehscroll(). If you override OnPaint() in your derived class, please call CTextView::Paint() instead of CTextView::OnPaint(). Remember to pass the correct client rect. If the client rect changes, call SetClientRect() with the correct client rect. CTextView uses the HWND's scrollbars for scrolling. If you need to modify this (especially if you intend to add your own editboxes and listboxes or whatever to the view), replace the scrollbar calls with calls to your own scrollbar class and remove WM_VSCROLL and WM_HSCROLL style from the HWND.对于正常使用,您可能要处理的唯一功能是AddLine。但是,如果您打算更改源代码或调整派生类,您应该知道一些事情。如果窗口或字体的大小发生变化,你应该调用recalclines(),updatevscroll()和updatehscroll()。如果您OnPaint()在派生类中覆盖,请调用CTextView::Paint()而不是CTextView::OnPaint()。记得传递正确的客户端rect。如果客户端rect更改,请SetClientRect()使用正确的客户端rect 调用。CTextView使用HWND滚动条进行滚动。如果您需要修改它(特别是如果您打算在视图中添加自己的编辑框和列表框或其他内容),请将滚动条调用替换为对您自己的滚动条类的调用,WM_VSCROLL并WM_HSCROLL从中删除并设置样式HWND。

 

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内