Как изменить цвет переднего плана (т.е. текст или заголовок) кнопки в диалоговом приложении MFC / VC ++ - PullRequest
1 голос
/ 08 июля 2010

Я делаю калькулятор в диалоговом приложении vc ++ / MFC. Я хочу изменить цвет переднего плана и фона кнопки в диалоговом окне. Понятия не имею, как поменять. Пожалуйста, предложите мне соответствующий код или пример, если у кого-нибудь есть идея.

basu_sagar

Ответы [ 3 ]

1 голос
/ 08 мая 2016

Вы можете использовать CMFCButton. Хотя вы можете прямо сказать в своем файле ресурсов кнопку такого типа, я не рекомендую ее, потому что она добавляет в rc-файл не поддерживаемый шестнадцатеричный фрагмент текста. И если вы используете несколько файлов RC, по одному для каждого языка, это действительно дьявольски!

Итак, поехали. В вашем классе формы объявите член

CMFCButton m_button1;

DoDataExchange должен выглядеть следующим образом:

void MyDialog::DoDataExchange(CDataExchange* pDX)
{
    __super::DoDataExchange(pDX);

    DDX_Control(pDX, IDC_BUTTON1, m_button1);

    // ...
}

Тогда OnInitDialog должен выглядеть примерно так:

BOOL CMyDialog::OnInitDialog()
{
    if(!__super::OnInitDialog())
         return FALSE;

    m_button1.SetFaceColor(RGB(0,0,255));
    m_button1.SetTextColor(RGB(0,255,0));
    m_button1.SetHotTextColor(RGB(255,0,0));

    return TRUE;
}

Код, который я разместил, нарисует синюю кнопку с зеленым текстом, а когда курсор наведет курсор на кнопку, ее текст станет красным.

1 голос
/ 08 июля 2010

Нет простого способа сделать это в классическом приложении VC / MFC, цвета кнопок всегда определяются системой.Вы должны либо использовать пользовательский элемент управления, либо создать кнопку рисования владельца.Обработка WM_CTLCOLOR и возврат другой кисти не работает для кнопок.

Редактировать:

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

0 голосов
/ 08 июля 2010

Эта ссылка содержит информацию, которую вы ищете: CWnd :: OnCtlColor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...