В настоящее время я перемещаю элементы управления диалоговым окном, когда размер диалогового окна изменяется следующим образом:
// Get the list control rect.
CRect listRect;
list->GetWindowRect(&listRect);
ScreenToClient(listRect);
// Get the dialog Rect.
CRect dialogRect;
GetWindowRect(&dialogRect);
ScreenToClient(dialogRect);
list->MoveWindow(listRect.left, listRect.top,
dialogRect.right - (2 * listRect.left), dialogRect.bottom - 100);
Это прекрасно работает в Windows XP, но когда я попробовал в Windows Vista, позиционирование было отключено. Я думаю, что это должно быть связано с более крупными границами и заголовками диалогов в Windows Vista, а также с тем фактом, что GetWindowRect
имеет следующую запись в документации:
Размеры даны в координатах экрана относительно левого верхнего угла экрана дисплея. Размеры заголовка, границы и полос прокрутки, если они есть, включены.
Итак, мой вопрос: как мне переместить диалоговые элементы управления при изменении размера диалога, чтобы они были согласованы между операционными системами? Спасибо