Schriftfarbe mit einen Farbendialog im CRichEditView ändern ...?
-
Hallo,
Wie kann ich eine Schriftfarbe mit einen Farbendialog im CRichEditView ändern ?
Der Quellcode für den Farbendialog ist der unten, aber wie kann ich nun von einem "markierten Text" die Schriftfarbe ändern ?CColorDialog* colorDlg = new CColorDialog(); if (colorDlg->DoModal() == IDOK) { } delete colorDlg;Er soll aber nur markierten Text ändern !!
Danke
:: NoName ::
-
Hallo,
da gibt es doch die Member-Funktion SetCharFormat, du mußt nur die CHARFORMAT-Struktur richtig füllen (crTextColor-Komponente, und richtiges dwMask-Flag setzen)
MfG
-
Ich weis...du meinst bedtimmt das hier :
CHARFORMAT cf; cf.crTextColor = RGB(0,0,255); cf.cbSize = sizeof( CHARFORMAT ); cf.dwMask = CFM_COLOR | CFM_BOLD; cf.dwEffects = CFE_BOLD; GetRichEditCtrl().SetSelectionCharFormat(cf);Aber mit diesen code kann man nur eine Schriftfarbe festelegen, ...Ich möchte ja das man sie aus diesen Farbendialog bestimmen soll !!!
-
Ach das ist dein Problem...aber das ist eigentlich kein Problem, denn nach dem IDOK festgestellt wurde, kannst du doch mit GetColor den im Dialog gewählten Farbwert abholen:
if (colorDlg->DoModal() == IDOK) { COLORREF crColor = colorDlg->GetColor(); // und jetzt crColor in CHARFORMAT für cf.crTextColor verwenden }MfG
-
Meinst du etwa so ...? :
CColorDialog* colorDlg = new CColorDialog(); if (colorDlg->DoModal() == IDOK) { COLORREF crColor = colorDlg->GetColor(); // und jetzt crColor in CHARFORMAT für cf.crTextColor verwenden CHARFORMAT cf; cf.crTextColor = colorDlg->GetColor(); GetRichEditCtrl().SetSelectionCharFormat(cf); }???
Ich verstehe das nicht so ganz...Aber es entstehen dann 3 Fehler ...
C:\Programme\Microsoft Visual Studio\MyProjects\testttt\testtttView.cpp(125) : error C2065: 'colorDlg' : undeclared identifier C:\Programme\Microsoft Visual Studio\MyProjects\testttt\testtttView.cpp(125) : error C2227: left of '->DoModal' must point to class/struct/union C:\Programme\Microsoft Visual Studio\MyProjects\testttt\testtttView.cpp(128) : error C2227: left of '->GetColor' must point to class/struct/unionVielen Dank
:: NoName ::
-
wenn diese Zeile:
CColorDialog* colorDlg = new CColorDialog();nicht im selben Gültigkeitsbereich liegt wie die if-Abfrage, dann kann es natürlich nicht gehen, da hilft auch ein new nichts. Du solltest den Color-Dialog wohl besser sowieso auf dem Stack erstellen:
CColorDialog colorDlg; if (colorDlg.DoModal() == IDOK) { COLORREF crColor = colorDlg.GetColor(); // und jetzt crColor in CHARFORMAT für cf.crTextColor verwenden CHARFORMAT& cf = GetCharFormatSelection(); cf.crTextColor = crColor; cf.dwEffects &= ~CFE_AUTOCOLOR; cf.dwMask = CFM_COLOR; SetCharFormat(cf); }MfG
-
Danke, hab verstanden !!! Danke