home *** CD-ROM | disk | FTP | other *** search
- PROGRAM TestDDA;
-
- {$X+}
- USES WinTypes, WinProcs, Strings, OWindows, ODialogs;
-
- TYPE
- PGDIFenster = ^TGDIFenster;
- TGDIFenster = OBJECT (tWindow)
- PROCEDURE WMLButtonDown (VAR Msg: tMessage); VIRTUAL wm_First + wm_LButtonDown;
- PROCEDURE WMRButtonDown (VAR Msg: tMessage); VIRTUAL wm_First + wm_RButtonDown;
- END;
-
- TMyApp = OBJECT (tApplication)
- PROCEDURE InitMainWindow; VIRTUAL;
- END;
-
- VAR
- MyApp: TMyApp;
- LineProc: tFarProc;
-
- PROCEDURE TMyApp.InitMainWindow;
- BEGIN
- MainWindow := New (PGDIFenster, Init(NIL, 'GDI Fenster mit LineDDA'));
- END;
-
- PROCEDURE Line (x1, y1, x2, y2: INTEGER; DC: hDC);
- BEGIN
- MoveTo (DC, x1, y1);
- LineTo (DC, x2, y2);
- END;
-
- CONST
- nCounter: WORD = 0;
-
- PROCEDURE LineFunc2 (x,y: INTEGER; lpData: pChar); EXPORT;
- BEGIN
- IF (Odd(nCounter)) THEN
- SetPixel (hDC (lpData), x, y, RGB (0,0,0));
- nCounter := (nCounter + 1) MOD 5;
- END;
-
- PROCEDURE LineFunc (x,y: INTEGER; lpData: pChar); EXPORT;
- BEGIN
- IF (nCounter = 2) THEN
- Ellipse (hDC (lpData), x-2, y-2, x+3, y+3);
- nCounter := (nCounter + 1) MOD 4;
- END;
-
- PROCEDURE TGDIFenster.WMLButtonDown (VAR Msg: tMessage);
- VAR
- EinDC: hDC;
- R: tRect;
- xl, xr, yt, yb: INTEGER;
- BEGIN
- LineProc := MakeProcInstance (@LineFunc2, hInstance);
- EinDC := GetDC (hWindow);
- GetClientRect (hWindow, R);
- xl := R.Right DIV 4;
- xr := 3 * xl;
- yt := R.Bottom DIV 4;
- yb := 3 * yt;
- LineDDA (xl, yb, xl, yt, LineProc, pChar(EinDC));
- LineDDA (xl, yt, xr, yt, LineProc, pChar(EinDC));
- LineDDA (xl, yb, xr, yb, LineProc, pChar(EinDC));
- LineDDA (xr, yt, xr, yb, LineProc, pChar(EinDC));
- LineDDA (xl, yt, xr, yb, LineProc, pChar(EinDC));
- LineDDA (xr, yt, xl, yb, LineProc, pChar(EinDC));
- {
- Line (xl, yt, xr, yt, EinDC);
- Line (xl, yt, xl, yb, EinDC);
- Line (xl, yb, xr, yb, EinDC);
- Line (xr, yt, xr, yb, EinDC);
- Line (xl, yt, xr, yb, EinDC);
- Line (xr, yt, xl, yb, EinDC);
- }
- ReleaseDC (hWindow, EinDC);
- FreeProcInstance (@LineFunc2);
- END;
-
- PROCEDURE TGDIFenster.WMRButtonDown (VAR Msg: tMessage);
- BEGIN
- InvalidateRect (hWindow, NIL, TRUE);
- END;
-
- BEGIN
- MyApp.Init ('MyApp');
- MyApp.Run;
- MyApp.Done;
- END.
-