Вот хочу создать сплиттер как в дельфи. C:\masm32\examples\EXAMPLE6\SPLITTER смотрел. C:\masm32\examples\EXAMPLE7\TREEDEMO тоже. Но чего то они мне не нравятся. В первой ссылке сплиттера нет, есть лишь промежуток между двумя контролами, мне это не понравилось, потому что при изменении размера окна происходят непонятные вещи. Во втором примере при хватании за сплиттер главное окно теряет фокус, тоже странно. Мне бы хотелось увидеть, как создавать сплиттер. Всем спасибо
Сплиттер - это контрольное окно (child window), которое является родителем для двух других панелей. Промежуток между панелями и есть линия сплиттера, так что это правильный подход. Если что-то не работает, то значит неверно имплементировано.
А... понимаю, ты думаешь, что это входит в состав системных элементов, как, "edit" или "listbox". Должен огорчить - Splitter-ы сделаны отдельно. MFC имеет свой код, а Borland Builder - свой. Я например делаю Splitter-ы сам.
А будет правильно делать так: при большом кол-ве сплиттеров в одном окне, группировать контролы в статик меняя родителей контролов на этот самый статик? Тут получается типа статик играет роль TPanel из дельфи. Потом сабклассировать статик и обрабатывать мышиные события. Расстояние между контролами и есть сплиттер (видимая часть статика). Можно ли так?
Сабклассинг должен по идее работать. Никогда не пробовал. Вот в этой куче ссылок, должно быть про реализацию сплиттера: http://catch22.net/tuts/
Использую MoveWindow (последний параметр - TRUE). При этом окно некрасиво мигает. Как избавиться от этого? Хочется чтоб все было гладко при хватании за сплиттер. Координаты правильные, а вот мигание все портит. Что делать?
OSMan У всех родительских окон должен стоять стиль WS_CLIPCHILDREN. [add] Вот, раскопал у себя примерчик. Если кому что не понравится - сообщите, а то это у меня входит в templates. Здесь не добавлена возможность при изменении размеров окна перемещать сплиттер и ограничение на минимальный размер окна; это не должно вызвать затруднений. Так же принимается, что дочерние окна закрывают всю клиентскую область main окна.