Пиши Дома Нужные Работы


Цель и задачи работы, требования к результатам ее выполнения

Цель работы состоит в изучении основных API (Application Programming Interface) функций для работы с диалоговыми окнами и элементами управления и в овладении навыками разработки программ на языке Си++ с использованием диалоговых окон и элементов управления. Для достижения цели необходимо выполнить следующие задачи:

- изучить необходимые учебные материалы, посвященные использованию диалоговых окон и элементов управления в языке Си++ с помощью API- функций Windows [1, 3, 4];

- разработать программу на языке Си++ для решения заданного варианта задания;

- отладить программы;

- представить скриншот окна с результатами работы программы;

- подготовить отчет по лабораторной работе.

Краткая характеристика объекта изучения

Классификация диалоговых окон

Диалоговые окна можно классифицировать по следующим признакам:

1) Признак модальности:

- модальные (блокируют работу пользователя с родительским окном до тех пор, пока пользователь модальное диалоговое окно не закроет);

- немодальные (не блокируют работу пользователя с родительским окном).

2) По назначение:

- окна сообщений;

- стандартные (выбор файла, выбор цвета, выбор шрифта и др.);

- специальные (создаются программистом для решения своих задач).

 

Окна сообщений

Функция для создания окна сообщений может иметь заголовок:

int MessageBoxA(HWND hWnd , // Хэндл родительского окна

LPCSTR lpText, // Текст в окне

LPCSTR lpCaption, // Заголовок

UINT uType); // Тип окна (наличие кнопок и иконка)

Возможные значения параметра uType задаются константами:

MB_OK

MB_OKCANCEL

MB_ABORTRETRYIGNORE

MB_YESNOCANCEL

MB_YESNO

MB_RETRYCANCEL

MB_ICONHAND

MB_ICONQUESTION

MB_ICONEXCLAMATION

MB_ICONASTERISK

Константы, задающие наличие кнопок и вид иконки (MB_ICON…), можно использовать совместно с помощью поразрядной операции «ИЛИ» ( | ).

Возвращаемое значение зависит от того, какая кнопка нажата для закрытия окна. Возможные значения:

IDOK

IDCANCEL

IDABORT

IDRETRY

IDIGNORE

IDYES

IDNO

Создание модального диалогового окна

Удобнее всего диалоговое окно вместе со своими элементами управления описывать в файле ресурсов. В этом случае функция для создания окна имеет заголовок:

DialogBox(hInstance, //Хэндл приложения

lpTemplate, //Строка-название ресурса окна

hWndParent, //Хэндл родительского окна

lpDialogFunc); //Указатель на функцию окна

Функция для закрытия окна:

BOOL EndDialog(HWND hDlg, // Хэндл закрываемого окна

int nResult); // Значение, которые вернет DialogBox при выходе

Для инициализации диалогового окна (задания начального состояния элементов управления, присвоения значений переменным и др.) необходимо обработать сообщение WM_INITDIALOG.

Ниже показан пример функции окна для диалогового окна, имеющего две стандартных кнопки Ok и Cancel.

BOOL CALLBACK DialogFun(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

switch(message)

{

case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:

switch(LOWORD(wParam))

{

case IDOK:

case IDCANCEL:

EndDialog(hwnd, LOWORD(wParam));

return TRUE;

}

 

}

return FALSE;

}

Пример создания этого диалогового окна, определенного в файле ресурсов с идентификатором IDD_DIALOG1:

if (DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DialogFun)==IDOK)

MessageBox(0, "Нажата Ok", "Сообщение", MB_OK);

else

MessageBox(0, "Нажата Cancel", "Сообщение", MB_OK);

Элементы управления диалогового окна

Основные:

– кнопка, контрольный переключатель, радиокнопка, текстовое поле, список,…

Общие или дополнительные (требуется подключение специальной библиотеки):

– строка состояния, спин, регулятор, индикатор процесса, ...

Большинство элементов управления является разновидностями окон. Функция для получения хэндла элемента управления имеет заголовок:

HWND GetDlgItem(HWND hDlg, //Хэндл род. окна

int nIDDlgItem); //Идентификатор элемента управления

Функции для посылки сообщений элементам управления имеют заголовки:

