Deutsch
Forum

nProc und Neuzeichnen - Messages

 
- Seite 1 -



E.T.
Eben so aufgefallen: Ist mein Xprofan-Programm im nProc am arbeiten, wird es z.B. durch "Neuzeichnen"  aus dem Tritt gebracht. "Neuzeichnen"  tritt ja immer auf, wenn das Prog-Fenster verkleinert, verdeckt oder verschoben wird (verdeckt z.B. durch Bildschirmschoner ).
Nach solch einem Event scheind meine nProc endlos damit beschäftigt zu sein, das Fenster neu zeichnen zu wollen. Und dies ewig, mit der Eieruhr für völlige Auslastung. Auch die Messages an die Balken-Anzeigen erzielen keinerlei Wirkung mehr. Selbst das System-Menü wird wirr, vor dem nProc habe ich z.B. das [X] für "Programm schließen" deaktiviert, dieses ist dann wieder aktiv.
Solange ich das Fenster nicht verdecke oder verschiebe, läuft das nProc klaglos durch, mit dem ganz normalen Pfeil als Mauszeiger....

Beispiel meiner nProc:
KompilierenMarkierenSeparieren
nProc Vergleichen

    global Liste1&,  Liste2&, Liste4&, Zaehler1&, Zaehler2&, Status&, ProgressBar_3&, ProgressBar_4&
    Declare Verg_Dat_1$, Verg_Dat_2$, Vergl_Str1$, Vergl_Str2$, Vergl_Pass&, Pos_L1&

    WhileLoop 0,Zaehler1&

        Vergl_Str1$ = GetText.Listview(Liste1&, &loop, 0)
        Verg_Dat_1$ = GetText.Listview(Liste1&, &loop, 1)

        WhileLoop 0,Zaehler2&

            Vergl_Str2$ = GetText.Listview(Liste2&, &loop, 0)

            If Vergl_Str1$ = Vergl_Str2$

                Verg_Dat_2$ = GetText.Listview(Liste2&, &loop, 1)

                IfNot Verg_Dat_1$ = Verg_Dat_2$

                    Inc Vergl_Pass&
                    AddString(Liste4&, Verg_Dat_1$ + "|" + Verg_Dat_2$)

                EndIF

            EndIf

            Sendmessage(ProgressBar_4&,$0400+2,int(100.0/Float(Zaehler1&)*Float(&loop)),0)

        EndWhile

        Sendmessage(ProgressBar_4&,$0400+2,0,0)
        Sendmessage(ProgressBar_3&,$0400+2,int(100.0/Float(Zaehler1&)*Float(&loop)),0)

    EndWhile

EndProc


Ist ja halt kein so komplizierter Code, lediglich das vergleichen vieler Strings auf Übereinstimmung (läuft halt doch als nProc vieeel schneller als in XProfan..)
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
12.11.2010  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »

Geht doch wie im Beispiel*:
KompilierenMarkierenSeparieren
'URL: https://xprofan.com/intl/de/xpse/nproc-und-neuzeichnen-messages/#bottom
 {$cleq}
cls
long myThread=createThread(0,0,procAddr(eineProc),hWnd,0,0),b
print "fertig"

while 1

    waitinput 1000
    getExitCodeThread(myThread,addr(b))
    case b==123456 : break

wend

print "allesfertig"
end

nProc eineProc(long some)

    whileLoop 2

        setText(some,str$(getTickCount))
        sleep(1000)

    wend

    return 123456//oder exitThread(123456) wenn an beliebiger Stelle Thread abgewürgt werden soll wie "end 123456"

endProc


*XP-getestet - hab hier nur XP.
 
13.11.2010  
 



Sorry, was? Ich konnte noch nie so lecker Neuzeichnen wie mit nProcs (siehe canvas etc)

Man sollte beim Neuzeichnen natürlich nicht dafür sorgen, dass gleich wieder neugezeichnet werden will - dann gibts natürlich nen Windows-Unendlichloop - hier hilft z.B. validaterect "im" wm_paint.

Wofür genau brauchst ein Beispiel?
 
12.11.2010  
 



hier nochmal iF...

mist, bei ueber 250 bricht immer das Handyinternet zusammen...

ich glaube ich weiss jetzt was Du meinst...

gleiches Verhalten kannst Du mit sleep 10000 bverursachen... wenn ein Thread arbeitet dann kann er nicht neuzeichnen... das ist aber voellig normal.
 
12.11.2010  
 



hehe Berlin ... Coswig ... 22 Minuten gg ... ist wie nProc...
 
12.11.2010  
 




