Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как изменить цвет текста?


Автор: LoadSPB 7.6.2009, 00:59
Создаю в мастере мфс однодокументное приложение.
Далее - менюшку, с обработчиком вызывающим окошко выбора цвета:
Код

void CtexteditorView::OnEditColor()
{
    CColorDialog dlg;
    COLORREF color;
    if (dlg.DoModal()){
        color = dlg.GetColor();
    }
    
    
}


Вопрос: как теперь задать цвет текста?

Автор: SalleX 7.6.2009, 01:40
HBRUSH CtexteditorView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);


delete brush;
    brush=new CBrush;
    brush->CreateSolidBrush(bkColor);
    pDC->SetTextColor(Color);
    return *brush;
    
    
}

Автор: SalleX 7.6.2009, 01:58
А забыл... про фон.
Код

COLORREF bkColor;

bkColor=RGB(255,255,255);

HBRUSH CtexteditorView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);


delete brush;
    brush=new CBrush;
    brush->CreateSolidBrush(bkColor);
    pDC->SetTextColor(Color);
    return *brush;
    
    
}

















Автор: LoadSPB 7.6.2009, 11:28
Пробовал примерно также, только вместо вызова CDialog::OnCtlColor вызываю CEditView::OnCtlColor
Только ничего не меняется. Даже если цвет прописывать вручную.
Если туда ещё запихнуть AfxMessageBoх - ничего не выдается. 

Вероятно этот OnCtlColor не вызывается просто... 
Хотя в карте сообщений добавлена ON_WM_CTLCOLOR()

 smile

Автор: Earnest 7.6.2009, 14:14
А цвет какого текста ты менять собрался? Того, что в самом вью? Тогда тебе нужен reflect, т.к. WM_CTLCOLOR приходит только для дочерних окон. Все почти тоже самое, только в карту прописывается ON_WM_CTLCOLOR_REFLECT, а сигнатура обработчика немного меняется: afx_msg HBRUSH CtlColor ( CDC* pDC, UINT nCtlColor );

Автор: LoadSPB 7.6.2009, 14:45
Да, спасибо, всё получилось! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)