Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как ограничить размер окна?

27K
29 июля 2008 года
Quark
12 / / 24.09.2007
я регистрирую класс, создаю окно. необходимо сделать ограничение на минимальный размер окна (чтобы элементы внутри окна не искажались). как это можно сделать?
12K
29 июля 2008 года
lifs
163 / / 06.09.2007
можно создать окно неизменяемого размера
можно обрабатывать сообщение WM_SIZING
3.7K
29 июля 2008 года
0nni
326 / / 24.06.2008
WM_GETMINMAXINFO =)
66K
11 декабря 2010 года
Zero&One
3 / / 11.12.2010
lifs,Onni а можно поподробнее представить код,я пробовал обработать и то и то,но получилось негусто((((
3.7K
11 декабря 2010 года
0nni
326 / / 24.06.2008
Это сообщение посылается во время создания окна
Код:
var MinMaxInfo : PMinMaxInfo;
...
 WM_GETMINMAXINFO:
    begin
       //В этом сообщении через LParam передаться ссылку на структуру LPMINMAXINFO
       MinMaxInfo := Pointer(LParam);
       //значения которой мы изменяем
       MinMaxInfo^.ptMinTrackSize.X := 300;
       MinMaxInfo^.ptMinTrackSize.Y := 200;
       //После чего измененная структура читается ядром
       Exit(0);
    end;


Можно еще обрабатывать WM_WINDOWPOSCHANGING, оно посылается до того как положения или размеры окна изменятся и содержит структуру с новым положением окна. В отличии от GETMINMAXINFO оно посылается многократно.

Код:
var WindowPos: PWindowPos;
...
 WM_WINDOWPOSCHANGING:
    begin
       WindowPos:= Pointer(LParam);
       if WindowPos^.cx < 320 then
         WindowPos^.cx := 320;
       if WindowPos^.cy < 200 then
          WindowPos^.cy := 200;
       Exit(0);
    end;
66K
11 декабря 2010 года
Zero&amp;One
3 / / 11.12.2010
[QUOTE=Zero&One;339439]спс...
Я сделал так:
Код:
case WM_SIZING:
    {
        RECT rc;
        GetWindowRect(hWnd, &rc);
        *((LPRECT)lParam) = rc;
    }
    return 0;

case WM_MOVING:
    {
        RECT rc;
        GetWindowRect(hWnd, &rc);
        *((LPRECT)lParam) = rc;
    }
    return 0;
[/QUOTE]

сейчас попробую ваш вариант(правда на С++:))
3.7K
11 декабря 2010 года
0nni
326 / / 24.06.2008
Ну тогда что-то типа этого , кстати, можно сделать "Липкие" окна =)
 
Код:
case WM_WINDOWPOSCHANGING:
{
  WINDOWPOS *WindowPos= (WINDOWPOS*)LParam;
  if WindowPos->cx < 320 { WindowPos->cx = 320; }        
  if WindowPos->cy < 200 { WindowPos->cy = 200; }
}
66K
11 декабря 2010 года
Zero&amp;One
3 / / 11.12.2010
[SIZE=10][COLOR="green"]а вот это то,что мне по душе более всего[/COLOR][/SIZE]

Спасибо,плюсанул в репу
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог