API関数のInvalidateRectを使って描画処理を行っています。
この描画処理が終了したかどうか?知る方法はありませんか?
描画処理が終了したかどうかは、対象ウィンドウの WM_PAINT メッセージの処理が終わったことを
知るといいのでは。実行前にフラグをたてておいて、WM_PAINT を捕まえて継承メソッドを呼び出したあとで
そのフラグが立っていたら、フラグを倒して、しかるべきところに処理終了を知らせる。
klmさんありがとうございます。
具体的にどのように書けばいいのでしょうか?
こんな感じ
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
Flag:Boolean;
procedure WMPaint(var Msg:TWMPaint);message WM_PAINT;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Flag := true;
Memo1.Lines.Add('Before');
InvalidateRect(Handle,nil,true);
Memo1.Lines.Add('After');
end;
procedure TForm1.WMPaint(var Msg: TWMPaint);
begin
inherited;
if Flag then begin
Flag := false;
Memo1.Lines.Add('Completed!');
end;
end;
klmさん、ご親切にありがとうございます。
教えて頂いたサンプルを参考にさせていただきます。
本当にありがとうございます。
解決マーク忘れました。
ツイート | ![]() |