RichEdit ohne MFC



  • Hallo,

    kann mir jemand ein paar gute Tutorials oder Code Beispiele geben, wie ich
    in eine RichEditBox

    1. Text einfärben kann (z.b. erstes Wort pro Zeile rot)
    2. Wie ich ein Icon aus einer Ressource Datei in der RichEditBox anzeigen kann
    (z.B. bei Chat anwendungen die Smilies in dem ChatFenster)

    Ich wäre euch sehr dankbahr, wenn ihr mir helfen könntet,
    da ich schon ca 1 Woche nach solchen einträgen suche !

    Leider hab ich das jeweils nur für MFC gefunden aber da ich ohne
    arbeite kann ich damit nichts anfangen...

    Ich erstelle meine RichEditBox folgender massen:

    RichEditLib = LoadLibrary("riched32.dll"); 
    
    if( RichEditLib == NULL ) 
    { 
        MessageBox(NULL,"Fehler beim laden von: riched32.dll!","Error",MB_ICONEXCLAMATION); 
        PostQuitMessage(0); 
    } 
    
    Edit_ChatText = CreateWindowEx(WS_EX_CLIENTEDGE,RICHEDIT_CLASS,"", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL, 0, 0, 645, 529, hWnd, (HMENU)Edit_ChatTextID, hInst, NULL); 
    SendMessage(Edit_ChatText, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0);
    


  • Schau dich mal hier um...



  • Hi !

    Das ist schon gut !

    Nur leider kann ich damit nicht wirklich sehr viel anfangen, weil ich
    nicht alles dort genau verstehe...

    Kanst du mir evtl nen kleines Beispiel machen ?

    Wäre supper !

    Danke!



  • Ich hab noch nie was damit gemacht - da müssen andere her oder du suchst nach Tutorials 🙂



  • // Text an die Editbox anhängen:
    		CHARFORMAT CharFormat;
    		CharFormat.cbSize = sizeof (CHARFORMAT);
    		SendMessage (edbx, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&CharFormat);
    
    		CharFormat.dwMask      = CFM_COLOR | CFM_SIZE | CFM_FACE; // | CFM_BOLD;
    		CharFormat.crTextColor = RGB (bColRed, bColGreen, bColBlue);
    		CharFormat.dwEffects   = CFE_BOLD;
    		CharFormat.yHeight	   = CharFormatOld.yHeight;
    		//lstrcpy (CharFormat.szFaceName, TEXT ("Lucida Console"));
    		lstrcpy (CharFormat.szFaceName, TEXT ("Arial"));
    
    		SendMessage (edbx, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&CharFormat);
    		SendMessage (edbx, EM_SETSEL, (WPARAM)-1, (LPARAM)0); 
    
    		// an das Ende springen
    		SendMessage (edbx, EM_SETSEL, (WPARAM)-2, (LPARAM)-2); 
    		// Text anhängen
    		SendMessage (edbx, EM_REPLACESEL, (WPARAM)0 , (int)"Dein Text");
    		int iLength = GetWindowTextLength (edbx);
    		SendMessage (edbx, EM_SETSEL, (WPARAM)iLength, (LPARAM)-1); 
    
    		SendMessage (edbx, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&CharFormat);
    		SendMessage (edbx, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
    

    Nicht gerade optimal, aber es geht 🙄

    Blackbird



  • Das klappt wunderbahr ! Danke sehr !

    Jetz muss ich nur noch rausfinden, wie ich pro Satz nur z.B. die ersten 5 Zeichen einfärbe 🙂

    Danke sehr !



  • Ganz einfach:
    Zuerst die 5 Zeichen als erste Zeichenkette senden, dann den Rest des Satzes als 2. Zeichenkette senden. Jedesmal mit einer anderen Farbe.

    Schreib' doch den Code-Schnipsel in eine eigene Funktion, der Du nur den String und die Farbe übergibst.

    Blackbird


Anmelden zum Antworten