SetFont() auf CEdit, erzeugt in control auf Dialogfeld
-
ich erzeuge ein steuerelement auf meinem dialogfeld.
in diesem steuerelement möchte ich einfach nur ein button haben. das button wird auch erzeugt un angezeigt. ich kann aber nicht die schrift anpassen.
egal wie ich es versuche es bleibt immer eine dike standart-schrift.
kann mir da jemand helfen ?
-
vielleicht machst du einen programmierfehler
-
also meinst du es müsste theoretisch so funktionieren und es liegt an mir ??
ich denke ehr das ich da etwas nicht bedacht habe.
ich habe keine ahnung !?!?
-
Wenn du den Code hier nicht zeigst, wirst du wohl alleine suchen müssen...
-
CFont fFont; CreateFont(&fFont, FW_NORMAL); iItemTmp->bButton = new CButton(); iItemTmp->bButton->Create(cText, WS_CHILD | WS_VISIBLE | WS_TABSTOP, CRect(0, 0, 0, 0), this, 5000); iItemTmp->bButton->SetFont(&fFont);
das this, ist die klasse meines übergeordneten controls, also es sieht so aus:
CHauptdialog -> CInfoStatic (die klasse) -> CButton
CreateFont:
void CInfoStatic::CreateFont(CFont *fFont, int iWeight) { fFont->CreateFont(12, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation iWeight, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily "MS Shell Dlg"); // lpszFacename }
die schrift bleibt standart
PS: vermute immernoch das der code nichts bringt
-
wird der CFont Destruktor vielleicht aufgerufen?
-
warum sollte er ?
habe aber auch einen beweis das die methode CreateFont() funktioniert:
ich verwende die funktion auch zum malen auf meinen DC. da gehts
-
Also die Variable fFont ist ne Membervariable?
-
nein, erkläre den ganzen vorgang mal:
die klasse CInfoStatic ist con CStatic abgeleitet.
in diese klasse füge ich texte, eingabezeilen und buttons ein. wenn die OnPaint funktion aufgerufen wird werden texte gemalt, buttons und eingabefelder an die richtigen positionen bewegt. das ganze sieht dann so aus wie bei visual studio oder word, die untere leiste in der z.b. informationen über aktuelle zeile o.ä. stehen.
ich will jetzt eine eingabezeile einfügen und rufe die funktion AddEditCtrl() auf. darin wird wie unten gezeigt die eingabezeile erzeugt und in ein CObArray 'getan'.
-
in OnPaint tut man keine Fenster verschieben. Das macht man in OnSize
-
das ist das gleiche als ob ich einen kasten der so aussieht wie ein editfeld male an eine bestimme position.
wenn der ding in der größe und position geändert wird, wird das eingabefeld auch mitbewegt
-
es geht mit GetParent()->GetFont()