CWnd::OnCtlColor
Платформа вызывает функцию этот функцию-член, если дочерний элемент управления будет выписанным.
afx_msg HBRUSH OnCtlColor(
CDC* pDC,
CWnd* pWnd,
UINT nCtlColor
);
Параметры
pDC
Содержит указатель на контекст отображения для дочернего окна.Может быть временны.pWnd
Содержит указатель к элементу управления с запросом цвет.Может быть временны.nCtlColor
Содержит одно из следующих значений, указав тип элемента управления:Элемент управления "Кнопка"CTLCOLOR_BTN
Диалоговое окно CTLCOLOR_DLG
Элемент управления "Поле ввода"CTLCOLOR_EDIT
Элемент управления списка CTLCOLOR_LISTBOX
Окно сообщения CTLCOLOR_MSGBOX
Элемент управления "полоса прокрутки"CTLCOLOR_SCROLLBAR
Статический элемент управления CTLCOLOR_STATIC
Возвращаемое значение
OnCtlColor должно возвратить дескриптор к кисти, которая должна использоваться для рисования фона элемента управления.
Заметки
Большинство элементов управления отправляют данное сообщение к их родительскому элементу (обычно диалоговому окну) для подготовки pDC для отрисовки элемента управления, используя правильные цвета.
Чтобы изменить цвет текста, вызовите функцию-член SetTextColor с пожеланными красного, зеленого и голубыми значениями (RGB).
Изменение цвета фона однострокового элемента управления "Поле ввода", установить дескриптор кисти и кодах сообщения CTLCOLOR_EDIT и CTLCOLOR_MSGBOX и вызвать функцию CDC::SetBkColor в ответ на код CTLCOLOR_EDIT.
OnCtlColor не будет вызываются для списка в поле со списком, поскольку фактически дочерний элемент раскрывающегося списка в поле со списком и не является дочерним элементом окна.Чтобы изменить цвет раскрывающийся список, создайте CComboBox с преодолением переопределения OnCtlColor, проверяет CTLCOLOR_LISTBOX в параметре nCtlColor.В этом обработчике функции-члена SetBkColor должен использоваться, чтобы задать цвет фона текста.
Примечание |
---|
Это функция-член вызывается платформой, чтобы разрешить приложению обработать сообщение Windows.Параметры, передаваемые функции отражают параметры, получаемые платформой, когда сообщение было получено.При вызове реализации базового класса этой функции, то эта реализация будет использовать параметры изначально, переданные с сообщением, а не параметры указываются в функции.Добавьте следующий метод к классу диалогового окна, используйте панель свойств Visual Studio для добавления обработчика сообщений для WM_CTLCOLOR.Кроме того, можно вручную добавить запись ON_WM_CTLCOLOR() для сопоставления сообщений. |
Пример
// This OnCtlColor handler will change the color of a static control
// with the ID of IDC_MYSTATIC. The code assumes that the CPenWidthsDlg
// class has an initialized and created CBrush member named m_brush.
// The control will be painted with red text and a background
// color of m_brush.
HBRUSH CPenWidthsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// Call the base class implementation first! Otherwise, it may
// undo what we're trying to accomplish here.
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// Are we painting the IDC_MYSTATIC control? We can use
// CWnd::GetDlgCtrlID() to perform the most efficient test.
if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
{
// Set the text color to red
pDC->SetTextColor(RGB(255, 0, 0));
// Set the background mode for text to transparent
// so background will show thru.
pDC->SetBkMode(TRANSPARENT);
// Return handle to our CBrush object
hbr = m_brush;
}
return hbr;
}
Требования
Header: afxwin.h