请教各位:
源程序代码(小画笔)
运行时弹出对话框Debugger Exception Notification
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus;type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N11: TMenuItem;
    N31: TMenuItem;
    N51: TMenuItem;
    N101: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    procedure MenuExitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ColorClick(Sender: TObject);
    procedure WidthClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormMouseDown(Sender: TObject;Button:TMouseButton;
    Shift:TShiftState;X,Y:integer);
    procedure FormMouseUp(Sender: TObject;Button:TMouseButton;
    Shift:TShiftState;X,Y:integer);
    procedure FormMouseMove(Sender: TObject;Button:TMouseButton;
    Shift:TShiftState;X,Y:integer);
  private
  FclColor:TColor;
  FnWidth:integer;
  bStartDraw:boolean;
  ptStart,ptEnd:Tpoint;
  rectWork:TRect;
  CanvasWork:TCanvas;
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MenuExitClick(Sender: TObject);
begin
  Close;
end;procedure TForm1.FormCreate(Sender: TObject);
var
  ScreenCanvas:TCanvas;
  ScreenBitmap:TBitmap;
  dc:HDC;
  bmpWork:HBITMAP;
  dcWork:HDC;
begin
  FnWidth:=1;
  FclColor:=clRed;
  Sleep(300);
  rectWork:=Rect(0,0,Screen.Width,Screen.Height);
  ScreenCanvas:=TCanvas.Create;
  ScreenBitmap:=TBitmap.Create;
  ScreenBitmap.Width:=Screen.Width;
  ScreenBitmap.Height:=Screen.Height;
  dc:=GetDC(0);
  ScreenCanvas.Handle:=dc;
  ScreenBitmap.Canvas.CopyRect(Rect(0,0,Screen.Width,Screen.Height),ScreenCanvas,Rect(0,0,Screen.Width,Screen.Height));
  dcWork:=CreateCompatibleDC(Canvas.Handle);
  bmpwork:=CreateCompatibleBitmap(Canvas.Handle,Screen.Width,Screen.Height);
  SelectObject(dcWork,bmpWork);
  SelectPalette(dcWork,ScreenBitmap.Palette,false);
  CanvasWork.Handle:=dcWork;
  CanvasWork.Draw(0,0,ScreenBitmap);
  CanvasWork.Pen.Width:=FnWidth;
  CanvasWork.Pen.Color:=FclColor;
  Realizepalette(CanvasWork.Handle);
  Canvas.CopyRect(rectWork,CanvasWork,rectWork);
  ReleaseDC(0,dc);
  ScreenBitmap.Free;
  ScreenCanvas.Free;
  SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,nil,0);
  end;
procedure TForm1.ColorClick(Sender: TObject);
begin
 TMenuITem(Sender).Checked:=True;
 Case TmenuItem(Sender).Tag of
   1001:FclColor:=clRed;
   1002:FclColor:=clGreen;
   1003:FclColor:=clBlue;
   1004:FclColor:=clYellow;
   1005:FclColor:=clBlack;
   1006:FclColor:=clFuchsia;
   end;
   CanvasWork.Pen.Color:=FclColor;
end;
procedure TForm1.WidthClick(Sender: TObject);
begin
  TMenuItem(Sender).Checked:=true;
  Case TmenuItem(Sender).Tag of
    1101:FnWidth:=1;
    1102:FnWidth:=3;
    1103:FnWidth:=5;
    1104:FnWidth:=10;
    end;
    CanvasWork.Pen.Width:=FnWidth;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,nil,0);
  CanvasWork.Free;
end;
procedure TForm1.FormMouseDown(Sender: TObject;Button:TMouseButton;
    Shift:TShiftState;X,Y:integer);
begin
  if Button in [mbLeft] then
  begin
    bStartDraw:=True;
    ptStart.x:=X;
    ptStart.Y:=Y;
  end;
end;
procedure TForm1.FormMouseUp(Sender: TObject;Button:TMouseButton;
    Shift:TShiftState;X,Y:integer);
begin
  if Button in [mbLeft] then
  bStartDraw:=False;
end;
procedure TForm1.FormMouseMove(Sender: TObject;Button:TMouseButton;
    Shift:TShiftState;X,Y:integer);
begin
  if bStartDraw=True then
  begin
    ptEnd.X:=X;
    ptEnd.Y:=Y;
    Canvas.MoveTo(ptStart.X,ptStart.Y);
    Canvas.LineTo(ptEnd.X,ptend.Y);
    ptStart:=ptEnd;
    Realizepalette(CanvasWork.Handle);
    Canvas.CopyRect(rectWork,CanvasWork,rectWork);
  end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Realizepalette(CanvasWork.Handle);
Canvas.CopyRect(rectWork,CanvasWork,rectWork);
end;
end.