wo stehen die Funktionsdefinitionen(Anfänger)
-
das versuche ich gerade nachzubauen, und da steht:
*mhh..ahja...Nun habe ich unter den Funktionsdef. der Klasse*
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
eingetragen.
unter messagemap
ON_WM_CTLCOLOR()
*eingetragen.
Uns siehe da es tuts
Toll...und Danke*
kann mir mal jemand sagen wo man afx_msg HBRUSH OnCtlColor... eintragen muss???danke
-
noch mal was dazu...
ich habe in Startfenster.cpp folgendes eingefügtHBRUSH CStartfenster::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); pDC->SetTextColor(RGB(255,255,255)); pDC->SetBkColor(RGB(255,0,0)); return hbr; }
unter MessageMap in Startfenster.cpp:
ON_WM_CTLCOLOR()
und in den Header von Startfenster:
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
allerdings weiss ich nicht so genau, wohin der muss, ich habe es jetzt erstmal unter
protected: //Generierte Nachrichtenzuordnungsfunktionen //{AFX_MSG(CSTARTFENSTER) afx_msg HBRUSH OnCtlColor(CDC* pDC,CWnd, UINT nCtlColor); //{AFX_MSG DECLARE_MESSAGE_MAP() };
und dabei kommt folgender fehler:
Starfenster.cpp: Überladene Member Funktion ´struct HBRUSH__(class CDC,class CWnd*, unsigned int) nicht in CStartfenster gefunden
Siehe Deklaration von ´CStartfenster´
-
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
Das gehört in deine Klassendefinition, also etwa so:
class CStartfenster { ... afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); };
-
meinst du also in der header:
class CStartfenster : public CDialog { public: CStartfenster(CWnd* pParent = NULL); //Dialogfelddaten .. .. .. .. //Überschreibungen .. .. .. .. //Implementierungen protected: //Generierte Nachrichtenzuordningsfunktionen .. .. .. DECLARE_MESSAGE_MAP() };
und wo da? bekomme laufend den gleichen Fehler
-
kann mir nicht mal einer helfen, wo
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
hinein muss, verzweilfele noch
-
Nach deinem //Generierte Nachrichtenzuordningsfunktionen müsste eigentlich noch sowas wie //{{AFX_MSG... kommen. Da drunter und vor //}}AFX_MSG sollte es richtig sein.
-
danke, da hatte ich es ja drinne, aber dann kommt folgende Fehlermeldung:
*
Starfenster.cpp: Überladene Member Funktion ´struct HBRUSH__(class CDC,class CWnd*, unsigned int) nicht in CStartfenster gefunden
Siehe Deklaration von ´CStartfenster´*was bedeutet denn das?
-
Wenn du das im Header drin hast, brauchst du auch eine entsprechende Funktion in der dazugehörigen *.cpp
Wenn deine Anwendung CStartfenster heisst, sollte das in CStartfenster.cpp etwa so aussehen:HBRUSH CStartfenster::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Attribute des Gerätekontexts hier ändern switch(nCtlColor) { case CTLCOLOR_STATIC: // für statische Textfelder pDC->SetTextColor(RGB(255,0, 255)); pDC->SetBkColor(RGB(0, 125, 0)); case CTLCOLOR_DLG: // für Dialog return (HBRUSH) m_brush; case CTLCOLOR_BTN: // funktioniert NICHT ! (sollte eigentlich Buttons färben...) return (HBRUSH) m_brush; default: return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); } // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll return hbr; }
-
Öhm,... und damit es noch vollständiger wird
such mal in der cpp nach
BEGIN_MESSAGE_MAP(CStartfenster, CDialog) //{{AFX_MSG_MAP(CStartfenster) //}}AFX_MSG_MAP END_MESSAGE_MAP()
Zwischen den Kommentaren muss noch
ON_WM_CTLCOLOR()
ergänzt werden.
-
wenn ich meines
HBRUSH CStartfenster::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); pDC->SetTextColor(RGB(255,255,255)); pDC->SetBkColor(RGB(255,0,0)); return hbr; }
in Deinen Code umändere, kommt immer noch die Fehlermeldung:
Starfenster.cpp: Überladene Member Funktion ´struct HBRUSH__(class CDC*,class CWnd*, unsigned int) nicht in CStartfenster gefunden
Siehe Deklaration von ´CStartfenster´
*das ON_WM_CTLCOLOR() ist auch drinne
-
Die Hintergrundfarben habe ich ja schon geändert, das ging im OnInitDialog. Und das klappte ja auch
Aber das jetzt, will einfach nicht
-
Mmmmhhhh,... blöd...
Letzte Idee meinerseits:
probier mal im Menü
Erstellen -> Bereinigen
und dann
Erstellen -> Alles neu erstellen
-
keine Änderung, das hatte ich auch schon paarmal gemacht
-
Mist, das Leben ist hart. Also überleg dir lieber genau, ob du später nicht einen vernünftigen Beruf erlernen willst.
-
habe es jetzt in einem anderen Dialog probiert...
und was ist da passiert
CParameter.cpp: Überladene Member Funktion ´struct HBRUSH__(class CDC,class CWnd*, unsigned int) nicht in CParameter gefunden
Siehe Deklaration von ´CParameter´
*wieso will das nicht, bitte hilfe, sonst verzweifel ich noch
-
Beruf ist das nicht, nur Hobby, aber ich glaube so langsam gehe ich wieder zurück zur Sandburg
-
Allerallerletzte Möglichkeit:
hast du aus Versehen mehrere ähnliche Klassen und bist zufällig in der falschen ?
Bei deiner Fehlermeldung fehlt z.B. das t in Startfenster:
Starfenster.cpp: Überladene...
(der eben genannte Punkt fällt nach deinen letzten Postings wohl aus...)
Weiter oben hattest du mal eine Deklaration gepostet, wo * pWnd nach CWnd gefehlt hat:
afx_msg HBRUSH OnCtlColor(CDC* pDC,CWnd, UINT nCtlColor);
Soetwas könnte es natürlich auch sein -> Schreibfehler[edit]
Überladene Member Funktion ...
deutet oft darauf hin, das die Parameter in *.h und *.cpp nicht genau überein stimmen.
[/edit]
-
danke isabeau,
war wahrscheinlich schon müdehatte wirklich rechtschreibfehler drinne...
Aber meine Button Farbe ändert sich nicht. Static und Edit und Textfarbe und Dialog alles ok, aber Buttons no way