MFC – Использование элемента “Поле редактирование” Edit Control

Рубрика: MFC, Дата: 12 December, 2014, Автор:

Здорова ребятки!

Сегодня рассмотрим такой элемент как поле редактирование. Это такой элемент, куда можно вводить строки текста в программку. Он используется в диалоговых окнах для ввода различного текста. И так мы создадим программку простейшую на mfc, вот она откомпилированная должна у вас получиться такая как на скрине ниже

MFC edit boxДальше мы добавим пункт меню в программку обработчик левой кнопки мышки по нажатию которой будет вызываться наш диалог и мы введем текст, который по нажатию на кнопку ОК будет выводится в том месте где мы кликнули кнопкой мышки, в рабочей области программы.

Создаем диалог, для этого идем в Окно ресурсов, кликаем правой клавишей мышки над пунктом Dialog и выбираем вставить диалог

MFC insert Dialogу вас появится новый диалог с идентификатором IDD_DIALOG1

mfc dialogИ в рабочей области появится сам диалог

MFC dialog1Нарисуем здесь текстовое поле и придадим диалогу вид как на рисунке ниже.

mfc dialog3Обход кнопок должен быть таким же как на рисунке, как это сделать? Для этого есть подпункт в меню формат->последовательность перехода

mfc formatили можете нажать клавишу Ctrl+D.

Выберите наше поле (Edit Control) и в свойствах проекта выберите подпункт “требуется возврат” и установите его в True, это для того чтобы при нажатии на клавише Enter у вас был перевод каретки, а не нажималась кнопка ОК. Так же нужно поставить свойство “Многострочный” в True иначе переводить на другую строку не будет.

mfc true1

 

Так же добавьте в свойствах “Авто HScrollFalse это для того чтобы строка автоматически переносилась по горизонтали и “Прокрутка по вертикали” в True для того чтобы отобразить полосу прокрутки по вертикали

mfc prokrytka

На этом все, мы настроили Edit Control. Можете запустить и посмотреть как выглядит диалоговое окно нажав комбинацию клавиш Ctrl+T и у вас запустится это окошко.

Теперь добавим класс к нашему диалоговому окну, для этого кликните правой клавишей мышки в области диалогового окна и выберите пункт добавить класс

mfc add classу вас запустится мастер добавления классов приложений, выберите в нем такие настройки как на скрине ниже

mfc add class wizordНажмите кнопку готово и у вас создастся новый класс диалогового окна.

TextDialog.h »

#pragma once


// диалоговое окно CTextDialog

class CTextDialog : public CDialog
{
	DECLARE_DYNAMIC(CTextDialog)

public:
	CTextDialog(CWnd* pParent = NULL);   // стандартный конструктор
	virtual ~CTextDialog();

// Данные диалогового окна
	enum { IDD = IDD_DIALOG1 };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // поддержка DDX/DDV

	DECLARE_MESSAGE_MAP()
};

TextDialog.cpp »

// TextDialog.cpp: файл реализации
//

#include "stdafx.h"
#include "test1.h"
#include "TextDialog.h"
#include "afxdialogex.h"


// диалоговое окно CTextDialog

IMPLEMENT_DYNAMIC(CTextDialog, CDialog)

CTextDialog::CTextDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CTextDialog::IDD, pParent)
{

}

CTextDialog::~CTextDialog()
{
}

void CTextDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CTextDialog, CDialog)
END_MESSAGE_MAP()


// обработчики сообщений CTextDialog

Дальше добавим переменную член класса для элемента управления IDC_EDIT1, кликнул паровой клавишей мышки в Окне классов и настроив мастер добавления так как на скрине ниже

mfc add variableнажмите кнопку готово и все у вас добавится переменная в класс CTextDialog.

Добавим обработчик в WM_LBUTTONDOWN в классе вида, для этого зайдем в свойства класса и выберем это событие.

mfc add onLmouseButtonу вас создастся пустой обработчик OnLButtonDown, добавим в него следующий код который будет вызывать наше диалоговое окно и рисовать текст.

void Ctest1View::OnLButtonDown(UINT nFlags, CPoint point)
{
	CTextDialog aDlg;//создаем диалог
	if(aDlg.DoModal()==IDOK)
	{
		CClientDC aDC(this);
		//вывод по щелчку на клавише ОК, поэтому создать текстовый элемент
		//получаем размер для текста
		CSize textExetent=aDC.GetTextExtent(aDlg.m_TextString);
		CRect rect(point,textExetent);//описывающий прямоугольник
		//рисуем текст
		aDC.DrawText(aDlg.m_TextString,rect,DT_CENTER|DT_VCENTER|
					DT_SINGLELINE|DT_NOCLIP);
	}

	CView::OnLButtonDown(nFlags, point);
}

Все запускаем компилируем и мы можем при клике правой клавиши мышки вводить текст и он будет у нас отображаться в виде программы.

 

mfc hellow worldТак еще ребятки разберем функцию DrawText контекста устройст

aDC.DrawText(aDlg.m_TextString,rect,DT_CENTER|DT_VCENTER|
				DT_SINGLELINE|DT_NOCLIP);

как видим она в качестве третьего параметра принимает константы, что они означают вы можете посмотреть в таблицу

Константы для функции DrawText »

Константа Назначение
DT_LEFT Текст выравнивается по левому краю прямоугольника
DT_CENTER Текст центрируется в прямоугольнике горизонтально
DT_RIGHT Текст выравнивается по правому краю прямоугольника
DT_TOP Текст выравнивается по верху прямоугольника
DT_VCENTER Текст центрируется в прямоугольнике вертикально. Используется только с константой DT_SINGLELINE
DT_BOTTOM Текст выравнивается по низу прямоугольника. Используется только с константой DT_SINGLELINE
DT_SINGLELINE Текст отображается в одной строке. Символы CR и LF игнорируются
DT_NOCLIP Запрет выделения текста. Отображается быстрее
DT_WORDBREAK Строка разделяется по границам слов, противном случае она выйдет за пределы прямоугольника

Если что то не понятно, спрашивайте в комментариях разберемся!

[youtube]https://www.youtube.com/watch?v=Uqk5eb5QrR4[/youtube]

 

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *