首页  编辑  

线程MessageBox

Tags: /超级猛料/Thread.线程/   Date Created:

如何向十一个Modal对话框,但是又可以对主窗体进行最大化/最小化等操作?

请使用下面的函数ThrMsgBox即可。

unit Unit2 ;

interface

uses Classes , Windows , Forms ;

function ThrMsbBox ( hWnd : HWND ; Caption , Text : string ; dlgType : integer ): integer ;

implementation

var

 RValue : integer ;

type

 TMyThread = class ( TThread )

   FCaption , FText : string ;

   FType : integer ;

   FOwn : HWND ;

  public

    constructor Create ( hWnd : HWND ; Caption , Text : string ; DlgType : integer );

    procedure Execute ; override ;

  end ;

{ TMyThread }

constructor TMyThread . Create ( hWnd : HWND ; Caption , Text : string ; DlgType : integer );

begin

 FCaption := Caption ;

 FText := Text ;

 FType := DlgType ;

 FOwn := hWnd ;

 FreeOnTerminate := False ;

  inherited Create ( False );

end ;

procedure TMyThread . Execute ;

begin

 RValue := MessageBox ( FOwn , pchar ( FText ), pchar ( FCaption ), FType );

 Terminate ;

end ;

function ThrMsbBox ( hWnd : HWND ; Caption , Text : string ; dlgType : integer ): integer ;

var

 Thr : TMyThread ;

begin

 Thr := TMyThread . Create ( hWnd , Caption , Text , dlgType );

  repeat

   Application . ProcessMessages ;

  until Thr . Terminated ;

 Thr . Free ;

 Result := RValue ;

end ;

end .