2016-05-25 5 views
0

Erstes Mal, so verzeihen Sie jede unpassende Etikette, die ich bringen kann.MFC SDI lesen von einem INI und aktualisieren Ansicht Zeichenfolge beim Ändern von Attributen

Mein Titel beschreibt kurz das Problem, das ich habe. Ich habe ein Schulprojekt, wo ich mit einer MFC-Anwendung mit einer einzelnen Dokumentansicht anfange, und ich muss nur einen einfachen Text auf meiner Ansicht anzeigen, aber dieser Text kommt von einer einfachen INI-Datei.

LPCTSTR path = _T("C:\\Users\\Steve\\Documents\\WhereDataIs.ini"); 
TCHAR INIValue[256]; 
GetPrivateProfileString(_T("SETUP"), _T("Introduction"), _T("File Could Not Be Found"), INIValue, 256, path); 

Okay, jetzt meine ini-Datei dies nur enthält ...

Bis zu diesem Punkt, gut geht alles. Der nächste Schritt besteht darin, die 'statische Textbox', die ich im Ressourceneditor erstellt habe, zu nehmen und sie in die Daten von der Ini zu ändern, die nur 'Hier sind Ihre Daten' ist.

SetDlgItemText(StringToChange, INIValue); 

und das funktioniert perfekt. So habe ich es geschafft, das zu ändern, was ich wollte, aber jetzt kommt der schwierige Teil. Ich muss den gesamten String vor der Verwendung fett

SetDlgItemText(StringToChange, INIValue); 

Ich habe so viele Probleme in den letzten 5 Tagen gelaufen. Ich habe alles versucht, was ich bei Google und Stack-Überlauf überfahren habe. Ich habe versucht, ein RTF-Steuerelement zu verwenden? versuchen, es in html zu konvertieren und dann wieder zu kommen? Probleme mit 8bit oder 16bit? Unicode oder etwas in dieser Richtung. Ich habe in Makros wie _T ("irgendeine Zeichenfolge") gelaufen, die anscheinend keine Variable vom Typ String nehmen. Nichts hat für mich funktioniert. Was ich wirklich gebrauchen könnte, ist ein Beispiel, es muss sich überhaupt nicht auf meinen beziehen. Etwas, mit dem ich mit einer Basis arbeiten kann. Und bevor du mich mit einer anderen Website oder einem früheren Post verknüpfst - ich garantiere dir, dass ich es schon angeschaut und es versucht habe. Ich möchte wirklich, dass jemand einen kleinen Teil des Codes veröffentlicht, um mir zu helfen.

Antwort

1

Sie benötigen Schriftart mit kühnem Stil verwenden, um zu erreichen, was Sie brauchen:

m_font.CreateFont(16, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, DEFAULT_CHARSET, 
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 
DEFAULT_PITCH | FF_SWISS, _T("MS Sans Serif")); 
m_YourStaticControl.SetFont(&m_font); 

machen CFont m_font; ein Mitglied Ihrer Klasse (Put es in Header-Datei).

Wenn Sie mehr Flexibilität wünschen, verwenden Sie RichEdit-Steuerelement. Hier ist Helfer-Funktion, die Text mit verschiedenen Stilen anfügt:

void AddToRichText(CRichEditCtrl &rEdit, const CString& sNewText, COLORREF color, BOOL bBold, BOOL bUnderline, BOOL bItalic) 
{ 
    int iTotalTextLength = rEdit.GetWindowTextLength(); 

    rEdit.SetSel(iTotalTextLength, iTotalTextLength); 

    CHARFORMAT cf; 
    cf.cbSize = sizeof(CHARFORMAT); 
    cf.dwMask = CFM_COLOR | CFM_UNDERLINE | CFM_BOLD | CFM_ITALIC; 

    DWORD dwEffects = CFE_AUTOCOLOR; 
    if (!bBold) 
     dwEffects |= CFE_BOLD; 

    if (!bUnderline) 
     dwEffects |= CFE_UNDERLINE; 

    if (!bItalic) 
     dwEffects |= CFE_ITALIC; 

    cf.dwEffects = (unsigned long)~dwEffects; 

    cf.crTextColor = color; 
    rEdit.SetSelectionCharFormat(cf); 

    rEdit.ReplaceSel(sNewText); 
    rEdit.HideSelection(TRUE, FALSE); 
} 
+0

nicht-RichText-: Sie müssen den Code in 'YourDlg :: OnInitDialog()' nach dem Aufruf von ‚CDialog [Ex] :: OnInitDialog hinzufügen () "; Der Aufruf zum Setzen der Schriftart wäre 'StringToChange.SetFont (& m_font);' –

+0

Okay, die erste Option hat Wunder gewirkt! es nahm das Ganze und machte es fett. Gibt es eine Möglichkeit, nur ein Wort statt der ganzen Kontrolle fett zu machen? Wenn man bedenkt, dass wir die WHOLE-Steuerung mit dieser Schriftart einstellen, würde ich nicht denken. Ich untersuche gerade eine RichEdit Control, damit ich mit dem von Ihnen bereitgestellten Code herumspielen kann. –

+0

@StevenV Für die normale Bearbeitungsbox müssten Sie den Besitzer zeichnen lassen. –

Verwandte Themen