Date: 02-16-2022
Return to Index
created by gbSnippets
'A message pump is used to keep a modeless dialog on the screen. It's essentially Do Loop
'that runs until the last application dialog has been ended.
'Primary code:
'Syntax: DIALOG DOEVENTS [sleep&] [TO count&]
'Used to create a message pump for a modeless dialog, allowing other threads or processes
'to continue. Count& is the number of active dialogs within the application.
Do
Dialog Doevents 0 To Count&
Loop While Count&
'You can also do it the SDK way:
While GetMessage(Msg, %NULL, 0, 0)
If IsFalse IsDialogMessage (hDlg, Msg)
TranslateMessage Msg
DispatchMessage Msg
End If
Wend
'Note: Although the middle line looks like a loop of some kind, it is not.
' 0 is the sleep time for the app each time Dialog DoEvents is called.
' Count& is returned by Dialog Events, telling how many dialogs are currently
' open in the application. When Count& is zero, all dialogs are closed and the app ends
'Compilable Example: (Jose Includes)
#Compiler PBWin 9, PBWin 10
#Compile EXE
#Dim All
%Unicode=1
Global hDlg As Dword, Count&
Function PBMain() As Long
Dialog New Pixels, 0, "Modeless Dialog",300,300,200,200, %WS_OverlappedWindow, 0 To hDlg
Control Add Button, hDlg, 100,"Push", 50,50,100,20
Dialog Show Modeless hDlg Call DlgProc
Do
Dialog Doevents 0 To Count&
Loop While Count&
End Function
CallBack Function DlgProc() As Long
If CB.Msg = %WM_Command AND CB.Ctl = 100 AND CB.Ctlmsg = %BN_Clicked Then
'test code
MsgBox "Button pushed"
End If
End Function
'gbs_00047
'Date: 03-10-2012
http://www.garybeene.com/sw/gbsnippets.htm