cm_Thin:
PenWidth := 1; {текущая ширина ручки-1}
cm_Regular:
PenWidth := 3; {текущая ширина ручки-3}
cm_Thick:
PenWidth := 5; {текущая ширина ручки-5}
cm_Solid:
PenStyle:=ps_solid;{текущий стиль ручки- сплошная}
cm_Dash:
PenStyle:=PS_DASH;{текущий стиль ручки- тире}
cm_DashDot:
PenStyle:=PS_DASHDot;{текущий стиль ручки- тире-точка}
cm_Dot:
PenStyle:=PS_Dot;{текущий стиль ручки-точка}
cm_Red:
PenColor := RGB(255, 0, 0);{текущий цвет ручки-красный}
cm_Green:
PenColor := RGB(0, 255, 0); {текущий цвет ручки-зелёный}
cm_Black:
PenColor := RGB(0, 0, 0); {текущий цвет ручки-черный}
cm_Yellow:
PenColor := RGB(255,255,51);{текущий цвет ручки-желтый}
cm_PaleBlue:
PenColor := RGB(96,230,249);{текущий цвет ручки-голубой}
cm_Magenta:
PenColor := RGB(187,63,209);{текущий цвет ручки-фиолетовый}
cm_Blue:
PenColor := RGB(98,77,251); {текущий цвет ручки-синий}
else
DoWMCommand := 0;
end;
end;
{
function WndProc
WndProc вызывает оконную функцию (window proc)
для класса окна My Paint. Она обрабатывает все сообщения получаемые окном.
}
function WndProc (HWindow : HWnd; Message: Word;
wParam: Word; lParam: LongInt): LongInt; export;
begin
WndProc := 0;
case Message of
wm_Command:
WndProc := DoWMCommand(wParam); {Реакция на выбор пункта меню}
wm_LButtonDown:
LButtonDown(HWindow,lParam); {Реакция на нажатие левой кнопки мыши}
wm_LButtonUp:
LButtonUp(HWindow,lParam); {Реакция на сообщение о том, что кнопка мыши отпущена}
wm_MouseMove:
DoMouseMove(HWindow,lParam); {Реакция на движение мыши}
wm_Paint: {Реакция сообщение wm_Paint}
My_Paint(HWindow);
else
WndProc := DefWindowProc(HWindow, Message, wParam, lParam); {Обеспечивает стандартную обработку сообщений }
{для сообщений, которые явно не обрабатываются}
{прикладной программой.}
end;
end;
var
theWndClass: TWndClass;
theMessage: TMsg;
HWindow: HWnd;
l,e,r,r_2:HBitmap;
My:HMenu;
begin
l:=loadbitmap(hinstance,'LINE');{Загружает названный ресурс}
e:=loadbitmap(hinstance,'ELLips');
r:=loadbitmap(hinstance,'Rectangle');
r_2:=loadbitmap(hinstance,'Rectangle2');
My := LoadMenu(HInstance, 'MY PAINT');
{ Регистрация класса окна,если это не было сделано раньше }
if hPrevInst = 0 then
begin
theWndClass.style := cs_HRedraw or cs_VRedraw ; {Стиль окна}
theWndClass.lpfnWndProc := @WndProc;
{указатель на оконную функцию которая будет обрабатывать}
{все сообщения посылаемые окну}
theWndClass.cbClsExtra := 0;
{Позволяют выделить дополнительную память в структуре определенного}
theWndClass.cbWndExtra := 0;
{класса. Выделенная память используется по усмотрению прикладной программы}
theWndClass.hInstance := hInstance;
{Ссылка на экземпляр программы. Это поле используется ядром Windows }
theWndClass.hIcon := LoadIcon(0, 'ide_My');{Ссылка на иконку}
theWndClass.hCursor :=LoadCursor(0,idc_Arrow);{Ссылка на курсор}
theWndClass.hbrBackground := GetStockObject(White_Brush);
{Ссылка на шаблон заполнения фона}
theWndClass.lpszMenuName := szAppName;
{Ссылка на строку имени меню для данного класса окна}
theWndClass.lpszClassName := szAppName; {определяет имя класса окна}
if not RegisterClass(theWndClass) then Halt(255);
end;
{ Создание и показ окна }
HWindow := CreateWindow(szAppName,'My Paint',ws_OverLappedWindow, cw_UseDefault, 0
,cw_UseDefault, 0, 0, my, hInstance, nil); {Создает пеpекpытое, всплывающее или дочеpнее окно.}
SetMenuItemBitmaps(My,201,mf_ByCommand,l,l);
{ Связывает две BitMap с элементом меню;}
{одна из них отобpажается, когда элемент выбpан,}
{а дpугая - когда не выбpан.}
SetMenuItemBitmaps(My,202,mf_ByCommand,e,e);
SetMenuItemBitmaps(My,203,mf_ByCommand,r,r);
SetMenuItemBitmaps(My,204,mf_ByCommand,r_2,r_2);
ShowWindow(HWindow, CmdShow);
{Отобpажает или пpячет окно обpазом, указанным паpаметpом CmdShow.}
UpdateWindow(HWindow);
{Если область обновления окна непустая, то посылает сообщение wm_Paint}
{ прямо оконной функции данного окна.}
while GetMessage(theMessage, 0, 0, 0) do
{Считывает сообщение, в pамках диапазона фильтpации,}
{ из очеpеди сообщений пpикладной задачи.}
{ Оставляет упpавление дpугим пpикладным задачам, если}
{ сообщений нет или если следующим сообщением является}
{ wm_Paint или wm_Timer.}
begin
TranslateMessage(theMessage );
{Пеpеводит комбинации wm_KeyDown/Up в wm_Char или wm_DeadChar}
{ и комбинации wm_SysKeyDown/Up в wm_SysChar или wm_SysDeadChar и }
{напpавляет символьное сообщение в очеpедь пpикладной задачи.}
DispatchMessage(theMessage );
{Пеpедает в Msg сообщение оконной функции окна }
end;
end.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.