
- •Министерство образования и науки Российской Федерации
- •1. Работа с реестром
- •1.1. Создание - открытие раздела
- •1.2. Чтение параметров раздела реестра
- •1.3. Занесения значения параметра раздела реестра
- •1.4. Закрытие раздела
- •1.5. Удаление раздела
- •2. Диалоговые окна. Определение и назначение
- •2.1. Описание диалогового окна в файле ресурсов
- •2.2. Функция диалогового окна
- •2.3. Вызов модального диалогового окна
- •2.4. Закрытие модального диалогового окна
- •2.5. Вызов немодального диалогового окна
- •2.6. Получения и занесения данных в элементы управления диалогового
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •Приложение Файл reg_dlg.Cpp
- •Файл reg_dlg.Rc
- •Файл resource.H
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));
Далее приводится демонстрационная программа, которая с помощью диалогового окна читает, записывает и удаляет ключ реестра.