E.T.
Nur versteh ich jetzt nicht, wo der Windows-Unendlichloop  hekommt. Es soll ja nur dann neugezeichnet werden, wenn auch muss. Also z.B. wenn das Fenster von verkleinert wiederhergestellt wird. Im nProc bleibts genau da (endlos) hängen, das neuzeichnen kommt garnicht erst beim Fenster an (bleibt weiß).
Das gleiche Proc in XProfan hat dieses Problem nicht, da XProfan sich ja um das Neuzeichnen kümmert .
Kann man das nicht dem nProc auch beibringen ??
Oder bleibt die Neuzeichnen-Aufforderung im nProc ewig stehen, so das dadurch der Windows-Unendlichloop  entsteht ???
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
12.11.2010  
 



Wiederda...

Gib mir bitte ein komplettes Beispiel an dem ich ein bestimmtes Verhalten nachvollziehen (und dann ggf. auch erklären) kann. ^^
 
12.11.2010  
 



Bekommste hin?
 
13.11.2010  
 




E.T.
Im Moment werd ich es erstmal so lassen, das das Fenster nach veränderung (verschieben etc.) nicht mehr aktualisiert wird. Hab versucht, die wm-pain - Message ans Haupfenster im nProc "rauszufiltern", was aber mit kommentarlosem Abbruch endet...

Eigendlich will ich ja nur, das im obigen Bsp. das wm_paint beim Hauptfenster ankommt. Ein waitinput 1  würde da nach der inneren Schleife ggf. vielleicht schon helfen, geht ja halt aber nich.
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
13.11.2010  
 



E.T. (13.11.10)
Eigendlich will ich ja nur, das im obigen Bsp. das wm_paint beim Hauptfenster ankommt.


Klar, wenn Dein UI-Thread arbeitet - z.B. bei Sleep 10000 oder eine Schleife in einer nProc; oder in einer API - eben nur nicht in einer XProfan-Schleife - dann springt der UI-Thread nicht einfach auf einmal in eine wProc um wm_paint auszuführen sondern eben erst dann wenn z.B. GetMessage/ WaitApis vom Progger _angewiesen werden.
 
13.11.2010  
 



Aber was Du mit "Unendlichschleife" meinst oder wie Du solche obig erzeugst kann ich nicht nachvollziehen.
 
13.11.2010  
 




E.T.
iF (13.11.10)
Aber was Du mit "Unendlichschleife" meinst oder wie Du solche obig erzeugst kann ich nicht nachvollziehen.


Das mit der Unenlich-Schleife hat sich geklärt, wenn das nProc "durch" ist, gehts ganz normal im Prog weiter (nicht lang genug gewartet ).

[OFFTOPIC]Wenn ein neues Post (wie eben von Dir) eintrifft, wärend man in diesem Tread noch am lesen ist, so wird dieser andersfarbig dargestell (sicher so gewollt), aber drunter fehlt das Zitieren  etc., nur die Uhrzeit steht da



[/OFFTOPIC]

1.jpg  
12 kB
Hochgeladen:13.11.2010
Ladeanzahl93
Herunterladen
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
13.11.2010  
 



E.T. (13.11.10)
iF (13.11.10)
Aber was Du mit "Unendlichschleife" meinst oder wie Du solche obig erzeugst kann ich nicht nachvollziehen.


Das mit der Unenlich-Schleife hat sich geklärt, wenn das nProc "durch" ist, gehts ganz normal im Prog weiter (nicht lang genug gewartet ).


Naja genau, so ist das auch "richtig" - man soll ja den UI-Thread nicht mit andauernden Aufgaben blockieren sondern dann eben nen extra Thread beschäftigen. Durch die "Ehrlichkeit" einer nProc fällt dies umsomehr auf. ^^

[OFFTOPIC]
E.T. (13.11.10)
[OFFTOPIC]Wenn ein neues Post (wie eben von Dir) eintrifft, wärend man in diesem Tread noch am lesen ist, so wird dieser andersfarbig dargestell (sicher so gewollt), aber drunter fehlt das Zitieren  etc., nur die Uhrzeit steht da [/OFFTOPIC]




Das ist "korrekt" so bzw. verhält sich wie programmiert - die "nachgeschobenen" "Live-Postings" sind sogesehen keine Vollwertigen und zeigen z.B. auch keine Dateianhänge etc. Sind eher "nützliche Hinweise auf möglicherweise-nützliche Beiträge" und ermöglichen aber immerhin eine Livekonversation. [/offtopic]
 
13.11.2010  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

23.629 Betrachtungen

Unbenanntvor 0 min.
iF05.12.2018
p.specht07.01.2018
Ernst07.05.2016
funkheld28.04.2016
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (15x)
E.T. (10x)
unbekannt (2x)


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