Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разорёнов 2008 full(Краткий конспект).doc
Скачиваний:
11
Добавлен:
21.04.2019
Размер:
1.33 Mб
Скачать

12 Программирование таймера

Информация от таймера поступает двумя способами:

- в виде сообщения WM_TIMER через очередь прикладной программы.

- от функции многократного вызова, которая определяется при вызове функции SetTimer.

Вызов функции SetTimer выглядит следующим образом:

SetTimer(hwnd, 1, iMsecInterval, NULL);

Первый параметр — это описатель того окна, чья оконная процедура будет получать сообщения WM_TIMER. Вторым параметром является идентификатор таймера, значение которого должно быть отличным от нуля. В этом примере он произвольно установлен в 1. Третий параметр — это 32-разрядное беззнаковое целое, которое задает интервал в миллисекундах.

Снятие таймера осуществляется функцией:

KillTimer(hWnd, idTimer),

Где hWnd – handle окна

IdTimer – уникальный идентификатор удаляемого таймера.

После удаления перестают поступать события от таймера.

Когда оконная процедура получает сообщение WM_TIMER, значение wParam равно значению идентификатора таймера, а lParam равно 0. Если нужно более одного таймера, для каждого таймера используется свой идентификатор. Значение параметра wParam позволит различать передаваемые в оконную процедуру сообщения WM_TIMER.

13 Диалоговые окна

Диалоговые окна бывают:

-модальные;

-системные модальные;

-немодальные;

-стандартные окна диалога;

-окно сообщения;

Модальное –блокирует сообщения, поступающие к другим окнам приложения, кроме WM_PAINT.

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

Системное модальное окно диалога вынуждает пользователя, перед тем как он получит возможность сделать что-либо другое в Windows, завершить работу с ним.

Для создания модального диалового окна используется функция:

DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);

hInst – дескриптор приложения; IDD_ABOUTBOX - имя окна диалога (как оно определено в файле описания ресурсов); hWnd - описатель родительского окна окна диалога; About - адрес процедуры диалога. Функция DialogBox не возвращает управление в WndProc до тех пор, пока окно диалога не будет закрыто. Возвращаемым значением функции DialogBox является второй параметр функции EndDialog, которая вызывается в процедуре диалога.

EndDialog(hDlg, LOWORD(wParam));

Немодальные окна диалога создаются с помощью функции CreateDialog. Параметры этой функции те же, что и параметры функции DialogBox: hDlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG2), hWnd,(DLGPROC)IR3);

Отличие состоит в том, что функция CreateDialog сразу возвращает описатель окна диалога. состоит в том, что функция CreateDialog сразу возвращает описатель окна диалога. Как правило, этот описатель хранится в глобальной переменной. Для закрытия немодального окна диалога, вместо функции EndDialog, используется функция DestroyWindow в сообщении WM_CLOSE:

case WM_CLOSE:

DestroyWindow(hDlg);

break;

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

Вызов функции выглядит следующим образом:

iItem = MessageBox(hwndParent, szText, szCaption, iType);

Параметром hwndParent является описатель того окна, которое создает окно сообщения. Если окно сообщения закрывается, то фокус ввода оказывается в этом окне. Если описатель окна недоступен, или если не нужно, чтобы фокус ввода получило одно из окон вашего приложения, то вместо этого описателя можно использовать NULL. Если окно сообщений используется внутри окна диалога, то в качестве этого параметра

используйте описатель окна диалога (который мы назвали hDlg).

Параметр szText — это дальний указатель на оканчивающуюся нулем строку, которая отображается внутри окна сообщения. При необходимости Windows разбивает этот текст на несколько строк.

Строка szCaption обычно соответствует имени приложения.

Параметр iType представляет собой набор флагов, связанных с помощью поразрядного оператора OR языка С.