| |
|
|
E.T. | Können nproc y la ventana principal miteinander kommunizieren ??
Teilweise ya, denk Yo: Ein Fortschrittsbalken en el HWND se vom nproc correcto "fortgeschritten" (por SendMessage a el Balken). Also puede Balken y nproc "miteinander reden".
Aber sobald el HWND una vez verdeckt war, passiert nix mehr (leeres, weißes Ventana). Lo kommt no Aktualisierung la ventana mehr !!
Muss Yo ahora el Ventana incluso (z.B. por Message) a neuzeichnen auffordern ??
Ähnlich verhält se el Ventana-Menü: En klick el Cruz (Schließen) sagt el Profano-Prog: "Keine Rückmeldung", si en el nproc es.
Muss Yo z.B. todos Menüs en el nproc otra vez auswerten ??
Fragen encima Fragen... |
|
|
| 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... | 14.04.2010 ▲ |
|
|
|
|
| ¡Hola E.T.,
es así simplemente, lo son así gesehen no hay diferencia, si Usted de Proc oder NProc heraus arbeitest.
Usted puede bastante "normal" en NProcs con Handles spielen, como Windows y XProfan vorsieht.
Etwas schwierig se lo sin embargo, si de Hilos heraus con Handles spielen willst, el aber por otro Hilo producido fueron - hier erlauben el verschiedenen Windows-Versionen unterschiedlich.
>> Muss Yo ahora el Ventana incluso (z.B. por Message) a neuzeichnen auffordern ??
Nein, bastante normal - como sonst auch - o. "garnicht".
>> Muss Yo ahora el Ventana incluso (z.B. por Message) a neuzeichnen auffordern ??
Nein, sólo, si lo por Proc auch würdest.
>> Ähnlich verhält se el Ventana-Menü: En klick el Cruz (Schließen) sagt el >> Lo profano;-Prog: "Keine Rückmeldung", si en el nproc es.
Es doch auch "normal" y no anders, como si se el Programa en uno Proc befindet.
Vlt. kommt en uno Proc no es igual el Anzeige, dass el Prozess no rückmeldet, porque XProfan todos X Zeilen Nachrichtenabrufe zwischenschiebt - aber hier reagiert sí "XProfan" "abweichend".
>> Fragen encima Fragen...
El Yo todos gerne beantworten möchte, simplemente en auch incluso sehen a puede, si y wo todavía Schwachstellen disponible son.
Wenn algo konkretes no klappt, wovon Usted aber media, dass lo trabajo debería, entonces simplemente fix una pequeña Code puesto, dass Yo ggf. handeln kann. ^ ^ |
|
|
| |
|
|
|
E.T. | Hab veces al MB gebastelt: KompilierenMarcaSeparación {$IQ}
{$CLQ}
Def @Createwindowex(12) !"USER32","CreateWindowExA"
Def @Setparent(2) !"USER32","SetParent"
Declare Status&, St_Bereich#, Progress&, Classname$
Proc Status_Progress
Dim ST_Bereich#, 8
Long ST_Bereich#,0 = Width(%HWnd)-100, -1
Status& = @Create("StatusWindow",%HWND,"",2,St_Bereich#)
SetText Status&, 0, "Warte"
SetText Status&, 1, Date$(0)
Classname$="msctls_progress32"
Progress&=@Createwindowex(0,@Addr(Classname$),0,$40000000,3,@Height(%HWnd)-50,@Width(%HWnd) - 6,25,%Hwnd,0,%Hinstance,0)
@Setparent(Progress&,%HWnd)
@Showwindow(Progress&,1)
Endproc
Proc Durchlauf_1
Whileloop 1000
sleep 10
@Sendmessage(Progress&,$0400+2,100/1000*(&loop+1),0)
EndWhile
@Sendmessage(Progress&,$0400+2,0,0)
EndProc
nProc Durchlauf_2
global Progress&
Whileloop 1000
~RedrawWindow(%HWnd, 0, 0, ~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_UPDATENOW | ~RDW_INTERNALPAINT)
~RedrawWindow(Progress&, 0, 0, ~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_UPDATENOW | ~RDW_INTERNALPAINT)
sleep(10)
Sendmessage(Progress&,$0400+2,int(100.0/Float(1000)*Float(&loop)),0)
EndWhile
Sendmessage(Progress&,$0400+2,0,0)
EndProc
Window 800,120
WindowTitle "nProc - Message - Test"
CLS ~Getsyscolor(15)
Status_Progress
SetText Status&, 1, "Arbeite..."
SetText Status&, 0, "Durchlauf 1 ...bitte warten !!"
Durchlauf_1
SetText Status&, 0, "Durchlauf 1 (PROC) Fertig !!"
Sleep 500
SetText Status&, 0, "Durchlauf 2 (nPROC) ...bitte warten !!"
Durchlauf_2()
SetText Status&, 0, "Durchlauf 2 (nPROC) Fertig !!"
SetText Status&, 0, "Warte..."
waitinput
Dispose ST_Bereich#
=s4 href='./../../funktionsreferenzen/XProfan/end/'>end
Solange el Prog en el Durchlauf_1 (Proc), kann Yo el Ventana cualquier verdecken, mover etc., XProfan kümmert se sí ums neuzeichnen.
Im Durchlauf_2 (nProc) se después de mehrmaligem "verdecken" la ventana simplemente nix mehr aktualisiert, incluso el ~RedrawWindow(%HWnd... scheind no mehr anzukommen. Bleibt el Ventana el todo Tiempo sichtbar, flackerts natürlich muy schön (al auswerten de %wmpaint en el nproc bin Yo gescheitert ).
Wer "verschluckt" el neuzeichnen (nproc ?, XProfan ?, Windows ?) ??
(Getestet bajo XP) |
|
|
| 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... | 14.04.2010 ▲ |
|
|
|
|
| Unwichtig aber en lugar de Global sería Yo Progress& simplemente como Funktionsparameter transferencia - para Problema: Usted machst en el Principio 1000 veces Sleep(10) - en dieser Tiempo es el Prozess/ (Haupt)Hilo sprichwörtlich "beschäftigt" o. dank Sleep incluso "gesperrt" - Windows se como kaum el Möglichkeit haben, el Ventana para dibujar, auch porque el UI-Anzeige bastante passiv de Windows abgearbeitet o. versetzt entonces, si grad Tiempo es.
Quasi gibst Usted Windows en dieser Bucle no Chance, lo reagiert hier "korrekt" o. como esperado - si auch vlt. no necesariamente "wie erwünscht". ^ ^
Hier sería Yo más por ~SetTimer-Api en una NProc zeigen, el sólo simplemente sólo el SendMessage absetzt, sin Bucle.
Salopp gesprochen: Machst Usted also de uno XProfan-Función heraus lauter SetText, así kannst Usted wohl nebenher zuschauen - machst Usted dies de uno NProc heraus - así va dies así fix, dass Windows-UI no hinterherkommt, besonders auch porque no z.B. todos "20 Zeilen" Noticias abgeholt/ verarbeitet voluntad pero tatsächlich sólo el getan se, qué angewiesen es.
Ein Irrglaube es vlt. auch, dass Sleep el Prozess/ Hilo "Zeit" son - tatsächlich es más así, dass Sleep el Tiempo stiehlt, porque en dieser Tiempo el Hilo más "totgestellt" es. |
|
|
| |
|
|
|
E.T. | Hab Yo wohl el MB "etwas doof" gestaltet: Im richtigen Progg es natürlich kein sleep , tener Yo sólo en el MB instalado, así uno Tiempo para testen ha. Eigentlich führe Yo en el Bucle (viele,viele) String-Vergleiche por. Der Effekt es pero la gleiche como con sleep.
Wünschenswert wäre me una simplemente Abfrage ala KompilierenMarcaSeparación Aber komm Yo en el nProc a %wmpaint vom XProfan-Ventana ran ?? Yo denk, entonces wäre me geholfen Dann debería Yo Windows no en cada Schleifen-Durchlauf con uno Neuzeichnen - Message "zuballern". |
|
|
| 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... | 15.04.2010 ▲ |
|
|
|
|
| >> Im richtigen Progg es natürlich kein sleep , tener Yo sólo en el MB instalado, >> así uno Tiempo para testen ha.
Yo verstehe, sólo, dass eben Sleep hier eigentlich no Tiempo schenkt pero sólo welche kostet - also diesem Hilo no Tiempo schenkt, algo a erledigen. ^ ^
>> Eigentlich führe Yo en el Bucle (viele,viele) String-Vergleiche por. Der Effekt >> es pero la gleiche como con sleep.
Klar, si Usted tausende Male s$=s$+"Hallo" machst, oder Sleep(... en beiden Fällen es el Hilo no con Fensterzeichnerei beschäftigt.
>> Aber komm Yo en el nProc a %wmpaint vom XProfan-Ventana ran ?? Yo denk, entonces wäre me geholfen
%wmPaint se vlt. de el WProc gesetzt, si sólo el Nachricht wm_paint ankam - Usted könntest simplemente el hWnd subclassen - pero la Weg se sí siempre länger así.
>> Dann debería Yo Windows no en cada Schleifen-Durchlauf con uno Neuzeichnen - >> Message "zuballern".
Von una GetMessage etc. Yo bisher abgesehen, porque Yo z.B. no gestackte Mensajes del usuario abtragen möchte - Yo lasse me algo einfallen. |
|
|
| |
|
|