Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: MFC (Visual C++) ::  SetBkColor Problem bei abgeleiteter CStatic Klasse  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
MFC-Coder
Unregistrierter




Beitrag MFC-Coder Unregistrierter 15:47:49 08.03.2010   Titel:   SetBkColor Problem bei abgeleiteter CStatic Klasse            Zitieren

Hallo,

folgendes (altbekanntes) Problem:
Ich habe eine abgeleitete Klasse CExStatic von CStatic erstellt und möchte standardmäßig schwarzen Text auf weißem Hintergrund.

Ohne neue Klasse bekomme ich das zwar hin, habe aber den Nachteil daß ich in OnCtlColor der Dialogklasse jedes IDC der Statics abfragen müßte und das geht einfach nicht (zuviele davon).

Lediglich in der abgeleiteten Klasse OnCtlColor zu überladen reicht wohl nicht aus.

Hat jemand eine Idee?
CTecS
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.09.2008
Beiträge: 800
Beitrag CTecS Mitglied 16:45:38 08.03.2010   Titel:              Zitieren

Warum benutzt du im Dialog nicht nCtlColor = CTLCOLOR_STATIC von OnCtlColor(), sollten doch dann alle Statics deines Dialoges sich melden

CWnd::OnCtlColor
MFC-Coder
Unregistrierter




Beitrag MFC-Coder Unregistrierter 16:52:41 08.03.2010   Titel:              Zitieren

CTecS schrieb:
Warum benutzt du im Dialog nicht nCtlColor = CTLCOLOR_STATIC von OnCtlColor(), sollten doch dann alle Statics deines Dialoges sich melden

CWnd::OnCtlColor

Hallo,

ja das geht sicher auch aber ich möchte das eben flexibel als eigene Klasse haben, damit es sinnvoll wiederverwendbar ist (das wird eh eintreffen, da ich nicht nur 1 Applikation schreiben werde).
Außerdem kann es sein daß nicht alle Statics die eigene CExStatic sein werden, dann wäre deine Lösung auch nicht astrein. :)
CTecS
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.09.2008
Beiträge: 800
Beitrag CTecS Mitglied 17:31:11 08.03.2010   Titel:              Zitieren

na dann mach dir doch ne SetColor und 2 Members in der Klasse für Vorder- und Hintergrundfarbe. Füll in OnEraseBkgnd() den Hintergrund mit der entsprechenden Farbe und in der OnPaint Zeichneste den Text mit der entsprechenden Farbe und wenn de das noch besonders gut machen willst, machste noch den Font Flexibel.

Fertig! Mehr wüsste ich nicht was man so noch bei Text machen kann, außer du willst noch ein Bild Platzieren, dann kannste das ja auch der Klasse machen lassen
MFC-Coder
Unregistrierter




Beitrag MFC-Coder Unregistrierter 16:57:23 09.03.2010   Titel:              Zitieren

Hmm,

also ich habe mir mal

http://www.codeguru.com/cpp/controls/staticctrl/article.php/c2909

runtergeladen und da funzt es einwandfrei mit SetBkColor in OnCtlColor() der abgeleiteten Klasse.

Ich frage mich echt was da anders ist, das kann nur was "externes" sein...
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13139
Beitrag Martin Richter Moderator 19:23:35 09.03.2010   Titel:              Zitieren

Vermutlich weil dort Message-Refelection verwendet wird.
ON_WM_CTLCOLOR_REFLECT!

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming


Zuletzt bearbeitet von Martin Richter am 19:26:39 09.03.2010, insgesamt 1-mal bearbeitet
MFC-Coder
Unregistrierter




Beitrag MFC-Coder Unregistrierter 08:28:43 10.03.2010   Titel:              Zitieren

Martin Richter schrieb:
Vermutlich weil dort Message-Refelection verwendet wird.
ON_WM_CTLCOLOR_REFLECT!

Ja das hab auch gesehen aber ich kann das REFLECT gar nicht hinzufügen.

Klassenansicht, Klasse markieren, Rechtsklick, Eigenschaften, MeldungsIcon und dann ist da nur WM_CTLCOLOR ohne REFLECT.

Wenn ich das dazuschreibe gibts folgenden Fehler:

error C2039: 'CtlColor': Ist kein Element von 'CExStatic'.

Was tun? (Benutze übrigens MSVS 2008 Standard).
MFC-Coder
Unregistrierter




Beitrag MFC-Coder Unregistrierter 09:13:36 10.03.2010   Titel:              Zitieren

ARGH!

Ganz oben mit nem = zuerst... *Kopf->Tisch*

Note that the equal sign in front of the message name in the list of messages you can handle indicates that the message is reflected. This is described in Defining a Message Handler for a Reflected Message.
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13139
Beitrag Martin Richter Moderator 09:37:46 10.03.2010   Titel:              Zitieren

Und selbst wenn es nicht in der Liste wäre?

Bist Du nicht in der Lage ein paar Zeilen selbst zu schreiben?
Musst Du alles durch Mausschubsen programmieren? :o)

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
MFC-Coder
Unregistrierter




Beitrag MFC-Coder Unregistrierter 10:14:13 10.03.2010   Titel:              Zitieren

Martin Richter schrieb:
Und selbst wenn es nicht in der Liste wäre?

Bist Du nicht in der Lage ein paar Zeilen selbst zu schreiben?
Musst Du alles durch Mausschubsen programmieren? :o)

:rolleyes:

Das Problem ist mittlerweile vom Tisch.

Die Eigenschaft "Einfach" muß auf FALSE gesetzt werden muß, damit nicht nur der Text die neue Hintergrundfarbe annimmt, sondern das gesamte StaticField.
Hab ich nirgends gelesen.
(War man nicht in der Lage das zu erwähnen oder ich nicht in der Lage das aus der tollen Beschreibung zu "Einfach" herauszulesen? Sachen gibts! :) )

Damit genügt SetBkColor in CtlColor und man braucht kein WM_ERASEBKGND oder sonstige Extrasachen implementieren.

Und wer weiß? Vielleicht klappts ja auch mit der normalen WM_CTLCOLOR ohne REFLECT.
Dank an alle die geholfen haben!
C/C++ Forum :: MFC (Visual C++) ::  SetBkColor Problem bei abgeleiteter CStatic Klasse  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.