2015-09-01 4 views
0

ALL,Какие значения использовать для RIchEdit Ctrl?

От MSDN

typedef struct _charformat2 { 
    UINT  cbSize; 
    DWORD dwMask; 
    DWORD dwEffects; 
    LONG  yHeight; 
    LONG  yOffset; 
    COLORREF crTextColor; 
    BYTE  bCharSet; 
    BYTE  bPitchAndFamily; 
    TCHAR szFaceName[LF_FACESIZE]; 
    WORD  wWeight; 
    SHORT sSpacing; 
    COLORREF crBackColor; 
    LCID  lcid; 
#if (_RICHEDIT_VER >= 0x0500) 
    union { 
    DWORD dwReserved; 
    DWORD dwCookie; 
    }; 
#else 
    DWORD dwReserved; 
#endif 
    SHORT sStyle; 
    WORD  wKerning; 
    BYTE  bUnderlineType; 
    BYTE  bAnimation; 
    BYTE  bRevAuthor; 
#if (_RICHEDIT_VER >= 0x0800) 
    BYTE  bUnderlineColor; 
#endif 
} CHARFORMAT2; 

Подчеркивание цвета объявлен только для контроля версий> = 0x0800. Однако что мне делать для предыдущих версий?

Также похоже, что в Windows 8.1 эта переменная недоступна. Это соответствует MSVC 2010.

Как я могу сделать bUnderlineType отображением подчеркивания «красной волны» и не использовать стандартный черный цвет?

спасибо.

[EDIT] К сожалению, я только недавно нашел противоречие в MSDN ... Хотя this страница говорит она доступна в RichEdit 4.1+, this страница говорит она доступна в RichEdit 3.0+. Теперь я знаю, что никто не заботится о RichEdit 1.0, но многие системы все еще используют XP, то есть 3.0, так как в MS Word есть красноватый оттенок, подчеркивающий там. Проблема: в то время как настройка underlinetype довольно проста, раскраска подчеркивания на 3.0 не является. У кого-нибудь есть идея, что делать? [/ EDIT]

+1

http://stackoverflow.com/questions/1756263/how-to-change-underlining-color-in-a-rich-edit-control-win32-c – edtheprogrammerguy

+0

@edtheprogrammerguy, я попробовал предложение из комментария, т.е. «cf.bUnderlineType = CFU_UNDERLINEWAVE | 0x05;», но это не сработает. У меня нет версии 4, поэтому я спрашиваю, как это сделать в версиях 2 и 3. Любая идея? – Igor

ответ

0

Так как я делаю bUnderlineType отображения «красной волны» подчеркивают, а не использовать стандартный черный цвет?

....

Я не использовать версии 4 поэтому я и спрашиваю, как это сделать в версии 2 и 3.

documentation Из:

CFU_UNDERLINEWAVE

RichEdit 4.1, а затем: текст подчеркивается волнистой линией.

и

#if (_RICHEDIT_VER >= 0x0800) 
    BYTE  bUnderlineColor; 
#endif 

Так функциональные возможности, которые вы ищете, не существует в старых богатых редактирования версий, которые вы ориентируетесь.

+0

С другой страницы MSDN: https://msdn.microsoft.com/en-us/library/windows/desktop/bb787873%28v=vs.85%29.aspx#_win32_Rich_Edit_Version_3.0, эта функциональность существует в версии 3.0. Теперь, когда подчеркивание волны прямолинейно, подчеркивание окраски нигде не объясняется. И недокументированный код, используемый в комментарии, не работает. – Igor