Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Окно ввода






 

Окно ввода будет последним элементом управления, который мы добавим в диалог в этой главе. Окна ввода применяются для ввода текстовых строк. Перед добавлением окна ввода в программе необходимо описать его в файле ресурсов. В данном случае следует изменить Mydialog.rc так, чтобы описание диалога выглядело следующим образом:

 

MYDB DIALOG 18, 18, 142, 92

CAPTION " Первый диалог"

STYLE DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENU

{

DEFPUSHBUTTON " Красный", IDD_RED, 57, 45, 36, 14,

WS_CHILD|WS_VISIBLE|WS_TABSTOP

PUSHBUTTON " Зеленый", IDD_GREEN, 95, 45, 36, 14,

WS_CHILD|WS_VISIBLE|WS_TABSTOP

PUSHBUTTON " Сброс", IDCANCEL, 52, 65, 37, 14,

WS_CHILD|WS_VISIBLE|WS_TABSTOP

PUSHBUTTON " Выбери фрукт", IDD_SELFRUIT,

2, 45, 50, 14, WS_CHILD|WS_VISIBLE|WS_TABSTOP

PUSHBUTTON " Конец ввода", IDOK, 68, 22, 60, 14,

WS_CHILD|WS_VISIBLE|WS_TABSTOP

LISTBOX ID_LB1, 2, 10, 47, 28, LBS_NOTIFY|WS_CHILD|

WS_VISIBLE|WS_BORDER|WSJVSCROLL|WS_TABSTOP

EDITTEXT ID_EB1, 68, 8, 72, 12, ES_LEFT|

ES_AUTOHSCROLL|WS_CHILD|WS_VISIBLE|WS_BORDER|

WS_TABSTOP

 

 

Рис. 5.2. Пример диалога со списком

 

В этой версии файла ресурсов добавлена кнопка Конец ввода, нажатие которой означает окончание ввода текста. Кроме того, добавлено само окно ввода.

Оператор EDITTEXT создает окно ввода в диалоге:

 

EDITTEXT ID, X, Y, Width, Height[, стиль]

 

Здесь ID задает идентификатор элемента управления, Х и Y – координаты его верхнего левого угла, Width и Height – размеры, а стиль определяет его внешний вид (стили, которые могут быть использованы, приведены в табл. 5.1).

Затем в Mydialog.h нужно добавить следующее макроопределение:

 

#define ID_ED1 107

 

Окна ввода могут не только принимать сообщения, но и генерировать их. Однако в нашем примере обработка всех сообщений не требуется. Вы увидите, что окна ввода автоматически выполняют все необходимые действия для редактирования текста, так что в процессе ввода текста Вашей программе не нужно будет взаимодействовать с окном ввода, – ей потребуется просто решить, когда следует получить текущее содержимое окна ввода. Для этого следует использовать функцию API GetDlgItemText():

 

UINT GetDlgltemText(HWND hdwnd, int nID,

LPSTR lpstr, int nMax);

 

Эта функция копирует содержимое окна ввода в строку-буфер, указатель на которую передается в параметре lpstr. При этом копируется не более nMax символов. Параметр hdwnd передает дескриптор окна диалога, a nID – идентификатор окна ввода.

Чтобы добавить в программу работу с окном ввода, дополните вложенный оператор switch в DialogFunc() приведенным ниже фрагментом кода. При нажатии кнопки Конец ввода откроется окно сообщения, содержащее текущий текст окна ввода.

 

case IDOK: // Нажата кнопка " Конец ввода",

// показать содержимое окна ввода

GetDlgItemText(hdwnd, ID_EB1, str, 80);

MessageBox(hdwnd, str, " Содержимое окна ввода",

MB_OK);

return 1;

 

Макроимя IDOK было ранее определено в Windows.h.

 

Пример 5-3. С помощью сравнительно небольшой модификации программа, приведенная в примере 2, превращается в приложение с окном ввода. Проделайте эти изменения самостоятельно. На рис. 5.3 представлен результат работы программы с окном ввода.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.