MINMAXINFO не устанавливается при определенных значениях

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

MINMAXINFO не устанавливается при определенных значениях

Сообщение Avtopic » 11.05.2008 (Вс) 11:49

Здравствуйте!

Уже сутки, безрезультатно, решаю следующую задачу.

Мне нужно чтобы окно (форма) в развернутом режиме занимал не ту позицию на экране,
которая ему отведено Windows-ом, а развертывалась так чтобы из Caption-а видно било только нижняя часть шириной 4 пикселя.
И, чтобы это смещение окна вверх, компенсировалось, за счет увеличения высоты.
Здесь же уточню, окно без Caption -а не устраивает.

Что за проблемы подумал сначала,

В WM_GETMINMAXINFO устанавливаю
mxInf.ptMaxPosition.y
mxInf.ptMaxSize.y
mxInf.ptMaxTrackSize.y

но...

Если высота окна оказывается больше 730 пикселей, Windows игнорирует мои значения,
а если меньше 730 пикселей, то все ОК, но уже внизу высоты не хватает.
Перевернул вес интернет, нигде не нашел что за ограничение,
толи от разрешения экрана и SM_CYSCREEN (в моем случае разрешение 1024Х768),
или от размера окна десктопа (родительского), хотя и то и другое по-моему одно и тоже,
и с учетом нижнего TaskBar-а за размеры SM_CYSCREEN все ровно не выхожу.

Может кто-нибудь толкнет в нужном направлении?
Спасибо

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.05.2008 (Вс) 15:04

А что ты пытаешься сделать? Переход окно-fullscreen? Тогда тебе достаточно динамически менять стиль окна -- в fullscreen'е убирай заголовок и рамку окна, в оконном добавляй обратно. В поиск по SetWindowLong и WS_*.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 11.05.2008 (Вс) 15:38

Avtopic писал(а):Здесь же уточню, окно без Caption -а не устраивает.


у моей формы Caption модифицированный.
Высота отличается от системного (меньше системного) = от 6 до 19 пикселей.
соответственно в развернутом виде питаюсь поднять форму вверх, чтобы компенсировать разность с системным, чтобы поверх Caption до края экрана не образовалось пустое место.
поднять то поднимаю, как писал выше устанавливая mxInf.ptMaxPosition.y

но также нужно компенсировать высоту. Чтобы уже внизу не образовалось пустое место.

а вот это действие уже не принимает Windows, наверно из-за того, что размер превышает какие то нормы (десктопа, SM_CYSCREEN)

Пока что единственное решение в WM_WINDOWPOSCHANGED устанавливаю WindowState в normal, и потом устанавливаю размеры и местоположение формы, но это маразм...

ищу нормальное решение.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList