Что заставляет WS_TABSTOP влиять на порядок рисования окон?

В WTL CBitmapButton не поддерживает изображение с прозрачным слоем, как PNG. поэтому я настраиваю код, чтобы использовать GDI+ для рисования PNG, назовите его как CPNGButton. Но на win XP все странно. Когда кнопка перекрывается другим окном, кнопка получает сначала WM_PAINT, а затем родитель, вызывая неверный результат.

--->

Я проверяю ресурс и удаляю атрибут WS_TABSTOP из шаблона кнопки, все идет хорошо, родительское окно получает сначала WM_PAINT, а затем кнопку. Что заставляет WS_TABSTOP влиять на порядок рисования окон?

1 ответ

Решение

Это то, что происходит, когда вы не рисуете фон. Это оставляет "дыру" в окне, вы видите пиксели любого окна позади вашего. Или рабочий стол, если такого окна нет. Не уверен, что это связано с WS_TABSTOP.

Используйте флаг стиля WS_EX_TRANSPARENT. Это говорит Windows, что вы хотите, чтобы родительский элемент кнопки нарисовал себя в окне клиента, чтобы предоставить фоновые пиксели.

Другие вопросы по тегам