Italia
Foro

Prog. beenden mit fensterschließen Kreuz funktioniert nicht?

 

Manfred
Barei
Ciao,

habe mit folgendem Prog. Code etwas Probleme und zwar läst sich das Fenster nicht mehr circa 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 possibile sein, habe das auch irgentwo einmal gelesen, finde es aber nicht mehr.

Ich hoffe Ihr può 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 per 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

Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
03.02.2005  
 




Manfred
Barei
Hallo Michael,

danke per 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&
.
.
.

Saluto,
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

='./../../references-fonction/xprofan/anzeige/'>anzeige
Salve, iF
 
03.02.2005  
 




Manfred
Barei
Ciao,

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 un 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 Aiuto 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 Argomenti 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

/../references-fonction/xprofan/anzeige/'>anzeige

Saluto
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
03.02.2005  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

4.147 Views

Untitledvor 0 min.
H.Brill13.09.2022
Walter10.05.2021
W.L.19.07.2017
Deaktiviert04.02.2017
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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