看如下代码unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;const
MyMessage =WM_USER+101;type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure AddStrPro(Var Message:TMessage);message MyMessage;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ThreadID:DWORD;
ThreadHandle:THandle;
:Boolean=True;
t:Integer=1;
implementation{$R *.dfm}function DataRecv(p: Pointer): DWORD; stdcall;
var
i:Integer;
begin
while True do
begin
SendMessage(Form1.Handle,MyMessage,1,1);
if Mark=False then Break;
end;
end;
procedure TForm1.AddStrPro(var Message: TMessage);
var
i:Integer;
begin
Application.ProcessMessages;//关键就在这句
Sleep(10);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ThreadHandle:= CreateThread(nil, 0, @DataRecv, nil, 0, ThreadID);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
:=False;
WaitForSingleObject(ThreadHandle,200);
Action:=caFree;
end;
end.application.ProcessMessage如果没有这句,一切正常。
加上这句,其他都正常,只有最大,最小,和关闭按钮相应不了???
高手,教教我吧,我分析不出来
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;const
MyMessage =WM_USER+101;type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure AddStrPro(Var Message:TMessage);message MyMessage;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ThreadID:DWORD;
ThreadHandle:THandle;
:Boolean=True;
t:Integer=1;
implementation{$R *.dfm}function DataRecv(p: Pointer): DWORD; stdcall;
var
i:Integer;
begin
while True do
begin
SendMessage(Form1.Handle,MyMessage,1,1);
if Mark=False then Break;
end;
end;
procedure TForm1.AddStrPro(var Message: TMessage);
var
i:Integer;
begin
Application.ProcessMessages;//关键就在这句
Sleep(10);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ThreadHandle:= CreateThread(nil, 0, @DataRecv, nil, 0, ThreadID);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
:=False;
WaitForSingleObject(ThreadHandle,200);
Action:=caFree;
end;
end.application.ProcessMessage如果没有这句,一切正常。
加上这句,其他都正常,只有最大,最小,和关闭按钮相应不了???
高手,教教我吧,我分析不出来
解决方案 »
- 窗体隐藏问题
- riched20.dll(richedit20a类)问题的求助?
- delphi连接mysql出现MySql server has gone away如何解决
- TDX开头的控件是什么控件啊?常用吗?哪里有下啊?还有tcooltrayicon呢?
- 如何取得硬盘分区的大小
- 如何在DBGrid控间中增加统计功能
- OLE嵌入FrontPage对象的问题?请大侠们帮忙
- Lmd控件组问题。
- 我的sql真的很菜,提问送分
- 我要拜Cobi(我是小新)为师,希望您能答应!QQ:5758037
- 祝大家买个萝卜切吧切吧炖了吧,散分
- Delphi中TIdUDPServer用在Com中IdUDPServerUDPRead事件不触发?
可以把Send改成Post,或者不要WaitForSingleObject。