実行時サブルーチン:ダイアログボックスの表示を更新します。
モジュール:USE DFLOGM
形式
CALL DLGFLUSH ( dlg [, flushall] )
dlg
(入力) 構造型 DIALOG。ダイアログボックス・パラメタを含みます。構造型 DIALOG の成分は,PRIVATE 属性で定義され,ユーザーが変更したり,個別に参照することはできません。
flushall
(省略可能,入力) 論理型。.FALSE. (基本設定) の場合,ダイアログ・ルーチンが変更と記したコントロールのみが更新されます。.TRUE. の場合,すべてのコントロールがダイアログ・ルーチンが既知のコントロール状態で更新されます。通常,flushall を .TRUE. に設定しません。
アプリケーションがダイアログボックスのコントロールのプロパティを変更するために DLGSET を呼び出す時,変更は表示されているダイアログボックスに直ちに反映されるわけではありません。変更はダイアログボックスが最初に表示された時に反映され,ユーザー・コードへのダイアログ・コールバックが呼ばれた後毎に繁栄されます。
DLGMODAL または DLGMODELESS の呼び出しの後,すべての DLGSET の呼び出しがコールバック・ルーチン内から行われるということを,この設計は期待しています。多くの場合,これは真で,そのため発行されません。しかしながら,ダイアログ・コールバック内でコントロールを変更したくない場合もあります。
しかしながら,ダイアログ・コールバックの外,または,ダイアログ・コールバックのループ内からコントロールを変更したい場合があります。この場合には,DLGFLUSH が要求されますが,ダイアログ表示を更新するには,常に十分ではありません。DLGFLUSH は,待機中の Windows システム・メッセージをダイアログボックスとそれを含むコントロールに送ります。しかしながら,多くの表示変更は,Windows システムが DLGFLUSH が送ったメッセージの結果としてプログラムに送ったメッセージを,プログラムが読んで処理するまで発生しません。待機中のメッセージを処理するループがしばしば必要になります。以下に例を示します。
use DFWINTY use USER32 logical lNotQuit, lret integer iret TYPE (T_MSG) mesg lNotQuit = .TRUE. do while (lNotQuit .AND. (PeekMessage(mesg, 0, 0, 0, PM_NOREMOVE) <> 0)) lNotQuit = GetMessage(mesg, NULL, 0, 0) if (lNotQuit) then if (DLGISDLGMESSAGE(mesg) .EQV. .FALSE) then lret = TranslateMessage(mesg) iret = DispatchMessage(mesg) end if end if end do
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報