March 28, 2024, 12:58:07 PM

News:

IonicWind Snippit Manager 2.xx Released!  Install it on a memory stick and take it with you!  With or without IWBasic!


The WAIT command

Started by Andy, March 09, 2020, 04:15:07 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Andy

The WAIT command is one I have never implemented before, this is what the help file says:

SUB MYWAITUNTIL
DO
  processdata()
  WAIT
UNTIL (cancel = 0) | (run = 0)
RETURN
ENDSUB

Quote from: undefinedUsing WAIT in this manner allows using the time between messages for custom processing.


So can some one explain how / where in a window program do I place / use "MYWAITUNTIL"?

Granted, it doesn't take much for me to get confused, but this one has left me wondering.

I do know there are two or three examples where WAIT is used, but just can't figure it out.

Help anyone?

Thanks,
Andy.
Day after day, day after day, we struck nor breath nor motion, as idle as a painted ship upon a painted ocean.

LarryMc

This is how I used in the Visual Designer (to try to give you the general idea of one way to use it.
First of all I'm using it in a project.
2nd of all I'm calling it from my project's main source file which goes something like this:
$main
$include "stdafx.inc"
'insert global variables
'call your main open window routine
OpenMainWindow()
'now initialize all of your program dialogs so they are ready to use
call the idle routine
MYWAITUNTIL()
'do any program cleanup and shutdown
'this was from my program
        stoptimer main
if hIcon then DELETEIMAGE hIcon,@IMGICON

IF htBrush <> NULL
DeleteObject(htBrush)
ENDIF
IF !IsWindowClosed(form)then CloseWindow form

wndmenu.SetImages(0, 0)
wndmenu.m_bmp = 0

FreeLib "VDEBSciLexer.DLL"
'if m_pStrKeywords then delete m_pStrKeywords
'if m_pStrConstants then delete m_pStrConstants
ListRemoveAll(m_listKeywords,TRUE)
ListRemoveall(m_listConstants,TRUE)
closeconsole
End

sub MYWAITUNTIL()
do
wait
OnIdle()

until IsWindowClosed(main)
endsub

sub OnIdle()
int cmain_tab= tcGetSelectedTab(main,IDT_CONTROL)
SendMessage(form.hwnd,MESSAGE_ON_IDLE,0,0)
SendMessage(code.hwnd,MESSAGE_ON_IDLE,0,0)
'handle any menus we might control
if cur_project_name=""
cp=0
if IsMenuItemEnabled(main,MENU_PROJ_CLOSE) then ENABLEMENUITEM main,MENU_PROJ_CLOSE,0
if IsMenuItemEnabled(main,MENU_PROJ_SAVE) then ENABLEMENUITEM main,MENU_PROJ_SAVE,0
if IsMenuItemEnabled(main,MENU_PROJ_SAVEAS) then ENABLEMENUITEM main,MENU_PROJ_SAVEAS,0
if IsMenuItemEnabled(main,MENU_BUILD_PROJECT) then ENABLEMENUITEM main,MENU_BUILD_PROJECT,0
if IsMenuItemEnabled(main,MENU_EXECUTE) then ENABLEMENUITEM main,MENU_EXECUTE,0
if IsMenuItemEnabled(main,MENU_BUILD_EXECUTE) then ENABLEMENUITEM main,MENU_BUILD_EXECUTE,0
if IsMenuItemEnabled(main,MENU_BACKUP) then ENABLEMENUITEM main,MENU_BACKUP,0
if IsMenuItemEnabled(main,MENU_EXPORT) then ENABLEMENUITEM main,MENU_EXPORT,0
if IsMenuItemEnabled(main,MENU_PROJ_OPTS) then ENABLEMENUITEM main,MENU_PROJ_OPTS,0
if IsMenuItemEnabled(main,MENU_PROJ_TODO) then ENABLEMENUITEM main,MENU_PROJ_TODO,0
'if cmain_tab<>1
if IsMenuItemEnabled(main,MENU_PROJ_INSTF) then ENABLEMENUITEM main,MENU_PROJ_INSTF,0
if IsMenuItemEnabled(main,MENU_PROJ_INSOL) then ENABLEMENUITEM main,MENU_PROJ_INSOL,0
'endif
if IsMenuItemEnabled(main,MENU_PROJ_INCLUDES) then ENABLEMENUITEM main,MENU_PROJ_INCLUDES,0
if IsMenuItemEnabled(main,MENU_EDITOR_MENU) then ENABLEMENUITEM main,MENU_EDITOR_MENU,0
if IsMenuItemEnabled(main,MENU_EDITOR_TOOLBAR) then ENABLEMENUITEM main,MENU_EDITOR_TOOLBAR,0
if IsMenuItemEnabled(main,MENU_EDITOR_RESRC) then ENABLEMENUITEM main,MENU_EDITOR_RESRC,0
if IsMenuItemEnabled(main,MENU_EDITOR_TAB) then ENABLEMENUITEM main,MENU_EDITOR_TAB,0
if IsMenuItemEnabled(main,MENU_BUILD_RESOURCE) then ENABLEMENUITEM main,MENU_BUILD_RESOURCE,0
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_EXECUTE,0
endif
if cur_project_name<>""
cp=1

if IsMenuItemEnabled(main,MENU_PROJ_CLOSE)=0 then ENABLEMENUITEM main,MENU_PROJ_CLOSE,1
if IsMenuItemEnabled(main,MENU_PROJ_SAVEAS)=0 then ENABLEMENUITEM main,MENU_PROJ_SAVEAS,1
if IsMenuItemEnabled(main,MENU_EXECUTE)=0 then ENABLEMENUITEM main,MENU_EXECUTE,1
if IsMenuItemEnabled(main,MENU_BACKUP)=0 then ENABLEMENUITEM main,MENU_BACKUP,1
if IsMenuItemEnabled(main,MENU_EXPORT)=0 then ENABLEMENUITEM main,MENU_EXPORT,1
if IsMenuItemEnabled(main,MENU_PROJ_OPTS)=0 then ENABLEMENUITEM main,MENU_PROJ_OPTS,1
if IsMenuItemEnabled(main,MENU_PROJ_TODO)=0 then ENABLEMENUITEM main,MENU_PROJ_TODO,1
if IsMenuItemEnabled(main,MENU_PROJ_INSOL)=0 then ENABLEMENUITEM main,MENU_PROJ_INSOL,1
if IsMenuItemEnabled(main,MENU_PROJ_INCLUDES)=0 then ENABLEMENUITEM main,MENU_PROJ_INCLUDES,1
if IsMenuItemEnabled(main,MENU_EDITOR_MENU)=0 then ENABLEMENUITEM main,MENU_EDITOR_MENU,1
if IsMenuItemEnabled(main,MENU_EDITOR_TOOLBAR)=0 then ENABLEMENUITEM main,MENU_EDITOR_TOOLBAR,1
if IsMenuItemEnabled(main,MENU_EDITOR_RESRC)=0 then ENABLEMENUITEM main,MENU_EDITOR_RESRC,1
if IsMenuItemEnabled(main,MENU_EDITOR_TAB)=0 then ENABLEMENUITEM main,MENU_EDITOR_TAB,1
endif
if cur_project_name<>""
if cmain_tab<>1
if IsMenuItemEnabled(main,MENU_PROJ_INSTF) then ENABLEMENUITEM main,MENU_PROJ_INSTF,0
endif
if project_modified
if IsMenuItemEnabled(main,MENU_PROJ_SAVE)=0 then ENABLEMENUITEM main,MENU_PROJ_SAVE,1
else
if IsMenuItemEnabled(main,MENU_PROJ_SAVE) then ENABLEMENUITEM main,MENU_PROJ_SAVE,0
endif
UpdateCaption()
if compiling
if IsMenuItemEnabled(main,MENU_BUILD_PROJECT) then ENABLEMENUITEM main,MENU_BUILD_PROJECT,0
if IsMenuItemEnabled(main,MENU_BUILD_RESOURCE) then ENABLEMENUITEM main,MENU_BUILD_RESOURCE,0
if IsMenuItemEnabled(main,MENU_BUILD_EXECUTE) then ENABLEMENUITEM main,MENU_BUILD_EXECUTE,0
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_EXECUTE,0
else
if IsMenuItemEnabled(main,MENU_BUILD_PROJECT)=0 then ENABLEMENUITEM main,MENU_BUILD_PROJECT,1
if IsMenuItemEnabled(main,MENU_BUILD_RESOURCE)=0 then ENABLEMENUITEM main,MENU_BUILD_RESOURCE,1
if IsMenuItemEnabled(main,MENU_BUILD_EXECUTE)=0 then ENABLEMENUITEM main,MENU_BUILD_EXECUTE,1
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_EXECUTE,1
endif

endif
SendMessage(main.hwnd,MESSAGE_ON_IDLE,0,0)
'ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_EXECUTE,cp
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_PROJ_SAVEAS,cp
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_PROJ_CLOSE,cp
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_PROJ_SAVE,project_modified=1
ControlCmd form,TB_FORM,@TBENABLEBUTTON,FMENU_WINDOW,cp
ControlCmd form,TB_FORM,@TBENABLEBUTTON,FMENU_DIALOG,cp


ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_DEBUG_START,0
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_DEBUG_SS,0
ControlCmd main,TB_MAIN,@TBENABLEBUTTON,MMENU_DEBUG_STOP,0

endsub


With this setup, no matter what dialog is displayed or what is going on, the toolbar will always be updated on time, The same sort of structure is used in the IWB IDE.
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

Andy

Larry,

Thank you, will get my head on this one now.

This is very helpful to me.

Andy.
 :)
Day after day, day after day, we struck nor breath nor motion, as idle as a painted ship upon a painted ocean.