CEdit

The CEdit class provides the functionality of an edit control in Microsoft Windows based systems. It is a rectangular child window which can be used to enter text in GUI Programs. This article explains how to use the CEdit class for some of the important operations to be performed in a dialog based program. This is also applicable in SDI/MDI applications which use a dialog box.

CEdit – Setting up the program:

The following steps explain how to setup the base application/dialog box for using the edit control. The class CEdit will be used to manipulate the edit control being used. If this basic set up is already done, readers can skip this section and move to the next one.

  • Create a new MFC AppWizard executable project as a dialog based application.
  • The application can also be an SDI/MDI app, where in the dialog can be inserted as a resource into the SDI/MDI projects.
  • From the controls toolbox, choose the edit control and place it on a dialog box. In the properties dialog of the edit control, enter the resource ID as IDC_EDTEST.
  • If the edit control is supposed to accept only numbers, in the Edit control –> Properties –> Styles tab, set the number property to true by checking the checkbox provided. This makes the CEdit based edit control accept only numbers.
  • Add a class member for the CEdit for the edit control. The code sample in this CEdit article assumes the variable name to be m_Edit.

CEdit – Setting and Retrieving values:

The member functions of CEdit, CEdit .SetWindowText() and CEdit .GetWindowText() can be used to set and get the values on the Edit control. The following is the code sample for setting the values in edit controls.

     //Set the value on CEdit
     CString l_strValue = "Test Value to be set on CEdit";
     m_Edit.SetWindowText(l_strValue);

     //Get the value from the CEdit control
     m_Edit.GetWindowText(l_strValue); //This gets the value into the CString variable l_strValue

CEdit – Using DDX mechanism:

Dynamic Data Exchange offered by MFC is a very useful feature, which allows programmers to ignore the control variables and stick to value based variables. This is an easy way to initialize the values of controls in a dialog box and to retrieve values from the controls. To enable the CEdit control for DDX mechanism the following steps as outlined here may be performed.

Open the Class Wizard.
In the Member Variables tab, click Add Variable button.
In the Add Member Variable dialog box, choose the Category as Value and choose the Variable type as a suitable one. If the values can be manipulated are in character arrays, choose CString, if numbers are going to be manipulated choose Number etc.,
Click Ok and save the project. The control is now DDX enabled.
The following code sample may be used for setting and getting the value on a DDX enabled CEdit control. The sample assumes the variable name as m_strEdit.

//To set the value on a DDX based CEdit control
void DlgName::SetvalueonEdit()
{

UpdateData();
m_strEdit = "Test Value set for DDX";
UpdateData(FALSE);

}
//To get the value on a DDX based CEdit control
void DlgName::GetvalueFromEdit()
{

UpdateData();
CString strStoreValue;
strStoreValue = m_strEdit ;
UpdateData(FALSE);

}

Note: The CEdit control can also be set on a multi-line mode. While working on a multi-line mode the CEdit will give some problems for using the function SetWindowText. The end of line characters won’t be shown properly. To solve this problem, for every end of line append the string with a “rn”.