使用多媒体定时器画随机线(100分)

  • 主题发起人 主题发起人 chf
  • 开始时间 开始时间
C

chf

Unregistered / Unconfirmed
GUEST, unregistred user!
向高手请教,以下程序为何不能正常运行?

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
btnSeconForm: TButton;
btnEnd: TButton;
procedure btnEndClick(Sender: TObject);
procedure btnSeconFormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

uses unit2;


procedure TForm1.btnEndClick(Sender: TObject);
begin
Close;
end;

procedure TForm1.btnSeconFormClick(Sender: TObject);
begin
TForm2.Create(self);
end;


end.

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,mmSystem;

type
TForm2 = class(TForm)
btnDraw: TButton;
btnStop: TButton;
procedure btnDrawClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.DFM}

uses unit1;

var
timeindex : int64;

procedure timecallback1(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD);stdcall;
begin
Form2.Canvas.MoveTo(80,90);
Form2.Canvas.LineTo(Random(Form2.Width),Random(Form2.Height));
end;


procedure TForm2.btnDrawClick(Sender: TObject);
begin
timebeginperiod(10);
timeindex := timesetevent(10,10,Addr(timecallback1),0,TIME_periodic);
timeendperiod(10);
end;

procedure TForm2.btnStopClick(Sender: TObject);
begin
timekillevent(timeindex);
close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Form1.Enabled := False;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Enabled := True;
end;

end.
如何使之正常运行?
 
程序太长了,wait
 
出什么错误?为什么不用TTimer?
 
还是用ttimer吧。
 
呵呵,你这程序不行,必须用有一个线程用于来定时。
若是按你的程序,即使能定时,但不能响应鼠标和键盘了。
 
用多媒体定时控件吧。精度1ms,用TTimer只有55ms.
注意画线的时候用 synchronization
 
我用的是win API 函数,哪有精度为1ms的多媒体定时控件?用了定时器是否还有必要用线程?
 
各位大虾怎么都不说话了?本人编译此程序出现访问冲突,但将form2与form1
一并autocreate,则此程序即可编译通过,运行正常,这是为什么?
 
我有多媒体定时控件,要吗?
 
我要多媒体定时器控件,E-MAIL地址tjchf@yeah.net。
 
我也要多媒体定时器控件,能给我一个吗?
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
686
import
I
I
回复
0
查看
709
import
I
I
回复
0
查看
763
import
I
I
回复
0
查看
740
import
I
后退
顶部