Исходник часов со стрелками, реально отсчитывающие время, использует внутренний таймер компьютера. Исходник разработан для лабораторной работы по языку программирования С++
В зависимости от размеров окна программный код корректирует размеры "запчастей" часов: цифр, стрелок, надписей. Исходник применим для лабораторной работы в качестве примера кода вращающихся геометрических фигур. Приложение созданное посредством данного исходника отсчитывает время с достаточно точностью для применения в качестве часов.
Сравните скромные графические возможности программ на C++ MFC с графикой windows-окон нового поколения на платформе Windows Presetation Foundation: Часы со стрелками на WPF. Графика WPF, все элементы интерфейса, полностью рисуются средствами DirectX.
Исходный код часов со стрелками состоит из 4-х классов. Часы "изготовлены" с помощью библиотеки MFC, которая позволяет в кратчайшие сроки создать задуманную программу. Приложение представляет собой типичную для MFC иерархическую структуру классов:
CClockMFCApp
- основной класс, класс приложения производный от базового класса CWinApp
, на основе которого строятся все оконные MFC приложения. Основные функции этого класса - инициализация и запуск приложения, управление взаимодействием между фреймом и окном вида. В классе приложения, исходном коде предоставленного нам мастером классов, в функции инициализации делаем следующие изменения и добавления: комментируем строки загрузки фрейма приложения pFrame->LoadFrame()
и, поскольку приложение не нуждается в меню, создаем окно фрейма "обычным" методом pFrame->Create()
.
CMainFrame
- класс производный от CFrameWnd
, объект этого класса представляет главное окно приложения - фрейм (рамка, каркас). Функции фрейма - размещение окна вида, обеспечение взаимодействия пользователя с рабочим окном (окном вида). Нам требуется фрейм без строки состояния и панели инструментов. Функция обработки события создания фрейма показана ниже.
CChildView
- рабочее окно приложения, основная работа по расчету и отображению циферблата, стрелок, надписей приходится на объект этого класса. Всего две пользовательские функции обеспечивают расчеты и визуализацию часов со стрелками. Рисование часов сначала происходит в памяти компьютера, затем законченный рисунок копируется в контекст устройства окна вида CChildView
. Обеспечение периодической перерисовки окна вида берет на себя таймер, благодаря этим мерам перерисовка хода стрелок происходит без мерцания, см. прикрепленный ниже код.
CAboutDlg
- диалоговое окно, по запросу пользователя предоставляющее краткие данные о программе.