Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод рекомендации АЯ 2 семестр2.docx
Скачиваний:
112
Добавлен:
23.03.2016
Размер:
1.14 Mб
Скачать

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

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

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

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

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

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

  1. По назначение:

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

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

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

1.2.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

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

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

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);

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

Основные:

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

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

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

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

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); // Параметры сообщения

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