How to Create Rich Edit Controls

来源:互联网 发布:网络流行年轻群体文化 编辑:程序博客网 时间:2024/05/17 02:26

How to Create Rich Edit Controls

To create a rich edit control, call the CreateWindowEx function, specifying the rich edit window class. For Microsoft Rich Edit 4.1 (Msftedit.dll), specify MSFTEDIT_CLASS as the window class. For all previous versions, specify RICHEDIT_CLASS. For more information, see Versions of Rich Edit.

Rich edit controls support most of the window styles used with edit controls as well as additional styles. You should specify the ES_MULTILINE window style if you want to allow more than one line of text in the control. For more information, see Rich Edit Control Styles.

What you need to know

Technologies

  • Windows Controls

Prerequisites

  • C/C++
  • Windows User Interface Programming

Instructions

 Create a Rich Edit Control

The following example function creates a rich edit control and initializes it with some text.

C++
HWND CreateRichEdit(HWND hwndOwner,        // Dialog box handle.                    int x, int y,          // Location.                    int width, int height, // Dimensions.                    HINSTANCE hinst)       // Application or DLL instance.{    LoadLibrary(TEXT("Msftedit.dll"));        HWND hwndEdit= CreateWindowEx(0, MSFTEDIT_CLASS, TEXT("Type here"),        ES_MULTILINE | WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP,         x, y, width, height,         hwndOwner, NULL, hinst, NULL);            return hwndEdit;}

In Microsoft Visual Studio 2005 and later, it is possible to add a rich edit control into a dialog template by dragging the control from the toolbox. However, doing this in the dialog editor does not ensure that the required library will be loaded before the control is created. It is necessary to call the LoadLibrary function to load Riched32.dll, Riched20.dll, or Msftedit.dll before the dialog is created.

Remarks

To use visual styles with these controls, an application must include a manifest and must call the InitCommonControlsfunction at the beginning of the program. For information on visual styles, see Visual Styles. For information on manifests, see Enabling Visual Styles.

Related topics

Using Rich Edit Controls
Windows common controls demo (CppWindowsCommonControls)

 

 

Community Additions

ADD

How to create in C#

By default the RichTextBox control will use only use the 3.0 version of the rich edit control, you can make it use the 4.1 version by creating a subclass with the following code.


    public class RichEdit50 : RichTextBox
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr LoadLibrary(string lpFileName);

        private const string MSFTEDIT_CLASS = "RICHEDIT50W";

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams prams = base.CreateParams;
                if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
                {
                    prams.ClassName = MSFTEDIT_CLASS;
                }
                return prams;
            }
        }
    }

Scott R. Chamberlain
5/29/2013

RichEdit creation

After my complain of usefulness of code in the article, Flavio Fonseca suggested this:

HWND CreateRichEdit(HWND hWndOwner, int x, int y, int width, int height)

{

    LoadLibrary("riched32.dll");

    HWND hWndEdit = CreateWindowEx(WS_EX_CLIENTEDGE, RICHEDIT_CLASS, "", WS_CHILD | WS_VISIBLE | WS_VSCROLL |

                                   WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, x, y, width, height,

                                   hWndOwner, (HMENU) IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);

    return hWndEdit;

}


To compile this code, please add the header file <richedit.h> to your source code.

The variable IDC_MAINEDIT must be implemented as a define directive. Example:


#define IDC_MAINEDIT  101
0 0