LRESULT SendDlgItemMessage( HWND hDlg, // Хэндл диалогового окна

int nIDDlgItem, // Идентификатор элемента управления

UINT Msg, // Тип сообщения

WPARAM wParam, LPARAM lParam); // Параметры сообщения

LRESULT SendMessage(HWND hWnd, // Хэндл элемента управления

UINT Msg, // Тип сообщения

WPARAM wParam, LPARAM lParam); // Параметры сообщения

Рассмотрим некоторые элементы, которые необходимо использовать при выполнении лабораторной работы.

Кнопка, контрольный переключатель, радио кнопка

Сообщение, приходящее от элементов управления WM_COMMAND.

Младшее слово wParam содержит значение идентификатора элемента управления. Старшее слово wParam определяет действия с кнопкой (нотификационные сообщения), некоторые возможные значения:

BN_CLICKED // «Нажатие» на элемент

BN_PAINT // Перерисовка элемента

BN_DOUBLECLICKED // Двойной щелчок

BN_SETFOCUS // Элемент получил фокус ввода с клавиатуры

BN_KILLFOCUS // Элемент потерял фокус ввода с клавиатуры

Сообщения, которые можно посылать элементам:

BM_GETCHECK BM_SETCHECK BM_GETSTATE BM_SETSTATE BM_SETSTYLE BM_CLICK BM_GETIMAGE BM_SETIMAGE

Текстовое поле

Сообщение от текстового поля, аналогичное как для кнопок- WM_COMMAND.

Некоторые нотификационные сообщения от текстового поля (старшее слово wParam):

EN_SETFOCUS // Элемент получил фокус ввода с клавиатуры

EN_KILLFOCUS // Элемент потерял фокус ввода с клавиатуры

EN_CHANGE // Текст в текстовом поле изменен

Основные сообщения, которые можно посылать текстовым полям:

WM_SETTEXT // Поместить текст в текстовое поле

WM_GETTEXT // Извлечь текст из текстового поля

Примеры

Поместить текст в текстовое поле:

SendDlgItemMessage(hwnd, IDC_EDIT1, WM_SETTEXT, 0, (LPARAM)Text);

Получить текст из текстового поля:

SendDlgItemMessage(hwnd, IDC_EDIT2, WM_GETTEXT, 255, (LPARAM)Text);

До этого где- то объявлен массив символов, в котором текст хранится как строка: char Text[256];

Список

Элементами списка являются строки. Индексация элементов начинается с нуля. Сообщение от списка такое же, как для рассмотренных выше элементов- WM_COMMAND.

Коды некоторых нотификационных сообщений, приходящих от списка (старшее слово wParam):

LBN_SELCHANGE // Выбор элемента изменен

LBN_DBLCLK // Двойной щелчок на элементе списка

LBN_SETFOCUS // Элемент получил фокус ввода с клавиатуры

LBN_KILLFOCUS // Элемент потерял фокус ввода с клавиатуры

Коды некоторых сообщений, посылаемых списку:

LB_ADDSTRING // Добавить строку в список

LB_INSERTSTRING // Вставить строку в список

LB_DELETESTRING // Удалить элемент из списка

LB_SETCURSEL // Установить выбор заданного элемента

LB_GETCURSEL // Получить индекс выбранного элемента

LB_GETTEXT // Получить текст из элемента

LB_GETCOUNT // Получить число элементов списка

LB_RESETCONTENT // Очистить список

Примеры посылки сообщений списку

Добавить строку текста в список:

SendDlgItemMessage(hwnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)Text);

Получить индекс выделенного элемента:

int i=SendDlgItemMessage(hwnd, IDC_LIST1, LB_GETCURSEL, 0, 0);

Извлечь строку из элемента с индексом i:

SendDlgItemMessage(hwnd, IDC_LIST1, LB_GETTEXT, i, (LPARAM)Text);

Удалить элемент с индексом i:

SendDlgItemMessage(hwnd, IDC_LIST1, LB_DELETESTRING, i, 0);

Очистить список:

SendDlgItemMessage(hwnd, IDC_LIST1, LB_RESETCONTENT, 0, 0);






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2017 pdnr.ru Все права принадлежат авторам размещенных материалов.