Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменить цвет текста в CRichEditView 
:(
    Опции темы
iPlay
Дата 15.11.2010, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: нет
Всего: 1



Вообщем логика простая, нужно изменить цвет текста в редакторе, который реализован через CRichEditView, как вызвать окошко с выбором цвета, я разобрался, а вот как применить не понял?! 
Код

void CRicheditView::OnColor() 
{
    // TODO: Add your command handler code here
    CColorDialog dlg; 
    if (dlg.DoModal() == IDOK) { 
        COLORREF color = dlg.GetColor(); 
    } 

}

PM MAIL   Вверх
Earnest
Дата 16.11.2010, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата

The EM_SETBKGNDCOLOR message sets the background color for a rich edit control.



--------------------
...
PM   Вверх
iPlay
Дата 16.11.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: нет
Всего: 1



А причем тут цвет фона?

Делаю вот так: добавил в MESSAGE MAP -> ON_WM_CTLCOLOR()
А обработчик написал такой:
Код

HBRUSH CRicheditView::OnCtlColor(CDC* pDC, CWnd *pWnd, UINT nCtlColor)
{
    switch (nCtlColor)
    {
    case CTLCOLOR_STATIC:
        pDC->SetTextColor(RGB(255, 0, 0));
        return (HBRUSH)GetStockObject(NULL_BRUSH);
    default:
        return CRicheditView::OnCtlColor(pDC, pWnd, nCtlColor);
    }
}


Не получается, пишет OnCtlColor не принадлежит классу CRichEditView  smile 

Это сообщение отредактировал(а) iPlay - 16.11.2010, 11:13
PM MAIL   Вверх
Albor
Дата 16.11.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 7
Всего: 9



SetCharFormat() в помощь. 
PM MAIL ICQ   Вверх
iPlay
Дата 16.11.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: нет
Всего: 1



И как мне от диалогового окна забрать цвет и передать его в SetCharFormat?
PM MAIL   Вверх
Albor
Дата 16.11.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 7
Всего: 9



Ну, цвет ты уже получил. Осталось заполнить структуру CHARFORMAT2 и "скормить" её функции SetCharFormat
PM MAIL ICQ   Вверх
iPlay
Дата 16.11.2010, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: нет
Всего: 1



Аха, вроде работает, но с глюками, скорее всего неправильно заполнил структуру:
Код

void CRicheditView::OnColor() 
{
    CColorDialog dlg; 
    if (dlg.DoModal() == IDOK) { 
        COLORREF color = dlg.GetColor(); 
        CHARFORMAT cf;
        cf.crTextColor = color;
        SetCharFormat (cf);
    }   
}


Цвет меняет, но почему то после нажатия ОК, окно редактирование текса сильно проскроливается  вниз.

Это сообщение отредактировал(а) iPlay - 16.11.2010, 16:29
PM MAIL   Вверх
Albor
Дата 16.11.2010, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 7
Всего: 9



iPlay, Вы ведь сами давали ссылку, которая помогла разобраться с форматированием. Разве структура там так заполняется?
PM MAIL ICQ   Вверх
iPlay
Дата 16.11.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: нет
Всего: 1



АА пардон вспомнил smile)) Спасибо, разобрался:
Код

void CRicheditView::OnColor() 
{
    // TODO: Add your command handler code here
    CColorDialog dlg; 

    if (dlg.DoModal() == IDOK) { 
        COLORREF color = dlg.GetColor(); 
        CHARFORMAT    cf;
        cf.cbSize = sizeof(cf);
        cf.dwMask = CFM_COLOR;
        cf.dwEffects = 0;
        cf.yHeight = 240;
        cf.crTextColor = color;
        SetCharFormat (cf);
    } 
    
}


Это сообщение отредактировал(а) iPlay - 16.11.2010, 17:38
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1011 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.