Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kolorowy text w kontorle Edit

Ostatnio zmodyfikowano 2011-04-23 16:55
Autor Wiadomość
yoogi
Temat założony przez niniejszego użytkownika
Kolorowy text w kontorle Edit
» 2011-04-22 23:07:56
Witam, tak jak w temacie.
Wie ktoś jak zrobić kolorowy tekst w kontrole edit ?
P-31686
DejaVu
» 2011-04-22 23:52:34
Wydaje mi się, że raczej nie jest to możliwe. Cały tekst - da się zmienić. Fragment - raczej nie da się.
» Kurs WinAPI, C++ » KontrolkiKolory kontrolek lekcja
P-31688
yoogi
Temat założony przez niniejszego użytkownika
» 2011-04-23 00:05:36
Znalazłem kod na kolorowy tekst ale w Windows Forms a wolał bym WinAPI.
P-31689
yoogi
Temat założony przez niniejszego użytkownika
» 2011-04-23 03:12:55
Znalazłem coś takiego, tylko nie wiem jak to mniej więcej ma być w kodzie.
C/C++
void AddMessage( COLORREF color, const char * name, const char * text )
{
    CHARFORMAT2 cf2;
    cf2.cbSize = sizeof( cf2 );
    cf2.dwEffects = CFE_BOLD;
    cf2.dwMask = CFM_BOLD | CFM_UNDERLINE | CFM_COLOR;
   
    int length = GetWindowTextLength( hEdit2 );
    SendMessage( hEdit2, EM_SETSEL, length, length );
   
    cf2.crTextColor = color;
    SendMessage( hEdit2, EM_SETCHARFORMAT, SCF_SELECTION,( LPARAM ) & cf2 );
    SendMessage( hEdit2, EM_REPLACESEL, FALSE,( LPARAM ) name );
   
   
    cf2.crTextColor = RGB( 0, 0, 0 );
    SendMessage( hEdit2, EM_SETCHARFORMAT, SCF_SELECTION,( LPARAM ) & cf2 );
    SendMessage( hEdit2, EM_REPLACESEL, FALSE,( LPARAM ) text );
   
}
P-31694
malan
» 2011-04-23 10:42:47
void AddMessage( HWND uchwytTwojejKontrolnki, COLORREF color, const char * name, const char * text );
 i jazda ;)
P-31702
yoogi
Temat założony przez niniejszego użytkownika
» 2011-04-23 15:32:44
Znalazłem lepsze rozwiązanie, RichEdit :)
P-31751
malan
» 2011-04-23 16:30:17
Zapodaj może jakiś kodem dla potomnych ;)
P-31761
yoogi
Temat założony przez niniejszego użytkownika
» 2011-04-23 16:55:09
C/C++
void AddText( HWND hwnd, char * szTextIn, COLORREF crNewColor )
{
    char * Text =( char * ) malloc( lstrlen( szTextIn ) + 5 );
    CHARFORMAT cf;
    int iTotalTextLength = GetWindowTextLength( hwnd );
    int iStartPos = iTotalTextLength;
    int iEndPos;
   
    strcpy( Text, szTextIn );
    strcat( Text, "\r\n" );
   
    SendMessage( hwnd, EM_SETSEL,( WPARAM )( int ) iTotalTextLength,( LPARAM )( int ) iTotalTextLength );
    SendMessage( hwnd, EM_REPLACESEL,( WPARAM )( BOOL ) FALSE,( LPARAM )( LPCSTR ) Text );
   
    free( Text );
   
    cf.cbSize = sizeof( CHARFORMAT );
    cf.dwMask = CFM_COLOR | CFM_UNDERLINE | CFM_BOLD;
    cf.dwEffects =( unsigned long ) ~( CFE_AUTOCOLOR | CFE_UNDERLINE | CFE_BOLD );
    cf.crTextColor = crNewColor;
   
    iEndPos = GetWindowTextLength( hwnd );
   
    SendMessage( hwnd, EM_SETSEL,( WPARAM )( int ) iStartPos,( LPARAM )( int ) iEndPos );
    SendMessage( hwnd, EM_SETCHARFORMAT,( WPARAM )( UINT ) SCF_SELECTION,( LPARAM ) & cf );
    SendMessage( hwnd, EM_HIDESELECTION,( WPARAM )( BOOL ) TRUE,( LPARAM )( BOOL ) FALSE );
   
    SendMessage( hwnd, EM_LINESCROLL,( WPARAM )( int ) 0,( LPARAM )( int ) 1 );
    SendMessage( hwnd, EM_SETREADONLY,( WPARAM ) TRUE, 0 );
}
Takim :]
Tworzymy Rich Text i wywołujemy np. funkcję
AddText( hWndEdit, "Hello world", RGB( 0, 0, 255 ) );
P-31767
« 1 »
  Strona 1 z 1