Как динамически изменить цвет статического текстового элемента управления в MFCC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как динамически изменить цвет статического текстового элемента управления в MFC

Сообщение Anonymous »

У меня есть простое диалоговое приложение MFC, которое содержит статический текстовый элемент управления среди других основных элементов управления, таких как элементы управления флажками и кнопки, а также элемент управления полем редактирования (см. Фото). Я хочу иметь возможность динамически изменять цвет статического текстового элемента управления, когда пользователь нажимает кнопку GO. Я позаимствовал большую часть приведенного ниже кода из других сообщений SO.
Я реализовал следующий обработчик сообщений WM_CTLCOLOR следующим образом:

Код: Выделить всё

HBRUSH CFileRenamerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
CWnd* pWndT = pWnd->GetDlgItem(IDC_STATIC);

// TODO:  Change any attributes of the DC here
switch (nCtlColor)
{
case CTLCOLOR_STATIC:

if (pWnd->GetDlgCtrlID() == IDC_STATIC)
{
pDC->SetTextColor(RGB(255, 0, 0));
//MessageBoxW(L"TEST", L"TESTING", 0);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
}
return hbr;
}

void CFileRenamerDlg::OnBnClickedGo()
{
CWnd* pWnd = this->GetDlgItem(IDC_STATIC);
CDC* dc = pWnd->GetDC();
dc->SetTextColor(RGB(128, 128, 128));
//COLORREF ref = dc->GetTextColor();

pWnd->Invalidate(0);
pWnd->UpdateWindow();
}
Изображение

Приведенный выше код работает, поскольку цвет статического текстового элемента управления меняется на цвет, указанный выше, но когда я пробую код, написанный в обработчике OnBnClickedGo(), он не работает. Никаких ошибок или ошибок утверждения отладки. Как изменить цвет статического текста на любой другой?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/791 ... ynamically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»