settimer(0,0,1000,@timeproc);
这样用对不对,
前面两个参数是什么作用??
如果我要在回调函数外使用killtimer参数应该用什么呢?

解决方案 »

  1.   

    前面两个参数指定Timer的所有者
    你可以看看VCL的TTimer代码就知道怎么用了,看VCL源代码是学习的一个好方法
      

  2.   

    第一个参数是timer所在的窗体句柄,第二个是表示用来区分同一个窗体的不同timer
    可以如下使用:
    settimer(form1.handle,1,1000,@timeproc);
    ...
    killtimer(form1.handle,1);
      

  3.   

    下面这段代码是截图用的!每30秒运行一次,一个半小时后程序出现非法操作,不知道是什么原因,望高手指正!
    procedure TgetBmp.Get(x1, y1, x2, y2: Word;FileName:string);
    var MyDC:HDC;
        Mycanvas:TCanvas;
        rect1,rect2:TRect;
    begin
        MyDC:=createdc('display','','',nil);
        MyBmp:=TBitmap.Create;
        mybmp.Height:=35;
        mybmp.Width:=35;
        Mycanvas:=TCanvas.Create;
        myCanvas.Handle:=MyDC;
        rect1.TopLeft.X:=x1;
        rect1.TopLeft.Y:=y1;
        rect1.BottomRight.X:=x2;
        rect1.BottomRight.Y:=y2;
        rect2.TopLeft.X:=0;
        rect2.TopLeft.Y:=0;
        rect2.BottomRight.X:=35;
        rect2.BottomRight.Y:=35;    mybmp.Canvas.CopyRect(rect2,Mycanvas,rect1);
        MyBmp.SaveToFile(FileName);
        ReleaseDC(MyBmp.Handle,MyDC);
    end;