home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / windows / gdi / ellipse.pas next >
Encoding:
Pascal/Delphi Source File  |  1993-06-04  |  2.0 KB  |  85 lines

  1. PROGRAM LittleGDI;
  2.  
  3. {$X+}
  4. USES WinTypes, WinProcs, Strings, OWindows;
  5.  
  6. TYPE
  7.   PGDIFenster = ^TGDIFenster;
  8.   TGDIFenster = OBJECT (tWindow)
  9.     PROCEDURE WMLButtonDown (VAR Msg: tMessage); VIRTUAL wm_First + wm_LButtonDown;
  10.     PROCEDURE WMRButtonDown (VAR Msg: tMessage); VIRTUAL wm_First + wm_RButtonDown;
  11.   END;
  12.  
  13.   TMyApp = OBJECT (tApplication)
  14.     PROCEDURE InitMainWindow; VIRTUAL;
  15.   END;
  16.  
  17. VAR
  18.   MyApp: TMyApp;
  19.  
  20. PROCEDURE TMyApp.InitMainWindow;
  21. BEGIN
  22.   MainWindow := New (PGDIFenster, Init(NIL, 'GDI Fenster mit Brush und Ellipse'));
  23. END;
  24.  
  25. (*  Original : *)
  26. (*
  27. PROCEDURE TGDIFenster.WMLButtonDown (VAR Msg: TMessage);
  28. VAR
  29.   EinDC: HDC;
  30.   R: TRect;
  31.   i: WORD;
  32.   OldPen, NewPen: HPen;
  33. BEGIN
  34.   FOR i := 0 TO 199 DO
  35.   BEGIN
  36.     EinDC := GetDC (HWindow);
  37.     GetClientRect (HWindow, R);
  38.     NewPen := CreatePen (ps_Solid, Random(10), RGB(Random(256), Random(256), Random(256)));
  39.     OldPen := SelectObject(EinDC, NewPen);
  40.     MoveTo (EinDC, Random(R.Right), Random(R.Bottom));
  41.     LineTo (EinDC, Random(R.Right), Random(R.Bottom));
  42.     SelectObject (EinDC, OldPen);
  43.     ReleaseDC (HWindow, EinDC);
  44.     DeleteObject (NewPen);
  45.   END;
  46. END;
  47. *)
  48.  
  49. PROCEDURE TGDIFenster.WMLButtonDown (VAR Msg: tMessage);
  50. VAR
  51.   EinDC: hDC;
  52.   R: tRect;
  53.   x,y: INTEGER;
  54.   i: WORD;
  55.   OldBrush, NewBrush: hBrush;
  56.   ALogBrush: tLogBrush;
  57. BEGIN
  58.   FOR i := 0 TO 199 DO
  59.   BEGIN
  60.     EinDC := GetDC (hWindow);
  61.     GetClientRect (hWindow, R);
  62.     ALogBrush.lbStyle := bs_solid;
  63.     ALogBrush.lbColor := RGB(Random(256), Random(256), Random(256));
  64.     NewBrush := CreateBrushIndirect (ALogBrush);
  65.     OldBrush := SelectObject (EinDC, NewBrush);
  66.     x := Random(R.Right);
  67.     y := Random(R.Bottom);
  68.     Ellipse (EinDC, x, y, x+30, y+Random(50));
  69.     SelectObject (EinDC, OldBrush);
  70.     ReleaseDC (hWindow, EinDC);
  71.     DeleteObject (NewBrush);
  72.   END;
  73. END;
  74.  
  75. PROCEDURE TGDIFenster.WMRButtonDown (VAR Msg: tMessage);
  76. BEGIN
  77.   InvalidateRect (hWindow, NIL, TRUE);
  78. END;
  79.  
  80. BEGIN
  81.   MyApp.Init ('MyApp');
  82.   MyApp.Run;
  83.   MyApp.Done;
  84. END.
  85.