int x, y, lines;
x = 400; // стандартная (и минимальная) ширина ОКНА диалога
lines = medfont->GetLinesCountInText(text, x -40); // считаем кол-во линий
y = lines *16; // высчитываем высоту только текста
if (y < 80) { // если высота текста слишком маленькая
y = 80; // делаем её минимально допустимой для лучшей визуальности
}
if (lines > 30 ) { // а вот если строк в тексте больше 30 (сликом много)
x += 180; // увеличиваем ширину окна до 580 px
lines = medfont->GetLinesCountInText(text, x -40); // опять высчитываем кол-во строк при ширине = 580
y = lines *16; // опять вычитываем высоту текста (при ширине =580)
}
y += 40; // добавляем отступы по высоте (получаем высоту ОКНА диалога)
if (y > 580) { // если высота ОКНА больше допустимой (вообще 600, но я принял 580)
y = 580; // устанавливаем фиксированную макс.высоту
x += 200; // и увеличиваем ширину текста до 780 px
}