
- •МIНIСТЕРСТВО ОСВIТИ І НАУКИ УКРАЇНИ
- •КОНСПЕКТ ЛЕКЦІЙ
- •з дисципліни
- •ХАРКIВ 2014
- •Лекция №1: Введение
- •Первая программа
- •Лекция №2: Скелет оконной программы
- •Вступление
- •Лекция №3: Контекст устройства
- •Понятие контекста устройства
- •Объекты и атрибуты контекста устройства
- •Лекция 4: Мышь и таймер
- •Сообщения мыши
- •Захват мыши
- •Таймер
- •Программная реализация
- •Лекция 5: Клавиатура
- •Лекция 6: Дочерние окна
- •Класс кнопок
- •Флажки
- •Переключатели
- •Класс статических дочерних окон
- •Класс полос прокрутки
- •Класс редактирования
- •Класс окна списка
- •Лекция №7: Ресурсы
- •Способы хранения данных программы
- •Общие сведения о файле ресурсов
- •Создание иконок
- •Лекция №8: Ресурсы (меню)
- •Меню
- •MENUITEM SEPARATOR
- •Лекция №9: Ресурсы (быстрые клавиши)
- •Лекция №10: Многозадачность и многопоточность
- •Многопоточность
- •Программная реализация многозадачности
- •Критические разделы
- •Использование событий
- •К вопросу о переменных
- •Инициализация программы
- •Лекция №12: Динамически подключаемые библиотеки
- •Типы связывания
- •Лекция №13: Представление графической информации
- •Метафайлы
- •Лекция № 14: Обзор платформы .NET
- •Обзор платформы .NET
- •Общая схема архитектуры .NET
- •Основные черты MSIL
- •Понятие сборки
- •Манифест: описание сборки
- •Модели безопасности в .NET
- •Електронне навчальне видання
- •КОНСПЕКТ ЛЕКЦІЙ
- •Упорядник ВОЛК Максим Олександрович
Windows адрес своей процедуры и периодичность ее вызова. Все остальное Windows делает автоматически.
Программная реализация
Для настройки таймера на использование в вашей программе можно использовать функцию API SetTimer:
SetTimer(hwnd, ID_TIMERn, iMsecInterval, TimerProc);
где первый параметр определяет окно, оконная процедура которого будет получать сообщение WM_TIMER через каждые iMsecInterval миллисекунды, ID_TIMERn – идентификатор таймера (если ваша оконная процедура получает сообщения от нескольких таймеров, то по этому параметру можно определить от какого именно), TimerProc используется в том случае, когда периодически необходимо вызывать какую-либо функцию: тогда этот параметр является адресом функции.
Рассмотрим пример использования этой функции. Пример 1.
Программе необходимо каждую секунду обновлять данные в окне приложения и каждую минуту выполнять авто-запись в файл.
#define ID_TIMER1 1 #define ID_TIMER2 2
void CALLBACK TimerProc(HWND hwnd, UINT Msg, UINT iTimerID, DWORD dwTimer)
{
// Запись информации на диск
}
int CALLBACK WndProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
.....
switch (Msg)
case WM_CREATE:
SetTimer(hwnd, ID_TIMER1, 60000, (TIMERPROC)TimerProc);
SetTimer(hwnd, ID_TIMER2, 1000, NULL); break;
case WM_TIMER:
28