Можете ли вы попытаться вызвать базовую реализацию CDialog::OnCtlColor
перед вашим пользовательским кодом, например:
HBRUSH MyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hBrush=CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_LISTBOX)
{
if(bChangeTextColor)
{
pDC->SetTextColor(RGB(255, 0, 0));
hBrush=m_hRedBrush;
}
}
return hBrush;
}
CDialog::OnCtlColor
делает что-то внутренне, что пропускается вашим return
внутри вашей функции. Это очень расплывчатая идея, но я всегда использовал OnCtlColor
таким образом, и у меня никогда не было проблем.