Как нарисовать прозрачные области для дочерних элементов управления?

StackOverflow https://stackoverflow.com/questions/848101

Вопрос

У меня есть подкласс CTabCtrl, который я пытаюсь переопределить WM_PAINT для выполнения собственного рисования.Единственная проблема заключается в том, что когда я меняю выбранную вкладку, в диалоговом окне остаются артефакты, где старый код рисования не был стерт до того, как новый код был нарисован поверх.(В стандартных элементах управления вкладками выбранная вкладка отображается на 2 пикселя больше, чем невыбранные вкладки, поэтому при изменении с выбранной на невыбранную у вас остаются предыдущие артефакты рисования).

Как лучше всего «перекрасить» эту область?Я попытался получить DC родительского элемента управления и использовать BitBlt на дочернем DC, но это не сработало, поскольку родительский DC уже содержит изображение этого элемента управления.

Это было полезно?

Решение

Вы также переопределяете сообщение WM_ERASEBACKGROUND?Вероятно, вам следует сделать это и стереть область в элементе управления.

Вы могли бы использовать РисоватьТемаРодительФон для рисования фона (XP и более поздние версии), если вы не хотите заменять всю логику рисования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top