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

解決


なのなの  2004-02-18 00:37:59  No: 7186

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


klm  2004-02-18 00:58:53  No: 7187

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


なのなの  2004-02-18 01:04:31  No: 7188

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


klm  2004-02-18 01:05:46  No: 7189

こんな感じ

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-18 01:11:38  No: 7190

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


なのなの  2004-02-18 01:13:13  No: 7191

解決マーク忘れました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加