| |
|
|
| ne...aucune eigener Fil, quand même läufts indépendant - comment allez cela? Genutzt wird ici, qui Profan dans qui compilé EXE pour chacun 20.la ligne (uncompiliert pour chacun la ligne) seulement einmal eintreffende Messages verarbeitet: 1.) Minuteur wird initialisiert - 1500 Millisekunden später trifft qui WM_TIMER Message vom Betriebsystem un. 2.) Profan pouvoir encore maximum 20 Zeilen plus, ensuite wird qui Message verarbeitet. Verweist qui Timermessage sur une Prozeduradresse, wird qui là stehende Voir le texte source ausgeführt; qui im Augenblick laufende Quelltextabschnit wird unterbrochen et qui Procédure wird komplett fonctionnement. 3.) Ist qui Procédure finissez führt Profan den Voir le texte source ab qui unterbrochenen la ligne wieder aus.
cet Geschichte ist sur keinen le cas avec einem Fil trop verwechseln, là ici pas entre den individuel Quelltextzeilen geswitched wird, mais qui Procédure seulement komplett abgearbeitet wird, bevor es avec dem alten Voir le texte source weitergeht. Zugriffsrechte gibt es ici naturellement également aucun eigenen, et cela ganze peut sich aussi pas à chacun beliebigen Stelle s'arrêter, comment chez einem richtigen Fil! KompilierenMarqueSéparationDef @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
|
|
|
| |
|
|