API関数の処理の終了を知るには?

解決


なのなの  2004-02-17 15:37:59  No: 7186  IP: 192.*.*.*

API関数のInvalidateRectを使って描画処理を行っています。
この描画処理が終了したかどうか?知る方法はありませんか?

編集 削除
klm  2004-02-17 15:58:53  No: 7187  IP: 192.*.*.*

描画処理が終了したかどうかは、対象ウィンドウの  WM_PAINT メッセージの処理が終わったことを
知るといいのでは。実行前にフラグをたてておいて、WM_PAINT を捕まえて継承メソッドを呼び出したあとで
そのフラグが立っていたら、フラグを倒して、しかるべきところに処理終了を知らせる。

編集 削除
なのなの  2004-02-17 16:04:31  No: 7188  IP: 192.*.*.*

klmさんありがとうございます。
具体的にどのように書けばいいのでしょうか?

編集 削除
klm  2004-02-17 16:05:46  No: 7189  IP: 192.*.*.*

こんな感じ

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;

編集 削除
なのなの  2004-02-17 16:11:38  No: 7190  IP: 192.*.*.*

klmさん、ご親切にありがとうございます。
教えて頂いたサンプルを参考にさせていただきます。
本当にありがとうございます。

編集 削除
なのなの  2004-02-17 16:13:13  No: 7191  IP: 192.*.*.*

解決マーク忘れました。

編集 削除