adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
чтобы получить представление, как она работает. Вы можете исполь-
зовать для запуска TDODEMO.EXE команду FileіRun (ФайліВыполнение)
менеджера программ или добавить ее к программной группе в качест-
ве пиктограммы.
Примечание: При отсутствии файлов .EXE для файлов
TDODEMO и TDODEMOB вам потребуется открыть их файлы проектов
и перекомпилировать эти файлы с включением отладочной инфор-
мации.
О программе
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
TDODEMOB - это программа, написанная с использованием
ObjectWindows, позволяющая рисовать на экране различными цветами
с помощью "мыши". Когда вы нажимаете левую кнопку "мыши" и пере-
мещаете "мышь", то программа рисует на экране линию. Нажав правую
кнопку "мыши", вы можете очистить окно. Программа TDODEMO имеет
строку меню, которая позволяет вам выбрать один из 4 цветов: Red
(красный), Green (зеленый), Blue (голубой) или Black (черный).
Вы можете рисовать, нажимая кнопку "мыши", перемещая "мышь"
и освобождая кнопку "мыши". Программа легко выполняет эту задачу
с помощью библиотеки ObjectWindows и динамических виртуальных ме-
тодов. Динамический виртуальный метод - это метод с присвоенным
ему числовым идентификатором.
Поскольку Borland C++ определяет имена сообщений Windows,
как числовые константы, вы можете использовать номера сообщений
Windows в качестве идентификатора динамического метода. При этом
ObjectWindows может вызывать данный метод, когда окно, для кото-
рого объявлен метод, получает совпадающее с идентификатором мето-
да сообщение. Если нет метода, идентификатор которого совпадает с
идентификатором метода, ObjectWindows вызывает используемую по
умолчанию процедуру окна.
Например, чтобы создать метод, который отвечает на сообщения
WM_MOUSEMOVE, вы можете определить метод в объекте окна, который
выглядит следующим образом:
TDeb 3.0 #3-3 = 64 =
procedure WMMouseMove(var Msg: TMessage); virtual WM_MOUSE;
Как вы можете видеть, идентификатор WM_MOUSEMOVE можно при-
соединить к процедуре с помощью оператора virtual <идентифика-
тор>, который непосредственно следует за описанием процедуры.
Параметры процедуры окна Windows wParam и lParam содержит
тип TMessage. Эти параметры часто содержат дополнительную инфор-
мацию о сообщении, например, где позиционируется "мышь".
В следующих нескольких разделах поясняется, как работает
программа TDODEMOB. В нее преднамеренно внесены ошибки, которые
вы сможете обнаружить позднее. Полезно также запустить Турбо Пас-
каль для Windows и открыть файл TDODEMOB.PAS, после чего вы смо-
жете следовать по коду программы.
Определение оконного типа ScribbleWindow
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Тип ScribbleWindow определяется следующим образом:
class ScribbleWindow : public TWindow
{
public:
HDC HandleDC; // вывод содержимого для рисования
BOOL ButtonDown; // флаг левой кнопки
HPEN ThePen; // перо, которое используется для
// рисования цветом
ScribbleWindow(PTWindowObject AParent, LPSTR ATitle);
-ScribbleWindow();
void GetWindowClass(WNDCLASS &AWndClass);
virtual void WMLButtonDown(RTMessage
Msg)=[WN_First+WM_LBUTTONDOWN];
virtual void WMLButtonUp(RTMessage MSG)=(WM_FIRST+
WM_LBUTTONUP);
virtual void WMLMouseMove(RTMessage MSG)=(WM_FIRST+
WM_MOUSEMOVE);
virtual void WMLButtonDown(RTMessage MSG)=(WM_FIRST+
WM_LBUTTONDOWN);
virtual void SelectRedPen(RTMessage Msg)=(CM_FIRST+
CM_RED);
virtual void SelectGreenPen(RTMessage Msg)=(CM_FIRST+
CM_GREEN);
virtual void SelectBluePen(RTMessage Msg)=(CM_FIRST+
CM_BLUE);
virtual void SelectBlackPen(RTMessage Msg)=(CM_FIRST+
CM_BLACK);
virtual void SetupWindow();
};
TDeb 3.0 #3-3 = 65 =
Класс ScribbleWindow определяет определяет объект окна, ко-
торый отвечает на следующий ввод пользователя:
- перемещение "мыши";
- нажатие и освобождение левой кнопки "мыши";
- нажатие правой кнопки "мыши";
- цвет и позицию пера.
Имеются три экземпляра переменных - HandleDC, ThePen и
ButtonDown, которые содержат класс устройства, текущее перо, ко-
торым рисует пользователь, и состояние кнопки "мыши" соответс-
твенно.
TDeb 3.0 #3-3 = 66 =
Конструктор ScribbleWindow
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Конструктор ScribbleWindow присоединяет меню к программе и
инициализирует элемент данных ButtonDown значением FALSE, а
ThePen - значением CM_BLACK.
GetWindowClass
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Функция-элемент GetWindowClass вызывает стандартную функцию
TWindow CegWindowClass устанавливает окно таким образом, что оно
ведет себя аналогично любому другому окну TWindow, а затем иници-
ализирует пиктограмму программы.
WMRButtonDown
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Когда пользователь нажимает в окне ColorScribble правую
кнопку "мыши" и собирается рисовать, окно получает сообщение
WM_LBUTTONDOWN, которое приводит к тому, что ObjectWindows вызы-
вает подпрограмму WMLButtonDown (так как она имеет идентификатор
WM_FIRST+WM_LBUTTONDOWN). Подпрограмм WMLButtonDown перемещает
перо в текущую позицию "мыши" и устанавливает переменную
ButtonDown, чтобы указать, что кнопка нажата, а затем выбирает
ThePen в текущий контекст устройства. В Windows имеются также до-
полнительные вызовы данной функции, о чем будет рассказано ниже.
WMLButtonUp
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Когда пользователь заканчивает рисование и освобождает кноп-
ку "мыши", окно получает сообщение WM_LBUTTONUP, которое в свою
очередь приводит к тому, что ObjectWindows вызывает функцию
WMLButtonUp. Программа присваивает переменной ButtonDown значение
False и освобождает класс устройства, связанный с данным окном.
WMRButtonDown
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Когда пользователь нажимает правую кнопку "мыши", чтобы
очистить экран, ObjectWindows вызывает функцию WMRButtonDown, ко-
торая, в свою очередь, вызывает функцию Windows UpdateWindow. Вы-
зов данной функции предназначен для очистки окна.
WMMouseMove
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Когда пользователь начинает перемещать курсор по окну, окно
получает сообщение WM_MOUSEMOVE, которое приводит к тому, что
ObjectWindows вызывает функцию WMMouseMove. Если пользователь на-
жал левую кнопку "мыши", то программа рисует при каждом перемеще-
нии "мыши" линию. Если пользователь не нажимает кнопку "мыши", то
TDeb 3.0 #3-3 = 67 =
ничего не происходит.
Подпрограммы цвета пера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Имеются также четыре функции, устанавливающие цвет пера,
удаляя текущее перо и создавая новое перо с нужным цветом. Эти
функции отличаются только устанавливаемыми цветами.
TDeb 3.0 #3-3 = 68 =
Создание прикладной программы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Чтобы создать прикладную программу, которая использует окно
окно ColorScribble, необходимо создать класс на основе класса
ObjectWindow в TApplication. Назначение этого класса (класса
CSribbleApplication) состоит в следующем:
- Переопределении функции InitMainWindow, благодаря чему
прикладная программа сможет создавать основное окно со
свойствами окна CSribbleWindows.
- Обеспечении объектного типа MyApp, который используется
|
adfun.ru
|
|
|
|