Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 42


Обратимся теперь к тексту примера 27-1, который по сути не отличается от программы 19-3.

В классе главного окна MyWindow объявлены функции обработки сообщений WM_PAINT для пере­рисовывания окна, WM_CREATE для выполнения инициализирующих действий, конкретно, установки таймера Windows, WM_TIMER для смены содержимого окна каждую секунду и


Обработка сообщений Windows                                                                                     247

WM_GETMINMAXINFO для придания окну фиксированных размеров. Как и в примерах предыдущей главы, обработка сообщения WM_PAINT выполняется путем замещения функции-заглушки Paint(); для обработки остальных сообщений предусмотрены записи в таблице откликов и соответствующие им функции откликов. В состав членов класса входят также поле szText для хранения текущей даты в сим­вольной форме, предложение с объявлением таблицы откликов (макрос DECLARE_RESPONSE_TABLE) и деструктор класса, который используется для уничтожения таймера, устанавливаемого при создании окна. Переменная szText, используемая только функцией-членом класса OutTime(), объявлена закрытой (private) в соответствии с канонами объектно-ориентированного программирования, требующими мак­симального скрытия данных. По тем же мотивам можно было объявить закрытыми и все функции откли­ка, чтобы у программиста не появилось искушение обратиться к ним не из функций-членов класса Му-Window, а из основной программы. В нашем учебном примере все эти рассуждения, разумеется, не име­ют никакого значения.

В конструкторе класса MyWindow с помощью структурной переменной Attr, являющейся элементом класса TWindow, устанавливаются начальные координаты и размеры окна, а также значение расширен­ного стиля окна WS_EX-TOPMOST, что заставляет наше окно всегда находиться на переднем плане. Размеры окна, будут в дальнейшем установлены в функции обработки сообщения WM_GETMINMAXlNFO, поэтому здесь для них указаны нулевые значения.

В функции обработки сообщения WM_CREATE устанавливается таймер с номером 1 и величиной временного интервала 1000 мс=1с и вызывается прикладная функция OutTime() для вывода в окно теку­щего времени, чтобы избежать вывода на экран в течение первой секунды после запуска приложения пустого окна.




Начало  Назад  Вперед



Книжный магазин