DLGFLUSH

実行時サブルーチン:ダイアログボックスの表示を更新します。

モジュール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

関連情報

DLGINITDLGMODALDLGMODELESSDLGSETDLGSETSUB