Здравствуйте, 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;
}