У меня есть всплывающее диалоговое окно (CDialog
), которое обрабатывает сообщение WM_CTLCOLOR
, чтобы окрасить себя.Он имеет некоторые элементы управления (например, кнопки растрового изображения), которые рисуют сами, используя OwnerDraw.Он также имеет элемент управления, отображающий изображение с размером, который занимает до 70% диалогового окна.
Когда пользователь изменяет размеры диалогового окна, некоторые элементы управления в диалоговом окне должны быть повторнопозиционируется (без изменения размера) . Это также включает изменение размера изображения внутри диалогового окна. Поскольку изменение размера изображения замедляет весь процесс, индивидуальное перемещение элементов управления вызывает визуальный эффект мерцания.
Мне нужно избавиться от них.Одна идея состоит в том, чтобы поместить элементы управления как дочерние элементы промежуточного диалога, который является дочерним элементом исходного всплывающего диалога.Таким образом, при изменении размера я могу изменить положение только диалогового окна, вместо того чтобы перемещать каждый элемент управления по отдельности.(Перемещение происходит только в одном направлении (x или y), поэтому перемещения промежуточного диалогового окна должно быть достаточно.
Поскольку для этого требуется некоторое усилие по кодированию, прежде чем идти по этому пути, мне нужноответы на следующие вопросы:
- Будет ли это работать?
- Если да, какова сложность этого метода?
- Есть ли лучший способ?
Пожалуйста, помогите!