| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Динамическое добавление PropertyPage |
| Автор: constN 10.6.2008, 10:40 |
| Вопрос вот в чем. Я на PropertySheet динамически добавляю страницы(по кнопке из самой PropertySheet). Не смог найти как перерисовать PropertySheet, так чтобы была видна вся новая страница(размер поменялся). Если диалог закрыть и открыть, то PropertySheet подхватывает новые размеры. Как это сделать динамически. Может мессага какая кидается при инициализации? Среди методов ничего похожего не нашел. В общем, если кто знает подскажите пожалуйста. |
| Автор: Earnest 10.6.2008, 12:51 |
| Не совсем поняла - так новая страница не появляется? Тогда при чем тут размер? |
| Автор: voov 10.6.2008, 13:26 |
| Если перерисовка поможет, то - Invalidate() |
| Автор: constN 10.6.2008, 13:32 |
| Да нет, новая страница появляется (с этим все ОК). Просто когда добавляешь с десяток новых страниц их закладки (не помню, как они по-научному называются), выстраиваются сверху в 3-4 ряда. Естестественно они занимают место. А размер PropertySheet остается как в момент открытия диалога. Поэтому видимая рабочая область PropertyPage урезается снизу. Кода диалог закроешь и откроешь снова размер PropertySheet становиться новый (с учетом новых Page) - и все отображается снова красиво. Я так понимаю размер PropertySheet высчитывается (в зависимости от размеров PropertyPage) когда-то в момент инициалицации PropertySheet. Руками вычислять размер PropertySheet (так чтобы красиво отображались PropertyPage) в момент добавления не хотелось-бы (выдь факт, что PropertySheet умеет это делать самостоятельно). Вариант сделать чтобы закладки выстраивались в линию с возможностью прокрутки не предлагать - так постановщик не хочет. Вопрос - как пересчитывать размер PropertySheet в зависимости от размера PropertyPage когда диалог открыт. Может событие какое возникает, типа Refresh, или Message какая кидается в систему, которая дает команду перерисовать PropertySheet с учетом PropertyPage? Попытался объяснить попонятнее. |
| Автор: Earnest 10.6.2008, 13:48 | ||
| Ясно... Есть сообщение PSM_RECALPAGESIZES, сама не пробовала, но вроде по описание это оно:
|
| Автор: constN 10.6.2008, 14:27 | ||||
| Спасибо Earnest, это ОНО. пришлось правда добавить
иначе компилятор ругался. Итоговый ответ - после PageAdd() делаем:
Еще раз спасибо за оперативную помощь. |
| Автор: Earnest 11.6.2008, 08:34 |
Ой! Оно ведь определено в WinAPI - нужно просто включить CommCtrl.h или CommDlg.h... или прямо PrSht.h. А то, что ты сделал, не очень хороший путь... |