| |
|
|
Manfred Barei | Hallo,
habe mit folgendem Prog. Code etwas Probleme und zwar läst sich das Fenster nicht mehr über das schließen Kreuz beenden. KompilierenMarkierenSeparieren
proc prgexit
MessageBox("Programm beenden?","Frage:",36)
if %Button = 6
ende& = 1
ASSIGN #1,PrgDir$+"NACHN.BMP"
ASSIGN #2,PrgDir$+"ABS.BMP"
ASSIGN #3,PrgDir$+"EMP.BMP"
ERASE #1
ERASE #2
ERASE #3
endif
SetMenuItem 0
SETFOCUS(%HWND)
endproc
proc anzeige
DECLARE ende&
DECLARE Formular&, Datenbank&
SETTRUECOLOR 1
WINDOWSTYLE 538
window (%MaxX+2),((%MaxY/2)-250)-596,510
GETSYSCOLOR(15)
PopUp "&Datei"
AppendMenu 102,"D&rucken"
Separator
AppendMenu 190,"&Ende"
SetWindowPos %HWnd=((%MaxX/2)-298),((%MaxY/2)-250)-596,510;0
ende&=0
SETFOCUS(%HWND)
whilenot ende&
sleep 100
If @MenuItem(190) or (%Key = 2)
prgexit
ELSEIF GETFOCUS(Formular&)
ELSEIF GETFOCUS(Datenbank&)
endif
ENDWHILE
endproc
anzeige
Ich benötige die Whilschleife aber mit einem sleep, es muß doch möglich sein, habe das auch irgentwo einmal gelesen, finde es aber nicht mehr.
Ich hoffe Ihr könnt helfen.
Grus aus der Heide von Manfred Windows XP Prof. , Profan 8/9 |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 03.02.2005 ▲ |
|
|
|
|
Manfred Barei | Hallo nochmal,
Soory, es kommt immer eine Fehlermeldung das die Variable PrgDir$ nicht Declariert ist, bitte auskommentieren. Habe den Prog. Code aus meinem Laufenden Programm entnommen und für dieses Beispiel vergessen die Variable zu löschen.
Grus Manfred |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 03.02.2005 ▲ |
|
|
|
|
Michael Dell | |
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 03.02.2005 ▲ |
|
|
|
|
Manfred Barei | Hallo Michael,
danke für die Antwort, habe ich aber auch schon probiert ( Funzt nicht).
Grus Manfred |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 03.02.2005 ▲ |
|
|
|
|
CB | Hi, probier mal das:
DEF &WM_CLOSE $010 DEF &WM_COMMAND $0111 UserMessages &WM_COMMAND,&WM_CLOSE
In die Hauptschleife: (nur prinzipiell, bin in Eile):
Whilenot Ende& Sleep 100 Waitinput If %UMessage = &WM_CLOSE Ende& = 1 ElseIf %UMessage = &WM_COMMAND If &ULParam = Formular& . . .
Gruß, Christian |
|
|
| |
|
|
|
| Das Du eine While-Schleife benötigst - mit einem Sleep - ist so hoffe ich nur die halbe Wahrheit.
Vielleicht willst Du aber auch nur das das Programm weiterläuft wärend dessen die Hauptroutine die normalen Aufgaben erledigt.
Genau dafür gibts die Thread.pcu
Fünf Zeilen mehr und du hast das gewünschte Ergebnis: KompilierenMarkierenSeparieren $U thread.pcu = thread.
proc prgexit
MessageBox("Programm beenden?","Frage:",36)
if %Button = 6
ende& = 1
ASSIGN #1,PrgDir$+"NACHN.BMP"
ASSIGN #2,PrgDir$+"ABS.BMP"
ASSIGN #3,PrgDir$+"EMP.BMP"
ERASE #1
ERASE #2
ERASE #3
endif
SetMenuItem 0
SETFOCUS(%HWND)
endproc
proc anzeige
DECLARE ende&
DECLARE Formular&, Datenbank&
SETTRUECOLOR 1
WINDOWSTYLE 538
window (%MaxX+2),((%MaxY/2)-250)-596,510
PopUp "&Datei"
AppendMenu 102,"D&rucken"
Separator
AppendMenu 190,"&Ende"
SetWindowPos %HWnd=((%MaxX/2)-298),((%MaxY/2)-250)-596,510;0
ende&=0
SETFOCUS(%HWND)
thread.start 1
whilenot ende&
waitinput
If @MenuItem(190) or (%Key = 2)
prgexit
ELSEIF GETFOCUS(Formular&)
ELSEIF GETFOCUS(Datenbank&)
endif
ENDWHILE
thread.stop 1
endproc
proc thread.do
settext %hwnd,time$(0)+"."+time$(1)
endproc
anzeige
Salve, iF |
|
|
| |
|
|
|
Manfred Barei | Hallo,
zu Christian: Das Waitinput kann ich in dieser Schleife nicht gebrauchen, deshalb sleep.
zu IF: Nein, ich brauch die Schleife mit einem sleep da die Schleife mit einem Waitinput nicht funktioniert. Sie Wirt zwischendurch immer mal wieder abgefragt.
Die Schleife wird nach betätigen eines Buttons verlassen und verzweigt in eine Unterschleife. Die Hauptschleife wird aber immer wieder mal abgefragt.
Um nun nicht die gesamte CPU-Auslastung diesem Programm zuzuteilen das sleep.
Ich hoffe ich habe mich verständlich ausgedrückt.
Grus Manfred |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 03.02.2005 ▲ |
|
|
|
|
| Schau Dir doch nochmal meinen Source an - der macht genau das was Du möchtest. Schaue Dir auch mal die Hilfe zur Thread.Pcu an. Du musst doch nicht das Hauptprogramm mit dem Gewurstel beschäftigen - besonders wenn Du doch eigendlich das Waitinput brauchst. Dafür ist die Prozedur Thread.Do doch da.
Ich denke wenn Du ein bisl umdenkst ist das genau das was Du brauchst.
Salve, iF |
|
|
| |
|
|
|
Rolf Koch | Hi Manfred,
jawohl, IFs Thread.pcu ist wirklich was Du benötigst! Mehrere Timer setzen, verschiedene Themen nebenbei abfragen und bearbeiten (dato waren es doch bis zu 5, IF?) und dies bei 0% Prozessorauslastung im Hauptprogramm. Vorallem die Einbindung ist mind. genauso einfach als wenn man einen Timer setzt.
Rolf (Hatschi ) |
|
|
| |
|
|
|
Jörg Sellmeyer | Hallo Manfred, So müßte es auch mit Deinem Code funktionieren: KompilierenMarkierenSeparieren
proc prgexit
MessageBox("Programm beenden?","Frage:",36)
if %Button = 6
ende& = 1
KillTimerTimer freigeben
ASSIGN #1,PrgDir$+"NACHN.BMP"
ASSIGN #2,PrgDir$+"ABS.BMP"
ASSIGN #3,PrgDir$+"EMP.BMP"
ERASE #1
ERASE #2
ERASE #3
endif
SetMenuItem 0
SETFOCUS(%HWND)
endproc
proc anzeige
DECLARE ende&
DECLARE Formular&, Datenbank&
SETTRUECOLOR 1
WINDOWSTYLE 538
window (%MaxX+2),((%MaxY/2)-250)-596,510
GETSYSCOLOR(15)
PopUp "&Datei"
AppendMenu 102,"D&rucken"
Separator
AppendMenu 190,"&Ende"
SetWindowPos %HWnd=((%MaxX/2)-298),((%MaxY/2)-250)-596,510;0
ende&=0
SETFOCUS(%HWND)
SetTimer 1je kleiner der Timer, desto besser reagiert das Programm
ob 1 oder 100 hat auf die CPUauslastung ca. 5%-10% Auswirkung
whilenot ende&
CaseNot %wmtimer:WaitiInput
If @MenuItem(190) or (%Key = 2)
prgexit
ELSEIF GETFOCUS(Formular&)
ELSEIF GETFOCUS(Datenbank&)
endif
ENDWHILE
endproc
anzeige
Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 03.02.2005 ▲ |
|
|
|