CAutoRichEditCtrl - automate rich edit formatting and RTF handling.


This article was contributed by Jeremy Iverson.

While MFC does provide a rich edit control, it does not provide a quick and easy way to handle formatting and RTF codes. CAutoRichEditCtrl is a derivative of CRichEditCtrl. This new class adds several functions that allow you to add formatting quickly. It also provides two functions to let you retrieve the formatted text (RTF) in a CString, and to insert an RTF CString into the control.

To use CAutoRichEditCtrl in a dialog box, follow these instructions.

  1. Insert a normal rich edit control in your dialog box.
  2. Using ClassWizard, attach a control variable of type CRichEditCtrl to your control.
  3. Copy AutoRichEditCtrl.cpp and AutoRichEditCtrl.h (download below) to your source directory, and #include "AutoRichEditCtrl.h" in your dialog's header.
  4. In your dialog's header, change CRichEditCtrl to CAutoRichEditCtrl.
  5. In your application's InitInstance (CMyApp::InitInstance()), include a call to AfxInitRichEdit() - this is needed for all rich edit controls.
  6. Add interface elements that use CAutoRichEditCtrls's functions - see below.

Once you've inserted the control into your project, you can add toolbar buttons, menu commands, or other elements to call the following functions:

To see examples of these functions, download the demo app. The source code that shows examples of how to use each function is located in CRichEdDlg::OnExecute().

A quick example here: if you want a rich edit control in a dialog to use formatting, you may create a toolbar with the typical bold, italic, and underline buttons. Just use ClassWizard to add a function for when the user presses the button (like OnBold), then call the right function (like m_richedit.SetSelectionBold();, assuming your rich edit control is named m_richedit). That's all it takes to set up the formatting correctly.

When you want to save the text, just do a CString sText = m_richedit.GetRTF();, then save the string however you like - when you call m_richedit.SetRTF(sText) with the same string, the formatting will be just like it was when you saved it.

Two thank you's are in order for Zafir Anjum and Girish Bharadwaj. The code that streams the RTF string into the control was taken from Zafir's article, Inserting an RTF string using StreamIn. The code that retrieves all the fonts on the system was derived from Girish's article, Owner Drawn Font Selection ComboBox.

While this source code is Copyright 1999 me, feel free to use/modify it for whatever you like. If you do make any modifications or additions, I would appreciate it you let me know (or let everybody know by posting a comment). Also, if you use this in any application, let me know (just for my own curiosity =) ). Of course, this control is provided as is, and no warranty is expressed or implied as to its fitness for any particular purpose.

Hope this helps you out!

Download demo project - 56 KB

Download source - 6 KB

Date Posted: March 18, 1999