[Back to WIN-OS2 SWAG index]  [Back to Main SWAG index]  [Original]

{
From: peter.gruhn@delta.com (Peter Gruhn)

 Ba> What I want to know is, can some-one post a sample of source code
 Ba> that would provide a 'beginners shell' for windows programming. I.e.

How about if I post this test code that somebody wanted a few days ago.
It has no interaction and doesn't bother to make use of the timer or
anything in the draw loop, but it's a quick draw loop. You can set up
timers and i/o responses as you see fit. Right off though, just having a
window to draw in is a good start. It's how I started...

by Peter Gruhn
 it's small and useless and stupid and somebody
 might find it useful, so I release this program
 into the public domain for the good of all
 sentient species the universe over. 7-8-1994}

program offscree;

uses owindows,winprocs,wintypes;

type
  TMyApp=object(tapplication)
    procedure initmainwindow; virtual;
    end;

  PMyWin=^TMyWin;
  TMyWin=object(TWindow)
    procedure Paint(PaintDC: HDC; var PaintInfo: TPaintStruct); virtual;
    end;

procedure TMyApp.initmainwindow;
begin
  mainwindow:=new(pmywin,init(nil,'Try this...'));
end;

procedure TMyWin.Paint;
var adc:hdc;
    abmp:hbitmap;
    i:integer;
    s:string;
begin
{Create stuff}
  adc:=createcompatibledc(paintdc);
  {I believe that I am cheating here, by just divving number of bits
   by 2 as I happen to know that right now I am in 16 colour mode.
   You will forgive me.}
  abmp:=createcompatiblebitmap(paintdc,300 div 2,300 div 2);
  abmp:=selectobject(adc,abmp);

{Blank off screen bitmap of random data}
  bitblt(adc,0,0,300,300,adc,0,0,whiteness);

{Draw something}
  for i:=0 to 1024 do
    begin
    rectangle(adc,random(300),random(300),random(300),random(300));
    str(i:5,s);                    {textify i for...}
    s[6]:=#0;                      {null terminator}
    textout(paintdc,10,10,@(s[1]),byte(s[0])); {just to count so it don't look
plain}
    end;

{blit it to the window}
  bitblt(paintdc,10,10,300,300,adc,0,0,srccopy);

{Kill stuff}
  deleteobject(selectobject(adc,abmp));
  deletedc(adc);
end;

var app:TMyApp;

begin
  app.init('frog');
  app.run;
  app.done;
end.

[Back to WIN-OS2 SWAG index]  [Back to Main SWAG index]  [Original]