Форум: "Начинающим";
Текущий архив: 2018.02.11;
Скачать: [xml.tar.bz2];
ВнизWM_WINDOWPOSCHANGED Найти похожие ветки
← →
Dmk © (2016-01-30 19:51) [0]Всем привет! Если использовать VCL, то при изменении окна в состояние WM_MAXIMIZED данное событие вызывается 2 раза. Если WINAPI, то 1 раз. Вопрос такой: как пропустить в VCL второй раз, т.е. отследить только последнее событие?
Пробовал изменить параметры анимации окон, но результат тот же. При развороте окна WM_WINDOWPOSCHANGED вызывается 2 раза, а при сворачивании 1 раз.
← →
Забыл пароль (2016-01-31 19:11) [1]В VCL многое не как в API. Частая причина - главное окно и очередь сообщений - это TApplication. А все формы - полу-дочерние.
← →
KSergey © (2016-02-08 11:52) [2]Может у окна есть признак "я максимизировано" - по нему можно понять, что WM_MAXIMIZED пришло уже максимизированному окну, т.е. второй раз?
← →
Dmk © (2016-02-08 16:20) [3]Нету никакого признака. Сразу становится Maximized, еще до полного разворота. Поставил БП на сообщение - получил даже 6 раз!!! изменения размера окна. В VCL окно сначала разворачивается по вертикали, потом еще раз по горизонтали. В промежутках вызывается WM_ERASEBKGND. в WinApi сразу в нужный размер за 1 раз. Если поставить в OnResize, то вызывается 1 раз, но мне не годится это. Мне в сообщении надо. Там перерасчет происходит. Просто моргает много :( Тут видимо либо совсем без VCL, либо только VCL.
← →
Dmk © (2016-02-19 12:39) [4]Если кому интересно, то разобрался. Если главная форма MDI form, то при наличии Sanken edge у клиентской области, MDI child изменяет размер 2 раза. Если этот край убрать, то 1 раз. Сейчас все стало нормально.
Код:lpExStyle := lpExStyle and not (WS_EX_CLIENTEDGE);
SetWindowLong(wnd, GWL_EXSTYLE, lpExStyle);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.02.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.001 c