| |
|
|
| Kein eigener Hilo, trotzdem läufts unabhängig - como va el? Genutzt se hier, que seculares en el compilierten EXE después de cada 20.Línea (uncompiliert después de cada Línea) sólo una vez eintreffende Messages verarbeitet: 1.) Temporizador se initialisiert - 1500 Millisekunden später trifft el WM_TIMER Message vom Betriebsystem una. 2.) Profano macht todavía máximo 20 Zeilen más, Luego se el Message verarbeitet. Verweist el Timermessage en una Prozeduradresse, se el hay stehende Ver código fuente ausgeführt; el en el Augenblick laufende Quelltextabschnit se unterbrochen y el Procedimiento se komplett ausgeführt. 3.) Ist el Procedimiento final führt Profano el Ver código fuente de el unterbrochenen Línea otra vez de.
Diese Geschichte es en no Fall con un Hilo a verwechseln, como hier no zwischen el individual Quelltextzeilen geswitched se, pero el Procedimiento sólo komplett abgearbeitet se, bevor lo con el alten Ver código fuente weitergeht. Zugriffsrechte hay hier natürlich ebenfalls no eigenen, y todos lässt se auch no a cada beliebigen Punto anhalten, como en una richtigen Hilo! KompilierenMarcaSeparaciónDef @GetCurrentThreadId(0) !KERNEL32,GetCurrentThreadId
DEF @GetDlgCtrlID(1) !USER32,GetDlgCtrlID
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
Def @SetTimer(4) !USER32,SetTimer
Def @KillTimer(2) !USER32,KillTimer
Declare Timer_WIN&,Text$[3],Button&,Zähler%,TIMER_ID&,PRO_ID&,TH_ID&
Windowstyle 31+512
Windowtitle Selbständig laufende Programmschleife
Window 0,0-640,440
Usermessages $10
LET TIMER_WIN&=@Control(Static,TIMER_WIN,$8000000,0,0,0,0,%Desktop,9998,%HINSTANCE,$4)
Let Button&=@createbutton(%HWND,,20,100,300,30)
LET TEXT$[0]=Hier klicken...
LET TEXT$[1]=...für die...
LET TEXT$[2]=...Messagebox!
LET TIMER_ID&=@SetTimer(TIMER_WIN&,9999,1500,@ProcAddr(TimerProc,4))
While %UMESSAGE<>$10
Waitinput
Locate 0,0
Print @GetCurrentThreadId(),TH_ID&
IF @ButtonClicked(Button&)
@messagebox(Der Text auf dem Button ändert sich weiterhin!,Ein Wunder...?,64)
endif
wend
@KiLLTIMER(TIMER_WIN&,9999)
end
Proc TimerProc
Parameters ahhwnd&,ahuMsg&,ahidEvent&,ahdwTime&
Settext Button&,Text$[Zähler%]
INC Zähler%
Case Zähler%=4 : LET Zähler%=0
LET TH_ID&=@GetCurrentThreadId()
ENDPROC
|
|
|
| |
|
|