2016-06-08 4 views
1

Идея здесь довольно проста, я подумал, но я не могу понять это. По сути, у меня есть однопользовательское приложение MFC с одним богатым редактором редактирования 2.0 и некоторым текстом в нем. Позвольте просто сказать, что этот контроль говорит: «Пожалуйста, нажмите здесь, чтобы ускорить движение вперед».MFC Rich control control 2.0 Цвет текста

CHARFORMAT cf = { sizeof(cf) }; 
cf.dwEffects = CFM_BOLD; 
cf.dwMask = CFM_BOLD; 
m_pMessageTextBox.SetSel(13, 17); 
m_pMessageTextBox.SetSelectionCharFormat(cf); 

Теперь этот фрагмент кода я просто выделил слово «здесь», которое я хочу. Но помимо смелости, я хочу изменить цвет всего текста на красный.

Мне нужно только посмотреть, как вы поменяете текст в расширенном редакторе редактирования 2.0 на другой цвет. Я просматривал stackoverflow и google, и многие документы касались этого от 10 лет назад +.

Here Недавний вопрос, заданный вопросом, который задает тот же вопрос, который я делаю, кроме его сообщения - это гигантский фрагмент кода, который мне действительно неинтересен. Я уже пробовал использовать

cf.crTextColor = RGB(255,0,0); 

перед использованием

m_pMessageTextBox.SetSelectionCharFormat(cf); 

ничего не изменится, я думал, что в этом случае смелое слово будет смелым и красным, в то же время, но это только остается черным.

ответ

2

Хорошо, поэтому мне удалось это выяснить, одно из моих условных утверждений было сломано, поэтому часть моего кода никогда не была прочитана. Для тех, кто работает в этом вопросе это то, что я использовал:

CHARFORMAT cf = { sizeof(cf) }; 
cf.dwEffects = CFM_BOLD; 
cf.dwMask = CFM_BOLD; 
m_pMessageTextBox.SetSel(13, 17); 
m_pMessageTextBox.SetSelectionCharFormat(cf); 
cf.cbSize = sizeof(cf); 
cf.dwMask = CFM_COLOR; 
cf.dwEffects = 0; 
m_pMessageTextBox.SetSel(0, -1); 
m_pMessageTextBox.SetSelectionCharFormat(cf); 

Для этого, и я не имел возможности поиграть с ним только еще предстоит увидеть, если я могу сократить его, но он работает так, как я хочу сейчас. Сначала он выполняет смелые свойства и применяет его к тексту, ТОГДА он выполняет свойства цвета текста и применяет его от начала до конца текста.

+0

Возможно, имеет смысл обменять операции - сначала покрасьте весь текст, затем жирным шрифтом выделите отдельный раздел. BTW, в чем смысл использования текста «нажмите здесь», если вы на самом деле не делаете его доступным для кликов? Используйте маску 'CFM_LINK', чтобы разрешить эффект' CFE_LINK', тогда кликаемый текст будет генерировать уведомление «EN_LINK» при нажатии. –

+0

Ваш ответ не имеет никакого смысла, если у него нет 'cf.crTextColor = RGB (255,0,0); 'line! – sergiol