{$MODE OBJFPC} {$APPTYPE GUI} uses windows; function ANSI(text:PChar):PChar; var i,l:byte; begin l:=length(text)-1; for i:=0 to l do case text[i] of 'А'..'п':text[i]:=chr(ord(text[i])+64); 'р'..'я':text[i]:=chr(ord(text[i])+16); end; result:=text; end; var Main, GoButton, Choose1, Choose2, Choose3, Panel, Back, Image:HWnd; Msg:TMsg; {Надпись} procedure Header; var Font:HFont; Ps:PaintStruct; Dc:HDc; R:Rect; begin Font:=CreateFont(36,12, 0,0, 710,0,0,0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'Impact'); Dc:=BeginPaint(Back,@Ps); R.Left:=10; R.Top:=96; R.Right:=100; R.Bottom:=196; SelectObject(Dc,Font); SetBkMode(dc,Transparent); SetTextColor(Dc,RGB(192,192,192)); DrawText(Dc,'Pascal',-1,@R,DT_SINGLELINE or DT_TOP); R.Left:=12; R.Top:=94; R.Right:=112; R.Bottom:=194; SetTextColor(Dc,RGB(0,0,250)); DrawText(Dc,'Pascal',-1,@R,DT_SINGLELINE or DT_TOP); EndPaint(Back,Ps); end; function WndProc(Wnd:HWnd;Msg:Cardinal;wParam,lParam:Longint):Longint;stdcall; begin result:=0; case Msg of WM_DESTROY:begin PostQuitMessage(0); exit; end; WM_PAINT:Header; end; result:=DefWindowProc(Wnd,Msg,wParam,lParam); end; {Класс окна} function WndReg:boolean; var Main:PWndClassEx; begin Main:=New(PWndClassEx); with Main^ do begin cbSize:=SizeOf(TWndClassEx); lpfnWndProc:=@WndProc; Style:=CS_HREDRAW or CS_VREDRAW; cbClsExtra:=0; cbWndExtra:=0; hInstance:=system.maininstance; hBrBackground:=color_btnFace+1; hIcon:=LoadIcon(0,idi_application); hCursor:=LoadCursor(0,idc_arrow); lpszMenuName:=nil; lpszClassName:='Main'; end; result:=RegisterClassEx(Main^)<>0; dispose(Main); end; {Главная форма} function MainFn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(0,'Main',ANSI('Курсовой проект по программированию'), WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX, 100,100, 359,384, 0, 0, system.maininstance, nil); ShowWindow(Wnd,SW_NORMAL); UpdateWindow(Wnd); result:=Wnd; end; {Кнопочная функция} function GoButtonFn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(WS_EX_CLIENTEDGE or WS_EX_STATICEDGE,'BUTTON',ANSI('Поехали!'), WS_CHILD or WS_VISIBLE, 16,308, 75,25, Main, 0, system.maininstance, nil); SendMessage(Wnd,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0); result:=Wnd; end; {RadioButton1 функция} function Choose1Fn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(0,'BUTTON',ANSI('Про матрицу'), WS_VISIBLE or WS_CHILD or BS_AUTORADIOBUTTON, 14,219, 89,25, Main, 0, system.maininstance, nil); SendMessage(Wnd,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0); result:=Wnd; end; {RadioButton2 функция} function Choose2Fn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(0,'BUTTON',ANSI('Пассажиры'), WS_VISIBLE or WS_CHILD or BS_AUTORADIOBUTTON, 14,245, 89,25, Main, 0, system.maininstance, nil); SendMessage(Wnd,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0); result:=Wnd; end; {RadioButton3 функция} function Choose3Fn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(0,'BUTTON',ANSI('Треугольник'), WS_VISIBLE or WS_CHILD or BS_AUTORADIOBUTTON, 14,270, 89,25, Main, 0, system.maininstance, nil); SendMessage(Wnd,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0); result:=Wnd; end; {Панэлка} function PanelFn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(WS_EX_STATICEDGE,'STATIC',ANSI('Выберите задачу'), WS_CHILD or WS_VISIBLE or SS_CENTER or WS_THICKFRAME, 8,178, 100,121, Main, 0, system.maininstance, nil); SendMessage(Wnd,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0); result:=Wnd; end; {Бэкграунд} function BackFn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(WS_EX_STATICEDGE,'STATIC',nil, WS_CHILD or WS_VISIBLE or WS_THICKFRAME, 8,8, 338,337, Main, 0, system.maininstance, nil); result:=Wnd; end; {Картинка} function ImageFn:HWnd; var Wnd:HWnd; begin Wnd:=CreateWindowEx(0,'STATIC',nil, WS_CHILD or WS_VISIBLE or SS_ICON, 25,60, 32,32, Back, 0, system.maininstance, nil); SendMessage(Wnd,STM_SETIMAGE,IMAGE_ICON,LoadIcon(0,IDI_APPLICATION)); result:=Wnd; end; {MainProgram} begin if not WndReg then begin MessageBox(0,'ghfdg','fdgdf',mb_Ok); exit; end; Main:=MainFn; Back:=BackFn; Panel:=PanelFn; GoButton:=GoButtonFn; Choose1:=Choose1Fn; Choose2:=Choose2Fn; Choose3:=Choose3Fn; Image:=ImageFn; while GetMessage(Msg,0,0,0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end.