mit mehrern Thread auf einen Device Context zeichnen??
-
naja es geht darum das die einzlene thread nicht nur für das zeichnen der objekte ist.
jeder Thread soll stellt einen unabhängigen prozess einer maschine dar....diese sollen zusätlich visualisiert werden. beispiel Motorachsenrotation!
MotorA dreht sich mit 500U/Min
MororB dreht sich mit 1000U/Mindiese rotation soll abhängig der U/min im gemeinsam DC dargstellt werden. und jeder motor hat einen eigene trhead..
-
Ja und, blubb?
Deswegen musst du ja noch lange nicht in den Motörachsenthreads zeichnen, oder? Reicht ja wenn die das irgendwem mitteilen der das dann zeichnet. Oh Mann Mann Mann Mann...Davon abgesehen, wieso verwendest du dafür überhaupt irgendwelche Threads?
Erklär mal... dann kann ich dir nämlich zurückerklären wieso du dafür eigentlich garkeine Threads brauchst
-
ja ich weis.... bin am überlegen wei ich das machen könnte...
wenn ich jetzt bspw. einee anwendung habe, in der 10 Stopuhren auf einem fenster sind. Jede Stopuhr hat einne Start und Stop Button, und eine Zeitanzeige... und alle Stopuhren sind auf einem gemeinsmaen DC eines Fenster dargestellt.
naja und ich dachte mir wenn ich mir das ich für jede stopuhr einen eigen thread mache, welche die "uhrzeit" auf den gemeinsamen DC darstellt.
Wie würdest ihr das gehen.. oder wie würded das ihr lösen ohne WM_TIMER oder so zu verwenden?
-
mach doch 10 child windows, dann hast du 10 DCs...
und das problem mit multithreads in einem DC hat sich erledigt
-
ja aber es sollte alle auf einem DC funktionieren.... es sinst später keine stopuhren... war nur als Beispiel gedacht wieso ich thread verwenden möchte...
-
BorisDieKlinge schrieb:
ja aber es sollte alle auf einem DC funktionieren....
warum? es merkt keiner, dass es child-windows sind.
-
hmm kann man child-windows auf einem fenster so anordnen das keine übergänge zu sehen sind? das der DC später eine maschine abstrakt darstellt...die maschine behinhaltet unterscheidliche unabhänge prozesse (jeweils trhead dacht ich mir) welche in ihrem fortschritt/status auf dem DC dargestelt wernde soll..
-
das geht. man kann child windows ohne rand u.ä. machen. man kann in jedes childwnd separat malen/blitten und du kannst es beliebig im hauptfenster positionieren. vielleicht kennste noch 'custom controls'? die war'n früher mal sehr beliebt in vb und vc++ etc. (weiss ja nicht mehr wie das heute ist).
es gibt übrigens auch open source libraries für sowas (mit allen möglichen grafikobjekten usw.)btw: guck dir mal das an: http://www.blinkenlights.de/download/bm_play.zip
hat ein freund von mir gemacht, die fenster des hauses sind alles child windows)
du musst dir von der seite die animationen runterladen: http://www.blinkenlights.de/movies.en.html
damit du was siehst

-
und wenn ich child windows überschneiden darstelle dürfte auch kein problem sein??
-
BorisDieKlinge schrieb:
ja ich weis.... bin am überlegen wei ich das machen könnte...
wenn ich jetzt bspw. einee anwendung habe, in der 10 Stopuhren auf einem fenster sind. Jede Stopuhr hat einne Start und Stop Button, und eine Zeitanzeige... und alle Stopuhren sind auf einem gemeinsmaen DC eines Fenster dargestellt.
naja und ich dachte mir wenn ich mir das ich für jede stopuhr einen eigen thread mache, welche die "uhrzeit" auf den gemeinsamen DC darstellt.
Wie würdest ihr das gehen.. oder wie würded das ihr lösen ohne WM_TIMER oder so zu verwenden?
Das ist einfach nicht gut. Es berücksichtigt nicht das Windows auf Befehl zeichnen will. Und eine "letzte"-Kopie vorzubereiten für einen solchen Fall ist auch Quark.
10 Stopuhren heißt:
1 Routine die zeichnet und bei Bedarf eben die 10 Stopuhren und Ihre Infos abfragen.
Jede Stopuhr setzt einen Invalidate für den Bereich des Bildschirms ab, der neu gezeichnet werden muss.
Die OnPaint Routine kann ermitteln welches rectangle zu zeichnen ist und welche Objekte betroffen sind. Es muss also nicht alles neu gezeichnet werden.Die wenigesten Entwickler machen sich die Mühe das Rect zu berücksichtigen, das mit OnPaint/BeginPaint geliefert wird, aber es macht das zeichnen erst effektiv.
-
@Martin: kannst du mal ei nbeispiel amchen mit dem invalidate füe einen bestimmten bereich?
Ist es dennoch sinvoll ein trhead pro stopuihr zu machen... das sie unabhänign voneinader die zeit zählen?