[WINAPI] Czcionka w RichEdit

0

Witam.

Mój problem polega na tym, że nie potrafię zmienić koloru (czy też pogrubić itd.) osobnych wyrazów w konktrolce RichEdit. Tak by kontrolka wyświetliła np. taki tekst:

Pogrubiony, czerwony tekst.

Próbowałem użyć SendMessage z WM_SETFONT, ale to mi formatowało całą kontrolkę.

Szukałem w googlach i na forum, i znalazłem, by użyć SynEdit, lecz informacji na temat tego nie udało mi się znaleźć...

A więc pytanie brzmi: W jaki sposób zmienić kolor osobnych wyrazów?

Z góry dzięki za odpowiedź!

0

Zmieniany tekst musisz zaznaczyć (EM_SETSEL)

0

Jeżeli dobrze rozumiem, to po użyciu EM_SETSEL, trzeba użyć EM_GETSEL? Jeśli tak, co tu zrobiłem źle (po uruchomieniu programu czcionka sie nie zmienia)?

HWND hText2;
//Tu zostalo wpisanych kilka linii wyswietlajacych tekst w RichEdit
LRESULT lResult, lResult1; 
HFONT hFont;
lResult = SendMessage(hText2, EM_SETSEL, 0, 0);
lResult1 = SendMessage(hText2, EM_GETSEL, 0, 0);
hFont = CreateFont(52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Courier New");
SendMessage((HWND)lResult1, WM_SETFONT, (WPARAM)hFont, 1);
0

Nie, nie nie. Zaznacz tekst który chcesz zmienić komunikatem EM_SETSEL, wParam i lParam to granice zaznaczenia, a ty podałeś 0, 0 czyli nie zaznaczyłeś nic.
Jak już tekst jest zaznaczony, to zmieniasz jego atrybuty do woli.

0

Jeśli chodzi o te zera, to miałem 2 i 10 ale przez przypadek musiałem zmienić na 0, 0 ;-)
Udało mi się (w celu próby) zamienić zaznaczony tekst innym. :-) Jednak nadal nie potrafię dodać do tego:

Font = CreateFont(52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Courier New");
SendMessage((HWND)lResult, WM_SETFONT, (WPARAM)hFont, 1);
0

Zamiast WM_SETFONT użyj EM_SETCHARFORMAT

0

Mi się zdaje, że to może być niewłaściwa konwersja z LRESULT na HWND... Bo gdy w miejsce na uchwyt umieszcze uchwyt richedit, a na komunikat - EM_SETSEL, to mi znów zamienia cały tekst.
Gdy zmienię komunikat na EM_SETCHARFORMAT, to program się wiesza.
A gdy wstawie w miejsce uchwytu zmienną typu LRESULT przekonwertowaną na typ HWND to się nic nie dzieje...

[edit] pokręciłem pojęcia. Flagi poprawiłem na komunikaty.

0

Ok. Uporałem się z problemem tak jak radziłeś... Dzięki za poświęcenie mi czasu :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1