Как предотвратить перемещение дочернего окна при изменении размера родительского?

#c #winapi #mfc

#c #winapi #mfc

Вопрос:

Есть ли какой-либо способ предотвратить перемещение дочернего окна ( CWnd ) при изменении родительского размера? Просто мне нужно изменить размер моего дочернего элемента управления в соответствии с некоторыми правилами, и когда я делаю это OnSize() из родительского элемента управления, я наблюдаю некоторое колебание в правой части родительского элемента управления. Я думаю, это происходит из-за перемещения дочернего элемента управления, когда родительский элемент изменяет размер.

Комментарии:

1. Требуется дополнительное разъяснение. Дочерние окна не перемещаются при изменении размера их родительского окна, если вы не сделаете это явно (что, похоже, вы делаете). Я считаю, что OnSize соответствует WM_SIZE, что является подходящим временем для вычисления нового размера или положения для дочерних элементов управления. Я подозреваю, что у вас проблема с вычислением или с тем, как вы пытаетесь обновить дочернее окно после вычисления. Пример кода может помочь.

2. У меня есть некоторый объект CWnd. Оно родительское (будет вызывать его 1). И у меня есть другой объект CWnd, который является дочерним (2). Когда родительский объект перемещается, дочерний объект тоже перемещается. И теперь у меня ситуация, когда родительский объект является дочерним для другого объекта (3), причем 2 расположены не во всей клиентской области родительского объекта. Когда я перемещаю 2, 1 (который внутри 2) тоже перемещается, но когда я хочу изменить размер 2, мне нужно вычислить новый размер 1. И теперь, когда правая граница 2 постоянна, а левая граница 2 перемещается, мне нужно удерживать правую границу 1. НО ПРИ ПЕРЕМЕЩЕНИИ 2 ОНО ТАКЖЕ ПЕРЕМЕЩАЕТ 1.

3. Нарисуйте картинку или что-то в этом роде; ваше описание Windows 1 и 2 ужасно.