Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
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++) ::  Schriftfarbe von Buttons ändern  
Gehen Sie zu Seite 1, 2, 3, 4, 5  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Mond19
Unregistrierter




Beitrag Mond19 Unregistrierter 12:36:23 28.02.2010   Titel:   Schriftfarbe von Buttons ändern            Zitieren

Hi,
wie kann ich die Schriftfarbe von einzelnen Buttons verändern?
Hab lange gesucht, doch nichts hat funktioniert.
Bitte mit Beschreibbung, wo der Code einzugeben ist.
Danke
CTecS
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.09.2008
Beiträge: 821
Beitrag CTecS Mitglied 15:05:03 28.02.2010   Titel:              Zitieren

Google hätte dir auch Antworten auf deine Frage gegeben. Aber na ja wenn man selber nicht Suchen kann lässt man anderen das machen, bzw die Antwort geben.

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
.h:
CFont m_Font;
//.cpp:
LOGFONT lf;
    ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
   
    CClientDC dc(this);
    strcpy(lf.lfFaceName, "times new roman");
    lf.lfHeight = -MulDiv(13, GetDeviceCaps(dc.m_hDC, LOGPIXELSY), 72);
   
    m_Font.CreateFontIndirect(&lf);
    m_Button.SetFont(&m_Font);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
.h:
CFont m_Font;
//.cpp:
LOGFONT lf;
::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);

CClientDC dc(this);
strcpy(lf.lfFaceName, "times new roman");
lf.lfHeight = -MulDiv(13, GetDeviceCaps(dc.m_hDC, LOGPIXELSY), 72);

m_Font.CreateFontIndirect(&lf);
m_Button.SetFont(&m_Font);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
.h:
CFont m_Font;
//.cpp:
LOGFONT lf;
    ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
   
    CClientDC dc(this);
    strcpy(lf.lfFaceName, "times new roman");
    lf.lfHeight = -MulDiv(13, GetDeviceCaps(dc.m_hDC, LOGPIXELSY), 72);
   
    m_Font.CreateFontIndirect(&lf);
    m_Button.SetFont(&m_Font);


Dabei muß m_Font ein Member deiner Windowklasse sein, also kannst du nicht lokal in der Funktion erstellen, weil die sonnst wieder weg ist wenn die Funktion beendet ist. Ales klar?
Mond19
Unregistrierter




Beitrag Mond19 Unregistrierter 21:33:57 28.02.2010   Titel:              Zitieren

Nee nix klar....

Wo soll ich das jetzt einfügen?

In der WinMain?
Oder WinForms?
CTecS
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.09.2008
Beiträge: 821
Beitrag CTecS Mitglied 23:13:54 28.02.2010   Titel:              Zitieren

WinForms bist du dir sicher dasd du MFC benutzt oder doch nicht .net? wenn du .net benutzt is das mal so das falsche Forum dann solltest du dich mal nach cli/.net verschieben lassen. an sonnsten gehört das natürlich in die mainframe-klasse also da wo du dein Button generierst.
Mond19
Unregistrierter




Beitrag Mond19 Unregistrierter 16:00:33 04.03.2010   Titel:              Zitieren

Der mit dem WinForms war ein anderer Typ, der sich so genannt hat wie ich....
CTecS schrieb:
Google hätte dir auch Antworten auf deine Frage gegeben. Aber na ja wenn man selber nicht Suchen kann lässt man anderen das machen, bzw die Antwort geben.

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
.h:
CFont m_Font;
//.cpp:
LOGFONT lf;
    ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
   
    CClientDC dc(this);
    strcpy(lf.lfFaceName, "times new roman");
    lf.lfHeight = -MulDiv(13, GetDeviceCaps(dc.m_hDC, LOGPIXELSY), 72);
   
    m_Font.CreateFontIndirect(&lf);
    m_Button.SetFont(&m_Font);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
.h:
CFont m_Font;
//.cpp:
LOGFONT lf;
::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);

CClientDC dc(this);
strcpy(lf.lfFaceName, "times new roman");
lf.lfHeight = -MulDiv(13, GetDeviceCaps(dc.m_hDC, LOGPIXELSY), 72);

m_Font.CreateFontIndirect(&lf);
m_Button.SetFont(&m_Font);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
.h:
CFont m_Font;
//.cpp:
LOGFONT lf;
    ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
   
    CClientDC dc(this);
    strcpy(lf.lfFaceName, "times new roman");
    lf.lfHeight = -MulDiv(13, GetDeviceCaps(dc.m_hDC, LOGPIXELSY), 72);
   
    m_Font.CreateFontIndirect(&lf);
    m_Button.SetFont(&m_Font);


Dabei muß m_Font ein Member deiner Windowklasse sein, also kannst du nicht lokal in der Funktion erstellen, weil die sonnst wieder weg ist wenn die Funktion beendet ist. Ales klar?

Also ich hab sowas schon gefunden, allerdings nutze ich einerseits Dialog, da gibts ja kein Mainframe und wenn ichs unter CXXXDLG packen will, klappts allerdins auch nicht...
Ich bin total neu in Visual studio und kapier einfach nie, wo ich was eingeben muss, hab vorher einfach mit dev-cpp gearbeitet, da gabs sowas mit ressourcen garnicht....
CTecS
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.09.2008
Beiträge: 821
Beitrag CTecS Mitglied 18:00:26 04.03.2010   Titel:              Zitieren

den teil von .cpp packst du einfach in die Oninit() deines Dialoges, und m_Button ist eine Membervariable vom Typ CButton auf den Button der den Font bekommen soll
Mond19
Unregistrierter




Beitrag Mond19 Unregistrierter 23:45:22 09.03.2010   Titel:              Zitieren

dann kommt noch folgender fehler:
Zitat:
error C2664: 'strcpy': Konvertierung des Parameters 1 von 'WCHAR [32]' in 'char *' nicht möglich

habs leider nicht hinbekommen, das richtigzu machen.
kann mir bitte noch einmal geholfen werden ? o:)
Danke
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13513
Beitrag Martin Richter Moderator 09:18:33 10.03.2010   Titel:              Zitieren

Du hast ein Unicode/MBS Problem.
Deine Windows API Lib wil alles in Unicode (wchar_t) aber Du lieferst MBCS (char)!
Benutze TCHAR, das geht immer.

C/C++ Code:
_tcscpy(lf.lfFaceName, _T("times new roman"));
C/C++ Code:
_tcscpy(lf.lfFaceName, _T("times new roman"));
C/C++ Code:
_tcscpy(lf.lfFaceName, _T("times new roman"));


PS: Diese Frage beantworten wir hier in jeder dritten Positing.

_________________
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
Mond19
Unregistrierter




Beitrag Mond19 Unregistrierter 16:28:03 10.03.2010   Titel:              Zitieren

danke,
nun ändert sich zwar der font, aber die farbe nun doch nicht.
ich dachte ich könnte nun einfach ne zeile hinzufügen die das tut, ist aber nicht so
wie änder ich denn nun die farbe?
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13513
Beitrag Martin Richter Moderator 16:46:20 10.03.2010   Titel:              Zitieren

Dir Farbe ändert man nicht mit dem Font, sondern durch Behandlung von WM_CTLCOLORBTN (aber Achtung, es geht nicht alles).
http://msdn.microsoft.com/en-us/library/bb761849(VS.85).aspx

_________________
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
C/C++ Forum :: MFC (Visual C++) ::  Schriftfarbe von Buttons ändern  
Gehen Sie zu Seite 1, 2, 3, 4, 5  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.