Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба5.doc
Скачиваний:
5
Добавлен:
12.11.2019
Размер:
976.9 Кб
Скачать

2.3. Вызов модального диалогового окна

Вызов диалогового окна осуществляется с помощью макроса DialogBox в случаем модального диалогового окна или макроса CreateDialog в случае немодального.

Макрос DialogBox создает модальное диалоговое окно по шаблону из файла ресурсов. DialogBox не возвращает управление пока заданная функция обратного вызова - функция диалогового окна не закроет диалоговое окно с помощью функции EndDialog.

int DialogBox(

HINSTANCE hInstance, // дескриптор приложения

LPCTSTR lpTemplate, // идентификатор диалогового окна

HWND hWndParent, // дескриптор владельца окна

DLGPROC lpDialogFunc // указатель на функцию диалогового окна

);

hInstance - дескриптор модуля, содержащего шаблон диалогового окна

lpTemplate - идентификатор диалогового окна, для преобразование типов можно использовать макрос MAKEINTRESOURCE.

hWndParent - идентифицирует окна, которое является владельцем диалогового окна

lpDialogFunc - указывает на функцию диалогового окна

В случае успешного завершения возвращает значение параметра переданного nResult функции EndDialog, которая закрывает диалоговое окно. В случае неудачи возвращает -1.

Пример вызова:

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

DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),

hwnd, (DLGPROC)Dlg_Proc);

2.4. Закрытие модального диалогового окна

Функция EndDialog разрушает модальное диалоговое окно.

BOOL EndDialog(

HWND hDlg, // дескриптор диалогового окна

int nResult // возвращаемое значение

);

hDlg - идентифицирует диалоговое окно, которое следует закрыть

nResult - определяет значение, которое необходимо вернуть, как возвращаемое значение функции DialogBox, с помощью которой был создано диалоговое окно.

Возващает ненулевое значение в случае удачного завершения, ноль в противном случае.

Пример вызова:

/* закрытие модального окна диалога */

EndDialog (hwnd, 1);

2.5. Вызов немодального диалогового окна

Макрос CreateDialog создает немодальное диалоговое окно.

HWND CreateDialog(

HINSTANCE hInstance,

LPCTSTR lpTemplate,

HWND hWndParent,

DLGPROC lpDialogFunc

);

Параметры макроса CreateDialog аналогичны параметрам DialogBox.

Возвращаемое значение дескриптор диалогового окна в случае удачного завершения и -1 в противном случае.

2.6. Получения и занесения данных в элементы управления диалогового

Для получения и занесения данных в элементы управления диалогового окна используются функции GetDlgItemText и SetDlgItemText.

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

UINT GetDlgItemText(

HWND hDlg, // дескриптор диалогового окна

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

LPTSTR lpString, // указатель на буфер для текста

int nMaxCount // максимальный размер строки

);

hDlg - идентифицирует диалоговое окно, содержащее элемент управления

nIDDlgItem - определяет идентификатор элемента управления, из которого считывается текст или заголовок

lpString - указывает на буфер для получения текста или заголовка

nMaxCount - максимальная длина строки в символах для копирования в буфер, на который указывает lpString.

В случае успешного завершения возвращает количество символов, скопированных в буфер, не включая признак конца строки. В случае неудачи возвращает ноль.

Пример вызова:

/* получение текста из редактора диалога */

GetDlgItemText(hwnd, IDD_EDIT1, s_key, 39);

Функция SetdDlgItemText устанавливает текст или заголовок управляющего элемента.

BOOL SetDlgItemText(

HWND hDlg, // дескриптор диалогового окна

int nIDDlgItem, // дескриптор управляющего элемента

LPCTSTR lpString // текст для установки

);

hDlg - идентифицирует диалоговое окно, содержащее элемент управления

nIDDlgItem - определяет идентификатор элемента управления, для которого устанавливается текст или заголовок

lpString - указывает на строку, оканчивающуюся нулевым символом, содержащую текст для копирования в управляющий элемент.

В случае удачного завершения возвращает ненулевой результат, в случае неудачи возвращает ноль.

Пример вызова:

RegSetValueEx(hKeyRes, ValueName, NULL, REG_SZ, (unsigned char*)s_key, lstrlen(s_key));

Далее приводится демонстрационная программа, которая с помощью диалогового окна читает, записывает и удаляет ключ реестра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]