Deutsch
Forum

Prog. beenden mit fensterschließen Kreuz funktioniert nicht?

 

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
Hallo Manfred,

versuchs mal so:
KompilierenMarkierenSeparieren
whilenot ende&

    sleep 100

    If @MenuItem(190) or (%Key = 2) or (%MenuItem = -2)

        prgexit

    ELSEIF GETFOCUS(Formular&)

    ELSEIF GETFOCUS(Datenbank&)

    endif

ENDWHILE


Gruß

Michael
 
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
 
XProfan 8/9.1, Win XP, AMD 64/3200
03.02.2005  
 



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
 
03.02.2005  
 




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
 
03.02.2005  
 




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 )
 
03.02.2005  
 




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  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.159 Betrachtungen

Unbenanntvor 0 min.
H.Brill13.09.2022
Walter10.05.2021
W.L.19.07.2017
Deaktiviert04.02.2017
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie