MFC - изменяет цвет текста cstatic текстового управления

Лично я использую подрывной. Это имеет лучшие функции удобства использования, главным образом интуитивные сочетания клавиш и т.д.

, у меня никогда не было проблемы с помощью также все же. Это действительно - просто комбинация персонального предпочтения и использования, хотя, если Вы используете усовершенствованные сложные функции, это могло бы иметь значение, какой Вы выбираете, но если Ваша просто регистрация, проверка и синхронизация они оба удовлетворят Ваши потребности.

15
задан Owen 28 October 2009 в 11:09
поделиться

2 ответа

Вы можете реализовать ON_WM_CTLCOLOR в своем диалоговом классе без необходимости создания нового класса, производного от CStatic:

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
    //{{AFX_MSG_MAP(CMyDialog)
    ON_WM_CTLCOLOR()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

HBRUSH CMyDialog::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 CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    }
}

Обратите внимание, что приведенный выше код устанавливает текст всех статических элементы управления в диалоговом окне. Но вы можете использовать переменную pWnd для фильтрации нужных вам элементов управления.

31
ответ дан 1 December 2019 в 00:18
поделиться

к сожалению, вы не найдете SetTextColor в классе CStatic. Если вы хотите изменить цвет текста CStatic, вам придется кодировать еще немного.

На мой взгляд, лучший способ - это создать свой собственный класс, производный от CStatic (CMyStatic), и получить там уведомление ON_WM_CTLCOLOR_REFLECT.

BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
    //{{AFX_MSG_MAP(CMyStatic)
    ON_WM_CTLCOLOR_REFLECT()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor) 
{
    pDC->SetTextColor(RGB(255,0,0)); 

    return (HBRUSH)GetStockObject(NULL_BRUSH);  
}

] Очевидно, вы можете использовать переменную-член и метод установки для замены красного цвета (RGB (255,0,0)).

С уважением.

Найдите метод SetTextColor в классе CStatic. Если вы хотите изменить цвет текста CStatic, вам придется кодировать еще немного.

На мой взгляд, лучший способ - это создать свой собственный производный от CStatic класс (CMyStatic) и в нем получить уведомление ON_WM_CTLCOLOR_REFLECT.

BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
    //{{AFX_MSG_MAP(CMyStatic)
    ON_WM_CTLCOLOR_REFLECT()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor) 
{
    pDC->SetTextColor(RGB(255,0,0)); 

    return (HBRUSH)GetStockObject(NULL_BRUSH);  
}

] Очевидно, вы можете использовать переменную-член и метод установки для замены красного цвета (RGB (255,0,0)).

С уважением.

Найдите метод SetTextColor в классе CStatic. Если вы хотите изменить цвет текста CStatic, вам придется кодировать еще немного.

На мой взгляд, лучший способ - это создать свой собственный класс, производный от CStatic (CMyStatic), и получить там уведомление ON_WM_CTLCOLOR_REFLECT.

BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
    //{{AFX_MSG_MAP(CMyStatic)
    ON_WM_CTLCOLOR_REFLECT()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor) 
{
    pDC->SetTextColor(RGB(255,0,0)); 

    return (HBRUSH)GetStockObject(NULL_BRUSH);  
}

] Очевидно, вы можете использовать переменную-член и метод установки для замены красного цвета (RGB (255,0,0)).

С уважением.

8
ответ дан 1 December 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: