Как нарисовать PNG поверх диалоговых элементов управления - PullRequest
2 голосов
/ 23 июля 2011

Мне нужно сделать что-то вроде SEMI-прозрачного слоя стекла поверх элементов управления диалога. Контекст заключается в том, что мое приложение ожидает завершения длинного процесса, и все другие элементы управления должны быть отключены, а анимация отображается на стеклянном слое как ожидание анимации.

Я собираюсь нарисовать полупрозрачное изображение PNG с размером клиентской области, перекрывая все остальные элементы управления. Я делаю рисование в OnPaint (), но изображение рисуется в качестве фона диалога.

Итак, мой вопрос, как я могу нарисовать элемент управления диалогового окна перекрытия изображений PNG ??

LRS

1 Ответ

2 голосов
/ 25 июля 2011

Вы можете попробовать поиграть со стилями WS_CLIPCHILDREN и WS_CLIPSIBLINGS, но я не уверен, что это сработает. Я думаю, что вам нужно будет нарисовать пользовательский элемент управления поверх всех других элементов управления (в верхней части стека z-порядка) и нарисовать ваше растровое изображение на нем (это подход, который я выбрал бы - диалог должен быть позади контролирует всегда, поэтому ваш подход к рисованию в диалоге как бы борется с системой).

Таким образом, в основном вы должны использовать пользовательский элемент управления, который будет охватывать все другие элементы управления, но вам даже не нужно рисовать его прозрачно; Вы можете использовать стиль окна WS_EX_TRANSPARENT и / или WS_EX_LAYERED и метод SetLayeredWindowAttributes (), если вам не требуется поддержка операционных систем, более старых, чем win2k.

...