Über Childs malen
-
Hallo,
Bin mal wieder am verzweifelnDerzeit "male" ich in der WM_PAINT vom Parent ein wenig herum.
Das funktioniert auch gut.
Mein Problem ist nur, daß ich gerne auch ÜBER meine Childs
malen würde (und nicht, daß alles darunter veschwindet)Hab schon in der MSDN nachgesehen. Aber ich finde keine Message,
die nach Fertigstellen der WM_PAINT aufgerufen wird...Gibt es vielleicht doch so etwas?
(Oder nen anderen Trick)Hoffentlich
DANKE!
-
Was soll der Sinn davon sein? Entweder du malst dann auch direkt auf das Child, oder du lässt es ganz weg
-
Ich zeichne "Vergrößerungskästchen" um ein Child.
(Also diese typischen 8 Rechtecke um ein Child zu vergrößern)Da aber ein Child direkt neben einem anderen
Child liegt, wird ein Rechteck (was auf dem Parent gemalt wurde)
verdeckt.Ich stells mir kompliziert vor, immer nachzuschauen,
in welches Child ich malen soll...Oder ist das gar net so schwer?
Gruss
-
Das Control subclassen und WM_PAINT einfangen. Jetzt rufst Du zuerst die originale WndProc auf, damit sich das Control zeichnen kann. Danach kannst Du selber loslegen.
In Verbindung mit Common Controls geht das auch eleganter. Diese verwenden NM_CUSTOMDRAW. Eine genaue Beschreibung findest Du unter Customizing a Control's Appearance Using Custom Draw.
-
Geil, das hab ich auch grad neulich gemacht. Soll bei mir ein Dialogeditor werden. Ich hab mir dazu nicht das DC des Client-Bereiches des Fensters geholt, sondern das Window-DC (GetWindowDC()). Dann kannst du auch über die Childs drüber malen. Die Kästchen sind bei mir aber kleine Fensterchen. Erst wenn man auf das Child klickt (oder auf eines der Kästchen), wird ein Rahmen um das Child gemalt, den man dann verschieben (oder auch ziehen) kann. Ich habe damit die Performance von der IDE des C++Builders nachgeahmt. Sieht gut aus.
Was für ein Projekt hast du da?P.S.: Vorsicht ist bei ComboBoxes geboten. Da musst du das Edit-Control mit subclassen.
-
Danke für die Antworten!
@WebFritzi:
Dann haben wir ähnliche Projekte
Ich ahme nur nicht BCB++ nach, sondern VB (habe mir schon einen Translator von VB nach
C++ geschrieben) und nun soll noch ein Editor herHatte auch erst mit kleinen Fensterchen gearbeitet. Fand es dann aber doch einfacher
einfach Kästchen zu malen... Naja, mal schauen, vielleicht kehre ich doch zu den
Fensterchen zurück
-
Ich kann dir nur so viel sagen, dass in der C++Builder - IDE Fensterchen für die Kästchen verwendet werden. Dann kann man doch auch viel besser ein Mouse-Input abfangen. Ist doch viel besser als immer PtInRect() abzufragen
.
BTW: Was ist ein Translator???
-
Translator = VisualBasic-Code Übersetzung nach C++ -Code.
(Ist einfach meine Bezeichnung dafür)Also sprich ich habe mir C++ Funktionen geschrieben, die die von mir
benutzen VB-Funktionen ersetzen. Und dann ein "Übersetzungsprogramm",
was meine VB-Programme übersetzt nach C++.
Um dem ganzen einen Sinn zu geben, bin ich jetzt dabei einen GUI-Editor
zu schreiben.Also am Ende des Projektes (sollte es mal so weit kommen) habe ich
meine VB-Progs in C++.
-
Aber wozu der GUI-Editor? In VB-Programmen gibt es doch auch Dialoge, oder? Man müsste sich also nur die Dialoge aus den EXEn holen (z.B. mit ResourceHacker). Oder sind die Forms mit CreateWindow() gemacht?
-
Also, wenn mich nicht alles täuscht, benutzt VB keine Dialoge.
(Ich ja auch nicht)Also zumindest mit dem ResHacker von:
[url]
http://www.users.on.net/johnson/resourcehacker/
[/url]kann ich keine finden...
Ich kenn mich jetzt auch mit Dialogen net so aus. Hat man da
überhaupt "Layout"-Möglichkeiten für die Fenster?
(Rahmen, Titelleiste...usw.)Kann man mit Dialogen Toolbox-Fenster erstellen?
(Wie mit CreateWindowEx)
-
rappi schrieb:
1. Hat man da überhaupt "Layout"-Möglichkeiten für die Fenster?
(Rahmen, Titelleiste...usw.)2. Kann man mit Dialogen Toolbox-Fenster erstellen? (Wie mit CreateWindowEx)
ZU 1.: Ja, über den Style.
ZU 2.: Hab ich noch nie gemacht, aber ich würd mal sagen: ja (über den ExStyle)