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()


Anmelden zum Antworten