
- •2) Виртуальная память
- •3) Вывод информация в окно с помощью классов из библиотеки mfc.
- •4) Иерархия классов библиотеки mfc.
- •5 Императивное, функциональное и логическое программирование. Сходство и различие.
- •6)Контейнерные классы библиотеки mfc.
- •7)Контекст устройства. Классификация контекстов устройств. Функции работы с контекстами устройств
- •8. Назначение и Классификация ппп
- •9) Направления интеллектуализации пакетов прикладных программ.
- •10.Направления интеллектуализации ппп. Типология задач интеллектуализации.
- •11) Обработка исключений с помощью библиотеки mfc.
- •12)Обработка сообщений в библиотеке mfc
- •13) Общая характеристика ппп. Функциональное и системное наполнение ппп. Типовые проекты ппп.
- •14) Объекты в Win32. Классификация объектов. Функции работы с объектами Win32.
- •16)Организация асинхронного ввода. Сообщения от манипулятора типа «мышь». Сообщения от клавиатуры (см также 33!!!)
- •17 Организация взаимодействия процессов и потоков в Win32.Процессы и потоки в Win32. Приоритеты. Планирование
- •18 Основнные понятия объектно-ориентированного программирования.
- •19) Библиотека stl.
- •21)Полиморфизм. Перегрузка методов и операторов. Виртуальные методы.
- •23) Понятие сериализации.
- •24 Стандартные элементы управления
- •25) Процессы и потоки в Win32. Приоритеты. Планирование процессорного времени. Функции работы с процессами и потоками.
- •26)Архитектура «документ/представление»
- •Глава 20. Документ и его представления
- •Глава 21. Печать и предварительный просмотр документов
- •27) Реализация многопоточных приложений с использованием библиотеки mfc.
- •28 Ресурсы Windows. Способы задания ресурсов Windows-приложения и их использования.
- •29) Системы координат
- •29 Система координат
- •30 Средства реализации взаимного исключения в Win32.
- •31)Стандартные элементы управления и диалоговые панели в библиотеке mfc.
- •32 Структура windows приложения.
- •33) Структура и типология сообщений в Win32. Классиф сообщений. Очередь сооб, ф-ункции работы с ней. (см также 16!)
- •34) Таймер. Назначение, свойства и особенности использования
- •2) Можно заставить Windows пересылать сообщения другой функции этого же приложения.
- •35) Технологии конструирования по
- •36) Шаблоны классов и функций
- •37) Шрифты Типы шрифтов
- •Создание dll
34) Таймер. Назначение, свойства и особенности использования
Таймер в Windows является устройством ввода информации, которое периодически извещает приложение о том, что истек заданный интервал времени. Приложение сообщает системе Windows интервал времени, а затем Windows периодически посылает приложению сообщения WM_TIMER, сигнализируя об истечении интервала времени. Рассмотрим возможные случаи применения таймера в Windows:
Режим автосохранения
Поддержка обновления информации о состоянии Завершение демонстрационных версий программ
Эмуляция многозадачности
Задание темпа изменения
Сообщения от таймера.Присоединить таймер к программе можно при помощи вызова функции SetTimer. Функция SetTimer содержит целый параметр, задающий интервал в миллисекундах – это значение определяет темп, с которым Windows посылает программе сообщения WM_TIMER.
Для остановки потока сообщений от таймера приложение должно вызвать функцию KillTimer. Вызов KillTimer очищает очередь сообщений от всех необработанных сообщений WM_TIMER.
сообщения таймера ставятся в обычную очередь сообщений и обрабатываются как все остальные сообщения.
сообщения WM_TIMER и WM_PAINT имеют низкий приоритет, и программа получит их, только если в очереди нет других сообщений.
Windows не хранит в очереди сообщений несколько сообщений WM_TIMER. Вместо этого Windows объединяет несколько сообщений WM_TIMER из очереди в одно сообщение. В результате приложение не может определить число “потерянных” сообщений WM_TIMER.
Таймер можно использовать одним из трех способов, в зависимости от параметров функции SetTimer.
1) SetTimer(hWnd,1,1000,NULL);
Первый параметр – дескриптор того окна, чья оконная процедура будет получать сообщения WM_TIMER.
Вторым параметром является идентификатор таймера, значение которого должно быть отлично от нуля. В этом примере он произвольно установлен в 1.
Третий параметр – это 32-разрядное беззнаковое целое, которое задает интервал в миллисекундах (значение 1000 задает генерацию сообщений WM_TIMER один раз в секунду).
2) Можно заставить Windows пересылать сообщения другой функции этого же приложения.
Функция, которая будет получать эти таймерные сообщения, -функцией обратного вызова (call-back). Эта функция приложения, которую вызывает Windows. Приложение сообщает Windows адрес этой функции, а позже Windows вызывает ее (оконная процедура фактически является такой функцией обратного вызова).
четвертый параметр функции SetTimer заменяется адресом функции обратного вызова:
SetTimer(hWnd,1,1000,(TIMERPROC)TimerProc);
3) параметр hWnd функции SetTimer устанавливается NULL, а второй параметр (обычно идентификатор таймера) игнорируется. Функция возвращает ID таймера (возвращаемое функцией значение будет равно NULL, если таймер недоступен):
UINT iTimerID=SetTimer(NULL,0,1000,(TIMERPROC)TimerProc);
Сообщения таймера.
Таймер – это устройством ввода информации, которое периодически извещает приложение о том, что истек заданный интервал времени. WM_TIMER
Применение таймера:
Режим автосохранения – таймер может предложить программе сохранять работу пользователя на диске всегда, когда истекает заданный интервал времени.
Поддержка обновления информации о состоянии – программа может использовать таймер для вывода на экран обновляемой в реальном времени, постоянно меняющейся информации, связанной либо с системными ресурсами, либо с процессом выполнения отдельной задачи.
Завершение демонстрационных версий программ – некоторые демонстрационные версии программ рассчитаны на свое завершение через какое-либо заданное время после запуска. Таймер может сигнализировать таким приложениям, когда их время истекает.
Эмуляция многозадачности –Если программа должна выполнять большой объем работы, она может разделить задачу на части и обрабатывать каждую часть при получении сообщения от таймера.
Задание темпа изменения – графические объекты в играх или окна с результатами в обучающих программах могут нуждаться в задании установленного темпа изменения.
Сообщения от таймера
SetTimer – функция, присоединяющая таймер к программе, содержащая параметр, задающий интервал в миллисекундах – это значение определяет темп, с которым Windows посылает программе сообщения WM_TIMER.
KillTimer – функция для остановки потока сообщений от таймера, очищает очередь сообщений от всех необработанных сообщений WM_TIMER.
Приложения Windows получают сообщения WM_TIMER из обычной очереди сообщений, т.е. работа приложения не будет прервана внезапным сообщением WM_TIMER.
WM_TIMER имеет низкий приоритет, и программа получит его, только если в очереди нет других сообщений. Windows не хранит в очереди сообщений несколько сообщений WM_TIMER. Вместо этого Windows объединяет несколько сообщений WM_TIMER из очереди в одно сообщение.
Использование таймера:
Посылка сообщения WM_TIMER обычной оконной процедуре приложения.
SetTimer(hWnd,1,1000,NULL);
Первый параметр – дескриптор того окна, чья оконная процедура будет получать сообщения WM_TIMER.
Второй параметр - идентификатор таймера, значение которого должно быть отлично от нуля.
Третий параметр – это 32-разрядное беззнаковое целое, которое задает интервал в миллисекундах
KillTimer(hWnd,1); остановка потока сообщений WM_TIMER
Для того чтобы установить новое время срабатывания для существующего таймера, следует уничтожить таймер функций KillTimer и снова установить его функцией SetTimer.
Пересылка сообщения WM_TIMER другой функции этого же приложения (способ 1).
SetTimer(hWnd,1,1000,(TIMERPROC)TimerProc); - четвертый параметр функции SetTimer заменился адресом функции обратного вызова (в отличие от 1 способа)
Функцией обратного вызова – это функция, которая будет получать эти таймерные сообщения, вызываемая Windows. Приложение сообщает Windows адрес этой функции, а позже Windows вызывает ее (оконная процедура фактически является такой функцией обратного вызова).
Определение функции обратного вызова: как CALLBACK
void CALLBACK TimerProc(HWND hWnd,UINT iMsg,UINT iTimerID,DWORD dwTime)
hWnd – дескриптор окна, задаваемый при вызове функции SetTimer.
iMsg всегда будет равен WM_TIMER.
iTimerID – это идентификатор таймера.
dwTime – системное время.
Таймерная функция обратного вызова, в данном случае TimerProc, не имеет возвращаемого в Windows значения.
Пересылка сообщения WM_TIMER другой функции этого же приложения (способ 2).
UINT iTimerID=SetTimer(NULL,0,1000,(TIMERPROC)TimerProc);
hWnd устанавливается NULL
идентификатор таймера игнорируется
Функция возвращает ID таймера (возвращаемое функцией значение будет равно NULL, если таймер недоступен).