Re[10]: Глюк VScroll в CEdit
От: AlexLux  
Дата: 19.11.04 08:27
Оценка:
Здравствуйте, visual_wind, Вы писали:


AL>>
AL>>//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AL>>HBRUSH CReNamerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
AL>>{
AL>>    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
AL>>    // TODO: Change any attributes of the DC here
AL>>    if (pWnd == &m_InfoBox1)
AL>>    {
AL>>        hbr = (HBRUSH)GetStockObject(WHITE_BRUSH);
        pDC->>>SetBkMode(TRANSPARENT);
AL>>    }

AL>>    // TODO: Return a different brush if the default is not desired
AL>>    return hbr;
AL>>}
AL>>



_>Наверное, все работает так, как и должно.


_>Из MSDN для функции SetBkColor

_>[msdn]
_>TRANSPARENT Background is not changed before drawing
_>[/msdn]

_>То есть при перерисовке едита его предыдущее содержимое остается и вызывает тот эффект, который Вы описали.


_>Может, Вам лучше указать, какого эффекта Вы хотели достичь, и мы подумаем над альтернативным способом его достижения?


Hello!

Ура, Заработало! Спасибо за консалт. Я убрал из обработчика OnCtlColor вызов
SetBkMode(TRANSPARENT). Вот новый вариант OnCtlColor:

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
HBRUSH CReNamerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
   // TODO: Change any attributes of the DC here
   if (pWnd == &m_InfoBox1)
   {
        pDC->SetTextColor(0));
        pDC->SetBkColor(RGB(255,255,255));
        hbr = (HBRUSH)GetStockObject(WHITE_BRUSH);
   }

   // TODO: Return a different brush if the default is not desired
   return hbr;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.