
- •Оглавление
- •1 Простейшее Win32 приложение
- •2 Функция WinMain
- •3 Оконный класс
- •4 Стили класса, стили окна
- •5 Создание экземпляра оконного класса
- •6 Динамические изменения свойств оконного класса
- •7 Обработка сообщений
- •8 Программирование клавиатуры
- •9 Коды oem, ansii, asci, виртуальные коды клавиш
- •10 Символьные сообщения
- •11 Обработка сообщений от мыши
- •12 Программирование таймера
- •13 Диалоговые окна
- •14 Структура шаблона диалога
- •14(А) Ресурсы диалога
- •15 Функции создания диалога
- •16 Взаимодействие между элементами управления
- •17 Сообщения, SendMessage, SendDlgItemMessage
- •18 Обработка сообщений от элементов диалога
- •19 Элемент «Слайдер» (Румянцев - Азбука программирования в Win32 api, c.148)
- •20 Элемент ProgressBar (Румянцев - Азбука программирования в Win32 api, c.156)
- •21 Bios (общие сведения)
- •22 Файлы (общие сведения)
- •23 Создание файла (Win32 api)
- •24 Операции с файлом (Win32 api)
- •25 Организация файлов
- •26 Файловые системы (общие сведения)
- •Создание файла.
- •Удаление файла.
- •28 Структура логического диска под fat12 (wfat)
- •29 Каталоги в fat12
- •30 Алгоритм определения расположения файлов на диске
- •31 Ф.С. Fat32 (отличительные особенности)
- •32 Изменение элементов системных объектов при выполнении copy
- •33 Ntfs (общие сведения)
- •34 Запись файла в mft
- •35 Метафайлы
- •36 Атрибуты записи файла
- •37 Изменение системных данных при выполнении copy
- •38 Изменение системных данных при выполнении del
- •39 Изменение системных данных при выполнении move
- •40 Процессы. Потоки. Общие сведения
- •41 Модель процесса
- •42 Контекст процесса
- •43 Дескриптор процесса
- •44 Создание процесса (общие сведения)
- •45 Окончание процесса (общие сведения)
- •46 Состояния процесса
- •47 Уровни планирования процессов
- •48 Диспетчеризация процессов
- •49 Класс приоритета процесса
- •50 Создание процесса (Win32 api)
- •51 Win32 Api. Управление процессами
- •52 Win32 Api. Окончание процесса
- •53 Среда процесса
- •54 Командная строка процесса
- •55 Наследование дочерними процессами ресурсов родителя
- •56 Список процессов
- •57 Время выполнения процесса
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 языка С.