Laufband in einem "static control"
-
Hmm deine Frage kann ich dir leider nicht ganz beantworten aber wie wäre es wenn du ein back color angibst dann wird doch alles übermalt.
MfG schirrmie
-
Das ist Qurak. Du musst ein eigenes CStatic Control ableiten dort OnPaint überschreiben. Dann bekommst Du in diesem OnPaint auch den DC des Static Controls. Mit einem DC des Dialoges kann man nicht in den Bereich des CStatic schreiben.
Und den Weg in CTLCOLOR handler zu Zeichnen kan ich nur ablehnen.
-
Das hört sich für mich sehr nach MFC an!? Damit kenne ich mich leider nicht aus, ich wollte eigentlich reine WinAPI verwenden

ph4nt0m
-
Subclassing ist das Stichwort...
-
OK,
ich habe jetzt eine eigene Fensterprozedur für mein static-control erstellt, wie es hier beschrieben ist: http://www.winapi.net/index.php?inhalt=s27Allerdings passiert nichts, wenn ich als Reaktion auf WM_PAINT in dieser neuen Prozedur etwas in das Steuerelement zeichnen möchte. Bei z.B. WM_LBUTTONDOWN funktioniert es hingegen wie geschwünscht. Auch ein Aufruf von InvalidateRect bei WM_LBUTTONDOWN scheint nicht dafür zu sorgen, dass WM_PAINT gesendet wird. Woran kann das nun wieder liegen?

ph4nt0m
-
Hmm wenn du eh WinAPI nutzt, registrierst du dir einfach eine eigene Fensterklasse die du dann als WM_CHILD erstellst und in deren WindowProc reagierst du dann auf WM_PAINT ...
-
Naja, eigentlich wollte ich das vermeiden, weshalb ich auch meinen Dialog und die ganzen Steuerelemente in einem Ressourcenskript untergebracht habe, anstatt sie alle "manuell" zu erstellen. Ich werds aber wohl mal so probieren. Vielen Dank erstmal

ph4nt0m
-
Na und? Dann plazierst Du ein User Defined Control in Deinem Dialog in den Ressourcen. Dann brauchst Du nicht mal Subclassing. Du musst nur die Klasse vorher registriert haben.
-
Tut mir leid, falls es nervt. Ich hab zwar ein benutzerdefiniertest Steuerelement erstellt, aber was genau meinst du mit
Du musst nur die Klasse vorher registriert haben.

-
RegisterClass/RegisterClassEx!
Ich empfehle Dir ein Windows-Tutorial zu lesen!
Den Namen gibst Du dann in Deinem Dialog-Template an.