Run-Time Subroutine: Updates the display of a dialog box.
Module: USE DFLOGM
Syntax
When your application calls DLGSET to change a property of a control in a dialog box, the change is not immediately reflected in the displayed dialog box. Changes are applied when the dialog box is first displayed, and then after every dialog callback to the user's code.
This design expects that, after a call to DLGMODAL or DLGMODELESS, every call to DLGSET will be made from within a callback routine, and that the callback routine finishes quickly. This is true most of the time and so is not an issue.
However, there may be cases where you want to change a control outside of a dialog callback, or from within a loop in a dialog callback. In these cases, DLGFLUSH is required, but not always sufficient, to update the dialog display. DLGFLUSH sends pending Windows system messages to the dialog box and the controls that it contains. However, many display changes do not appear until after the program reads and processes the messages that the Windows system has sent to the program as the result of the messages sent by DLGFLUSH. A loop that processes the pending messages is often required; for example:
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
Compatibility
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
See Also: DLGINIT, DLGMODAL, DLGMODELESS, DLGSET, DLGSETSUB