Q&A

  • 일정시간경과후 showmessage창 닫기
어떤 이벤트에 대해 showmessage창이 뜨고 일정시간경과후 이 메세지창을 닫을려고하는데여..



여기선가 본것같은데..검색해도 나오지가 않는군여..





1  COMMENTS
  • Profile
    이승우 2000.09.20 19:05
    heimdal wrote:

    > 어떤 이벤트에 대해 showmessage창이 뜨고 일정시간경과후 이 메세지창을 닫을려고하는데여..

    >

    > 여기선가 본것같은데..검색해도 나오지가 않는군여..

    >

    >

    여기 예제를 올리니 참고하세요

    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, ExtCtrls;



    type

    TMboxThread = class(TThread)

    private

    { private declarations }

    protected

    procedure Execute; override;

    public

    constructor Create;

    end;

    TForm1 = class(TForm)

    Button1: TButton;

    Timer1: TTimer;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    FMboxThread: TMBoxThread;

    FWinHandle: HWnd;

    end;



    var

    Form1: TForm1;

    CreatedBox: Boolean;

    implementation



    {$R *.DFM}



    constructor TMboxThread.Create;

    begin

    // thread의 실행이 종료하면 자동으로 free되게 설정

    FreeOnTerminate := True;



    inherited Create(False);

    end;



    procedure TMboxThread.Execute;

    begin

    MessageBox(Application.Handle, '이 메시지박스는 자동으로 없어집니다', '알림',

    MB_APPLMODAL + MB_SETFOREGROUND);

    CreatedBox := False;

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    FMBoxThread := TMBoxThread.Create;

    CreatedBox := True;

    Timer1.Enabled := True;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    CreatedBox := False;

    Timer1.Interval := 3000;

    end;



    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

    Timer1.Enabled := False;

    if Assigned(FMBoxThread) and CreatedBox then begin

    // MessageBox 의 핸들을 찾아서 종료시킨다

    FWinHandle := GetForegroundWindow;

    SendMessage(FWinHandle, WM_CLOSE, 0, 0);

    end;

    end;



    end.