Описание логической структуры



 

Алгоритм работы программы

После запуска программы создается основное окно программы, загружаются ресурсы и создаются элементы управления, а также в памяти создается совместимый контекст, на котором будет производится все рисование. После этого запускается цикл обработки сообщений, в котором происходит обработка поступающих сообщений:

1. Обработка клавиатуры

2. Обработка «горячих клавиш» главного меню

3. Обработка сообщений к диалоговому окну

4. А также всех остальных сообщений как оконной функцией, так и стандартным обработчиком

При обработке перерисовки содержимое совместимого контекста копируется на основной контекст - в окно. Все рисование осуществляется при обработке событий от мыши, а также при изменении размеров окна.

При завершении работы программы совместимый контекст удаляется из памяти.

 

Структура программы

После запуска вначале происходит инициализация общих элементов управления (Common Controls), затем вызывается процедура WinMain (procWinMain. inc), являющаяся основной частью программы, своеобразным каркасом, на который навешаны остальные функции.

В этой процедуре вначале регистрируется класс окна и создается экземпляр, причем в качестве иконки и курсора выступают загруженные ресурсы. После этого окно центрируется на экране и в него добавляются элементы управления Панель управления и Строка состояния, описанные в файлах ToolBarRealization. inc и StatusBarRealization. inc соответственно. Элементы управления создаются и настраиваются, после этого они полностью готовы к функционированию как составные части программы.

Затем в файле InitApp. inc производятся действия по инициализации программы:

· производится вызов процедуры CreateBackBuffer (DoubleBuff. inc), в которой создается совместимый контекст – для двойной буферизации вывода графики (задний буфер)

· вызов процедур SetPenParam и SetBrushColor (Draw. inc) настраивает свойства объектов карандаш и кисть совместного контекста: устанавливаются цвет и толщина

В конце инициализации программы загружается список акселераторов из ресурсов, делается видимым главное окно и запускается цикл обработки сообщений. После завершения данного цикла вызов процедуры DeleteBackBuffer освобождает ресурсы, выделенные на задний буфер.

 

2.3.3. Работа с задним буфером (DoubleBuff . inc)

Процедуры этого модуля предназначены для создания плавного вывода без мерцания и любых других визуальных артефактов.

Задний буфер создается в процедуре CreateBackBuffer, которая не только создает буфер, но и кроме того позволяет менять его размер и даже копировать в новый буфер старое содержимое.

Для освобождения ресурсов буфера предназначена процедура DeleteBackBuffer.

Для очистки буфера (он заполняется белым цветом) предназначена процедура Clear.

Процедура Flip позволяет скопировать содержимое буфера на контекст окна.

Т.к. при вызове процедуры Flip отображается только заранее видимая часть изображения, то необходимо эту видимую часть вычислять. Это и делает процедура Resize.

Кроме того, в файле содержатся процедуры LoadFromFile и SaveToFile, позволяющие загружать и сохранять изображения соответственно.

 

2.3.4. Параметры заднего буфера (Draw . inc)

В данном файле содержатся процедуры SetPenParam, SetBrushColor и PutPixel. Две первые предоставляют удобное средство для изменения свойств карандаша и кисти заднего буфера, а процедура PutPixel предназначена для вывода точки с определенной толщиной (в зависимости от толщины она выводит или один пиксель, или окружность в заданной точке).

 

2.3.5. Обработка главного меню (Menu . inc)

Первой процедурой данного файла является SelectColor – процедура, реализующая работу со стандартным диалогом выбора цвета.

Следующая процедура – MenuChecked – выполняет обработку выбора инструмента. Она меняет позицию «галочки» в главном меню, а также вдавленную кнопку на панели инструментов. Также процедура меняет значение переменной OutMode, отвечающей за текущий инструмент.

Третьей и последней процедурой в файле является процедура MenuProcess, являющаяся чем-то вроде switch’а в программах на C/C++. В ней в зависимости от выбранного пункта меню выполняются определенные действия (в основном вызовы процедур).

 

2.3.6. Обработка мыши (Mouse . inc)

Данные модуль содержит процедуры по обработки событий от мыши, которые все связаны с рисованием. Процедуры имеют названия, схожие с названиями сообщений: MouseMove для WM_MOUSEMOVE, MouseLUp для WM_LBUTTONUP, MouseLDown для WM_LBUTTONDOWN и т.д.

 

2.3.7. Обработка диалогового окна (ParamDlg . inc, Приложение рис. 2)

При выборе пункта меню ФайлàНовый вызывается диалоговое окно. Оно описано в ресурсах программы (Params. rc). Работа с ним осуществляется через вызов функции DlgShow (и, косвенно, через DlgWndProc), которая осуществляет всю черновую работу. Поэтому в основной программе присутствует только вызов DlgShow.

 

Вызов и загрузка программы

 

Для запуска программы необходимо запустить EasyPaint.exe.

Для выхода из программы выберите ФайлàВыход либо нажмите Escape.

Программа может быть запущена с любого носителя данных, будь то: жесткий диск (HDD), дискета (FDD), CD-диск (CD- и DVD- ROM), различных внешних устройств (Flash, ZIP) и т.д.

 


Дата добавления: 2019-07-15; просмотров: 152; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!