Hi, every one:
I have a problem with the underline style of richedit.let me descrip it in detail:
1,I input "abc" in richedit.
2,Then, i set only "c" with underline style."ab" remains the old style.
3,I select "abc" and set the bold or italic style to all of them.
4,"abc" has the style of bold or italic, and all the three characters have the underline style.This is confusing.The reasonable result is only the "c" has the underline style.

the code snippet i use is:
//set underline style
INT nStart, nEnd;
SendMessage( EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd, NULL );

CHARFORMAT2W cf;
ZeroMemory( &cf, sizeof( cf ) );
cf.cbSize = sizeof( cf );
SendMessage( EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf, NULL );

cf.dwMask |= CFM_UNDERLINE;
cf.dwEffects |= CFE_UNDERLINE;
SendMessage( EM_SETSEL, nStart, nEnd, NULL );
SendMessage( EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf, NULL );

//set bold style
INT nStart, nEnd;
SendMessage( EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd, NULL );

CHARFORMAT2W cf;
ZeroMemory( &cf, sizeof( cf ) );
cf.cbSize = sizeof( cf );
SendMessage( EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf, NULL );

cf.dwMask |= CFM_BOLD;
cf.dwEffects |= CFE_BOLD;
SendMessage( EM_SETSEL, nStart, nEnd, NULL );
SendMessage( EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf, NULL );


Is there any bug in my code?please help me.