Сбой MFC при повторении SetWindowText () при указании цвета фона для диалогового окна

Следующий код отлично работает:

for (int i = 0; i ‹500; i ++) {
for(int j=0; j<100; j++) {
m_title.SetWindowText(_T("lol"));
}
}

Но когда я устанавливаю цвет фона для диалога:

HBRUSH CTaggingDlg :: OnCtlColor (CDC * pDC, CWnd * pWnd, UINT nCtlColor) {
return CreateSolidBrush (RGB (0,0,0)); // ЧЕРНЫЙ
}

В приведенном выше цикле программа достигает точки останова в wingdi.cpp по адресу:

CPaintDC :: CPaintDC (CWnd * pWnd)

Как мне установить цвет фона для диалога, чтобы он не вылетел?


person Chetan    schedule 02.03.2010    source источник


Ответы (1)


Неважно. Изменив способ, которым я установил цвет фона для метода в этой статье:

http://www.codeguru.com/cpp/wd/dislog/background/article.php/c1895

Проблема решена.

person Chetan    schedule 02.03.2010
comment
Причина в том, что у вас протекали кисти (CreateSolidBrush каждый раз дает вам новую кисть). Используя CBrush в качестве переменной-члена, у вас есть только один объект кисти, и он очищается вместе с окном. - person Roger Lipscombe; 02.03.2010