Schriftfarbe von Buttons ändern
-
Was spricht gegen den CommandButton?
http://www.rb-softarticle.com/CommandButton.jpg
http://www.rb-softarticle.com/ToolBox.jpg
Beispiel...
http://www.rb-softarticle.com/bntColor.rar
Gruß,
Doug_HH
-
Solkuma schrieb:
void CbutColorDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { // TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard. if(nIDCtl==IDC_BUTTON1) { CDC dc; dc.Attach(lpDrawItemStruct->hDC); RECT rect; rect= lpDrawItemStruct->rcItem; UINT state=lpDrawItemStruct->itemState; if((state & ODS_SELECTED)) { dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT); } else { dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT); } dc.SetTextColor(RGB(255,0,0)); TCHAR buffer[MAX_PATH]; ZeroMemory(buffer,MAX_PATH ); ::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH); dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE); } }
Passe noch IDC_BUTTON1 Deinem Code an und setze Ownerdrawn vom Button auf true.
dann kommt noch der fehler :
error C2509: 'OnDrawItem': Memberfunktion wurde in 'CGUEDlg' nicht deklariert
-
Ist die auch im Headerfile deiner Dialogklasse deklariert?
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
hast du OnDrawItem in deiner Dialogklasse auch richtig überladen, sonnst dürfte die Fehlermeldung nicht kommen
-
ich hab NUR gemacht was da steht also
void CbutColorDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.if(nIDCtl==IDC_BUTTON1)
{
CDC dc;dc.Attach(lpDrawItemStruct->hDC);
RECT rect;
rect= lpDrawItemStruct->rcItem;UINT state=lpDrawItemStruct->itemState;
if((state & ODS_SELECTED))
{
dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT);}
else
{
dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT);
}dc.SetTextColor(RGB(255,0,0));
TCHAR buffer[MAX_PATH];
ZeroMemory(buffer,MAX_PATH );
::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH);
dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}
}Passe noch IDC_BUTTON1 Deinem Code an und setze Ownerdrawn vom Button auf true.
ich weis nicht ob ich die richtig deklariert ist, wie geht denn das? was genau soll ich da deklarieren?
und auch keine ahnung ob sie richtig überladen ist, ich hab wie gesagt nur gemacht was in dem zitierten beitrag steht..
-
na ist es da nicht besser du lernst erst mal die Grundlagen wie überlade ich eine funktion und solche sachen als sinnlos rum zu probieren wie du nen text von einem Button bunt bekommst?
als mal schnell, hoffe ich erkläre das jetzt richtig:
VS2008 rufst du deinen dialog im Resourceneditor auf und lässt dir die eigenschaften anzeigen. Unter eigenschaften hast du oben einen Button (neben dem gelben blitz) der für Nachrichten sind,l da werden dir alle nachrichten angezeigt die dein Dialog empfangen kann, da sucht du OnDrawItem raus und nutzt dann den kleinen pfeil daneben um die funktion einzufügen. noch source reinkompieren unbd anpassen, fertig.
Hoffe du kannst mit der beschreibung was anfangen, aber wenn du wirklich keine ahnung hast was du da machst und nur Sourcen per copy and paste reinhaust dann lass es und fang erstmal mit den grundlagen von c++ an, so wirst du nur scheitern und ständig fragen müssen
-
CTecS schrieb:
na ist es da nicht besser du lernst erst mal die Grundlagen wie überlade ich eine funktion und solche sachen als sinnlos rum zu probieren wie du nen text von einem Button bunt bekommst?
als mal schnell, hoffe ich erkläre das jetzt richtig:
VS2008 rufst du deinen dialog im Resourceneditor auf und lässt dir die eigenschaften anzeigen. Unter eigenschaften hast du oben einen Button (neben dem gelben blitz) der für Nachrichten sind,l da werden dir alle nachrichten angezeigt die dein Dialog empfangen kann, da sucht du OnDrawItem raus und nutzt dann den kleinen pfeil daneben um die funktion einzufügen. noch source reinkompieren unbd anpassen, fertig.
Hoffe du kannst mit der beschreibung was anfangen, aber wenn du wirklich keine ahnung hast was du da machst und nur Sourcen per copy and paste reinhaust dann lass es und fang erstmal mit den grundlagen von c++ an, so wirst du nur scheitern und ständig fragen müssen
ich hab ca 1 jahr mit dev-cpp in der konsole programmiert..
dh die grundlagen behersche ich, das programm ist auch soweit fertig bis auf einige äußerlichkeiten. von mfc, visualc++ und windowsprogrammierung hab ich leider bisher echt wenig ahnung.zum thema, in der liste hab ich schon zuvor gesucht, da steht das nicht drin....
ich weis bisher echt nicht wie ich das dort reinbekomme...
-
void CbutColorDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.if(nIDCtl==IDC_BUTTON1)
{
CDC dc;dc.Attach(lpDrawItemStruct->hDC);
RECT rect;
rect= lpDrawItemStruct->rcItem;UINT state=lpDrawItemStruct->itemState;
if((state & ODS_SELECTED))
{
dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT);}
else
{
dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT);
}dc.SetTextColor(RGB(255,0,0));
TCHAR buffer[MAX_PATH];
ZeroMemory(buffer,MAX_PATH );
::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH);
dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}
}Passe noch IDC_BUTTON1 Deinem Code an und setze Ownerdrawn vom Button auf true.
so, ich habs jetzt, danke.
doch wie bekomme ich den button jetzt wieder in die form wie er beim dialog normalerweise ist?
so ist der jetzt grau und eckig, ich brauch den aber folgendermaßen:
http://www.imagebanana.com/view/feieh6xt/shiz2.JPGalso das mit der farbe klappt schonmal
-
sowas such ich, ich check das bloß nicht was da steht...
also so soll der owner draw button auch aussehen aber ich krieg das nicht so hin..
farbig ist er ja bereits
-
-
na so gar nicht weil du den Button komplett selbst zeichnest.
aber ich hab mal für dich gesucht und eine entsprechende Klasse gefunden die sollte alles das können was du Suchst und noch bissel mehr
den Link von CodeProject hatte ich glaub ich schon mal gepostet, mit dem Hinweis das man dort fast alles findet, aber nur wenn man halt sucht.
-
CTecS schrieb:
na so gar nicht weil du den Button komplett selbst zeichnest.
aber ich hab mal für dich gesucht und eine entsprechende Klasse gefunden die sollte alles das können was du Suchst und noch bissel mehr
den Link von CodeProject hatte ich glaub ich schon mal gepostet, mit dem Hinweis das man dort fast alles findet, aber nur wenn man halt sucht.
Ist doch genau der gleiche Mist...
Hast Du eine Allergie gegen das zuhören?
Meine Fresse noch mal, nur Vollhonks hier...
-
Mond19 schrieb:
Ist doch genau der gleiche Mist...
Hast Du eine Allergie gegen das zuhören?
Meine Fresse noch mal, nur Vollhonks hier...
sag mal spürst du dich noch, ersten macht die Klasse deinen scheiß Themes und den Farbigen Text, wenn du das natürlich nicht hin bekommst die einzubinden ist das dein Prpoblem, warum Antwortet dir überhaupt noch jemand sie doch zu wie du dein zeug auf die reihe bekommst.
Beleidigungen sind an deiner stelle sicher nicht angebracht
-
Mond19 schrieb:
CTecS schrieb:
na so gar nicht weil du den Button komplett selbst zeichnest.
aber ich hab mal für dich gesucht und eine entsprechende Klasse gefunden die sollte alles das können was du Suchst und noch bissel mehr
den Link von CodeProject hatte ich glaub ich schon mal gepostet, mit dem Hinweis das man dort fast alles findet, aber nur wenn man halt sucht.
Ist doch genau der gleiche Mist...
Hast Du eine Allergie gegen das zuhören?
Meine Fresse noch mal, nur Vollhonks hier...
das hab ich nicht geschrieben, war wieder mal irgendein anderer typ...
-
dann registrier dich doch einfach auf der seite und keiner schreibt mehr in deinem namen irgenwelchen mist
-
CTecS schrieb:
na so gar nicht weil du den Button komplett selbst zeichnest.
aber ich hab mal für dich gesucht und eine entsprechende Klasse gefunden die sollte alles das können was du Suchst und noch bissel mehr
den Link von CodeProject hatte ich glaub ich schon mal gepostet, mit dem Hinweis das man dort fast alles findet, aber nur wenn man halt sucht.
also.. ich hab die dateien eingefügt und die angegebene headerdatei includiert..
weiter komme ich jedoch nicht, also alles was ich versuche gibt mal wieder fehlermeldungen aus..
wie sollte das denn in meinem fall aussehen, ich will ja nur das template verwenden? also was muss ich noch eingeben?
danke
-
Erstell eine Membervariable vom Type CButton für deinen Button und ersetze in der Headerdatei deiner Dialogklasse CButton gegen CXButtonXP.
Das ganze kannst du dir in der Testanwenung die dabei ist anschaun. und nicht vergessen die ganzen benötigten Dateien mit in dein Projekt aufzunehmen, die CXButtonXP benötigt.
Wobei ich ebend mitbekommen habe das der Themes bei Farbigen Text auch nicht macht, zumindest sieht das im Demo so aus, was aber noch zu überprüfen ist.
-
also ich hab die membervariable erstellt, dann in abcDlg.cpp dashier
public:
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
CButton m_Button;zu dem hier
public:
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
CXButtonXP m_Button;gemacht. jedoch stürzt das ganze ab, der debugger startet und hat die haltepunkte in irgendwelchen headerdateien des beispiels...
-
na OnDrawItem brauchst du doch gar nicht und CButton m_Button; musst du in der headerdatei deines dialoges definieren.
Schau dir doch mal in dem Beispiel an wo er und vorallem wie er den CXButtonXP erstellt hat.
An sonnsten solltest du alles erstmal wieder rausnehmen, dann fügst du über die resourcenansicht auf deinen Button eine neue Membervariable ein (button ->rechte Maustaste) vom Type CButton, jetzt sollte eine CButton Variable n der Headerdatei deines Dialoges sein, den änderst du in CXButtonXP und vergisst nicht am anfang der headerdatei die klassen von CXButtonXP zu inkludieren. In der resourcenansicht den Button eventuell noch auf Ownerdraw stellen und in der InitDialog die farbe setzen, das sollte es gewesen sein.
-
okay, hab das jetzt alles soweit gemacht, bis auf das einfärben.
kannst du den befehl dazu nochmal posten, der einzige, der bei mir funktionierte, war der, für den ich ondrawitem benötigte...zumindest scheint es soweit zu funktionierten, der button wird per ownerdraw jetzt im xpstyle gezeichnet, allerdings gibts eine fehlermeldung wegen einer der hinzugefügten dateien: "oddbutton.cpp"
wenn ich auf ignore klicke läuft es aber dennoch.
-
mit
CXButtonXP& SetTextColor(COLORREF rgb = XBUTTONXP_NO_COLOR)
in der InitDialog kannst du die Farbe des Textes setzen, aber wie gesagt ob der dann den Themes Style im Hintergrund behällt weis ich auch nicht, das müsstest du ausprobieren.
Wegen dem Fehler, sollteste vielleicht mal die Fehlermeldung Posten, dann kann dir jemand helfen