|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Т.е. задача: 1) Есть form 2) Слева Treeview 3) Справа Listview 4) Между ними перемычка Надо, чтоб если тянешь за перемычку вправо-влево то Treeview-width увеличивается, Listview-width соотв. уменьшается (толщина перемычки соотв. постоянна, т.е двигаем типа границу между ними). В общем, не суть это могут быть 2 текстбокса. При этом надо понимать что ширина Treeview не может быть меньше какого-то MIN разумного значения. То же про Listview. В принципе, есть у меня готовый vb-based код. 1) mouse_down проверяет не на перемычке ли Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: plaintext 1. 2. 3.
Не суть. Суть в том что приведенные методы имеют недостатки: 1) относит. тяжело попасть по перемычке 2) возникают эффекты "мультипликации" при применении минимальных ширин. По сути возврат назад по факту проскока предельного значения. Т.е. нужен мне какой то достойный пример. Подозреваю что это будет Subclassing. Поискать попробовал, но по словам Listview/Treeview сложновато искать. Для формы кстати аналогичный вопрос себе поставил, но там вроде все решаемо: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
А с взаимным положением что-то нет идей. Я еще обратил внимание, что многие проги при mouse_down рисуют эдакую штрих/планку, кот. двигать и непрерывной перерисовки не производится. Нужно что-то сделать, чтоб было "культурно"... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2010, 03:24 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Измини, за сабклассинг тебе ничего не скажу, но не очень понял с классическими недостатками. Дмитрий77 1) относит. тяжело попасть по перемычке А почему? Чем это сложнее, чем попасть в любой другой объект? Кроме того, надо просто разместить там какой-нить подходящий объект без границ и сделать ему MouseIcon в виде стрелочек, здорово облегчит юзеру жизнь. Да и перехватывать MouseDown можно не у формы будет , а у этого объекта и не париться с координатами. Дмитрий772) возникают эффекты "мультипликации" при применении минимальных ширин. По сути возврат назад по факту проскока предельного значения. Тоже не очень понял. По идее просто запрещаешь двигать перемычку дальше определенных значений и она встает как вкопанная, я как-то делал что-то подобное, но никаких артефактов не наблюдал... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2010, 09:30 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2010, 12:43 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Antonariy, спасибо, выглядит достойно, думаю то что хотел, надо изучить. Вот кстати моя сборная солянка чем пользуюсь(сделал тест на скорую руку из чужого примера с Form_resize через API): Скачать Солянка глючит напр. при резком сдвиге перемычки влево-вправо за пределы формы, в большом приложении я как-то с этим борюсь(надо копать собственные коды чтоб это понять), но все равно это извращенство и не дело. И попасть по вашей перемычке сильно проще чем по моей. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2010, 14:12 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Antonariy, код ваш очень неплохой, сейчас тестирую его. Но есть глюк на Висте (именно на Висте при применениии Виста-темы). Картинка разделителя когда двигаем ее сильно мигает (мерцает, дрожит), нельзя это чем-нибудь отрегулировать? Я попытался, но пока не понял в чем дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2010, 03:26 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Покопавшись в интернете, я понял что проблема в том, что Виста не так отрисовывает через GDI. Именно поэтому для ListView и Treeview категорическое требование: применять DoubleBuffer. Применительно к данному примеру имеем отрисовку Splitter с задержкой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Виновата конкретно функция Код: plaintext
Решения два: 1) (не хотелось бы, не солидно)Назначить на Висте непрерывную перерисовку, т.е. линия вообще не применяется Код: plaintext
2) Рисовать линию другими методами, т.е. не использовать PatBlt Вопрос: Как по-другому рисовать Splitter? Желательно PATINVERT(шахматно-штрихованная линия) а не DSTINVERT (черная линия). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2010, 16:41 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дмитрий771) (не хотелось бы, не солидно)Назначить на Висте непрерывную перерисовку, т.е. линия вообще не применяется Код: plaintext
Это в данном случае не вариант. Проще забить на мерцалку, чем бороться с веером перерисовок (веер поверх Treeview на Висте самоустранится лишь через 1-2 сек, и это при влюченном dowblebuffer для treeview) , да и других негативов при непрер. перерисовке много. Линию бы по-другому нарисовать. Понятно, что драйвер видеокарты, но не хотелось бы таких hardware-зависимостей... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2010, 07:27 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дмитрий77, 1) Чисто из любопытства - примерчики из приложенного архива под Вистой те же проблемы испытывают? 2) IMHO, разделитель должен себя вести в соответствии с общесистемными установками. Если уж пользователь поставил галку "Show window contents while dragging", пусть сам и смотрит на слайд-шоу. 3) По-другому рисовать? Просто идея - а если взять в качестве разделителя полупрозрачное окно, скажем? Или накладывать сверху на главное окно полупрозрачное окно, на котором будет отображаться примерный новый внешний вид главного окна? 4) Вроде в семёрке ускорение двумерной графики снова поддерживается (с какими-то оговорками). Может, не стоит тратить силы на Висту? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2010, 19:20 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дмитрий77, в том примере что вы дали , получается в коде ничего менять не надо , просто надо расположить свои объекты на picSplitMain и все ,а он сам поймет что с ними делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2010, 20:29 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
БенедиктДмитрий77, 1) Чисто из любопытства - примерчики из приложенного архива под Вистой те же проблемы испытывают? ... 4) Вроде в семёрке ускорение двумерной графики снова поддерживается (с какими-то оговорками). Может, не стоит тратить силы на Висту? Гы-... А Ваши примеры на Висте хорошо работают,однако. Палка не глючит, не мерцает. aduka05admДмитрий77, в том примере что вы дали , получается в коде ничего менять не надо , просто надо расположить свои объекты на picSplitMain и все ,а он сам поймет что с ними делать? Который Antonariy дал, Вы хотели сказать. Это вопрос? Если вопрос то да, так и есть, он сам все понимает. Бенедикт, честно хотелось бы модифицировать этот пример (Antonariy), чтоб палка рисовалась как у Вас. Зря чтоль силы потратил на осознавание-внедрение.... Что сделать то надо? А то у Вас в архиве только exe-шники. А по поводу Win7, это пускай дочка моя пока осваивает, Папочка пока до таких к-крутых систем еще не дорос. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2010, 22:08 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дмитрий77, спасибо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2010, 22:34 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дмитрий77, При беглом сравнении, отличие в отрисовке между кодом, приведённым Antonariy-ем ( EasySplitter ) и примером ViewEx в том, что MFC-шная реализация (класс CSplitterWnd, см. WINSPLIT.CPP, если есть исходники MFC) 1) рисует на DC окна, а не экрана, 2) на время таскания перемычки снимает стиль окна WS_CLIPCHILDREN, чтобы рисовать поверх всех дочерних окон. Хм, вроде бы немного (а может, я чего упустил), а сказывается. Что делать? Мне - дойти до работы и выслать VB-шные исходники от второго примера, Вам - разобраться в них, и слить с cSplitter, чтобы получился нормальный класс в итоге. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2010, 23:59 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
БенедиктДмитрий77, 2) на время таскания перемычки снимает стиль окна WS_CLIPCHILDREN, чтобы рисовать поверх всех дочерних окон.... Что делать? Мне - дойти до работы и выслать VB-шные исходники от второго примера, Вам - разобраться в них, и слить с cSplitter, чтобы получился нормальный класс в итоге. Спасибо, буду ждать пока дойдете до работы... P.S. Мо быть мне кто объяснит все же: здесь все очень лихо прикладывают zip-ы, rar-ы а я туплю и не знаю как это сделать и вынужден класть файлы на, скажем так, не совсем свой ftp, да еще и в корень сайта их кладу ибо лениво folder создать а потом еще путь каждый раз выписывать. Насчет "снимает стиль окна" чуть заранее испугали. У меня там Treeview/ListView разделяются, и на Висте они в "крутом" стиле "explorer", не хотелось бы это дело показывать в стиле "аля-классик" даже временно, если мы конечно о том же. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2010, 03:13 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Бенедикт2) IMHO, разделитель должен себя вести в соответствии с общесистемными установками. Если уж пользователь поставил галку "Show window contents while dragging", пусть сам и смотрит на слайд-шоу. Ну здесь я не соглашусь. Эта галка в свойства=> оформление=>эффекты находится, так? Когда меняешь размер формы, то да, это автоматически применяется/не применяется. А когда таскаешь разделитель, то это на вкус написателя программы. И сам майкрософт здесь никаких правил не соблюдает. Классические примеры (два моих любимых): 1) Outlook Express - всегда мультфильм 2) Microsoft Fax (Консоль факсов) -всегда ездит палка/разделитель ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2010, 05:40 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дмитрий77P.S. Мо быть мне кто объяснит все же: здесь все очень лихо прикладывают zip-ы, rar-ы а я туплю и не знаю как это сделать и вынужден класть файлы на, скажем так, не совсем свой ftp, да еще и в корень сайта их кладу ибо лениво folder создать а потом еще путь каждый раз выписывать.Просто здесь то, что приложено к сообщению, уже не прикладывается, если нажать кнопку "Предварительный просмотр". Т.е. написали сообщение, нажали "Предварительный просмотр", {отредактировали, опять нажали,} нажали "Browse...", добавили файл, нажали "Опубликовать". Я тоже не с первого раза понял. Дмитрий77Насчет "снимает стиль окна" чуть заранее испугали. У меня там Treeview/ListView разделяются, и на Висте они в "крутом" стиле "explorer", не хотелось бы это дело показывать в стиле "аля-классик" даже временно, если мы конечно о том же.Нет, не о том же. Window Styles Дмитрий77Ну здесь я не соглашусь. Эта галка в свойства=> оформление=>эффекты находится, так? Когда меняешь размер формы, то да, это автоматически применяется/не применяется. А когда таскаешь разделитель, то это на вкус написателя программы.Да, эта галка. И считаю, что изменение размера формы, как и изменение размера панели является изменением размера окна. Я смотрю на Explorer, кстати, в качестве примера. Но согласен с тем, что это дело вкуса, по большому счёту. Исходники в приложении. Замечания: 1) надо из формы функциональность выносить в класс; 2) сабклассинг реализован не совсем обоснованно сложно (overkill) для VB, но мне так было проще-быстрее, так как это готовые модули; 3) не уверен, что надо обрабатывать очистку фона, попробуйте в SubclsMe_EraseBackground возвращать и True, и False, если разницы нет, выкиньте; 4) сабклассинг выкинуть не получится, так как надо обрабатывать потерю захвата мыши (capture). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2010, 11:21 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Бенедикт, спасибо. Так с ходу ничего не понял, но "Будем разбираться" на выходных или на след. неделе. Ничего пока кроме спасибо не говорю и не спрашиваю, тем более дали комментарии. Знаю что Бенедикт плохого не предложит. М.б. наглею конечно, не часто вы здесь появляетесь....а по графике вы здесь первый Вот с этой задачей даже близко не справился: Градиенты в Vista стиле, и в частности подложка под Toolbar Т.е. хочется под тулбар подложить explorer-vista-style, мутно-зелено-синий градиент. Решение для классич.стиля тулбара есть, но нужно именно под Windows-стилями включенными сделать. Собственно это если вдруг знаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2010, 14:04 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дык, целый выходной угробил. Попробуем приложить чего получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2010, 00:08 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Эге, приложить получилось наконец, слава те... Теперь не жалко потратить чуть времени на описание: Бенедиктотличие в отрисовке между кодом, приведённым Antonariy-ем ( EasySplitter ) и примером ViewEx в том, что MFC-шная реализация (класс CSplitterWnd, см. WINSPLIT.CPP, если есть исходники MFC) 1) рисует на DC окна, а не экрана. Ну вот, родил, рисуем на DC контейнера, естественно координаты пришлось пересчитывать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
3) не уверен, что надо обрабатывать очистку фона, попробуйте в SubclsMe_EraseBackground возвращать и True, и False, если разницы нет, выкиньте; Смысл SetBkColor здесь не очень понимаю, но оставил, раз вставил... Бенедикт2) на время таскания перемычки снимает стиль окна WS_CLIPCHILDREN, чтобы рисовать поверх всех дочерних окон. Да, добавил, иначе оно под низ рисует, все сработало. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Исправил мелкий баг: при нажатии мышкой на разделителе после нажатия но до начала движения курсор разделителя не отображается Код: plaintext 1. 2. 3. 4. 5.
4) сабклассинг выкинуть не получится, так как надо обрабатывать потерю захвата мыши (capture). Здесь не понял об чем речь, фактически я его выкинул. Ну, скажем так, конкретно в примере от Antonariy мне не нравится, что движение мыши стопорится границами формы. У меня в конкретном приложении этого тьфу-тьфу автоматически не происходит, видимо потому что сабклассинг формы таки используется на предмет ограничения ее размеров, причем минимальные высота/ширина формы находятся в динамической зависимости от текущей ширины элементов, разделяемых сплиттером, пытаться вдумываться в это уже неохота. Собственно все приложено целиком выше. ================================== Но, в своем конкретном примере столкнулся с гораздо более сложным подвохом. Все сделал как описано, а на TreeView иногда глючит. Голову ломал долго. Дело в том что я использую для Treeview стиль Or TVS_EX_FADEINOUTEXPANDOS У меня разделяются Treeview и назовем так ТО_ЧТО_СПРАВА Картинка (которая Splitter) берет на себя фокус когда делаешь на ней Mouse_down (tabstop=false естественно роли не играет) При этом если фокус стоял на TreeView, то Treeview теряет фокус, механизьм фейдера срабатывает и если шустрый юзер резво двигает палку в сторону TreeView, то он будет наблюдать спецэффекты с разделителем в самом лучшем и непотребном виде, ибо в теч. 2сек работы фейдера перерисовка Treeview идет непрерывно и плевать ему на отмену стилей нашей картинки-разделителя. Одним из способов решения конечно был отмена фейдера, но стиль этот мне пришелся по душе (к хорошему быстро привыкаешь). Пытался отменять этот стиль временно по аналогии со стилем разделителя (т.е. по событию mouse_down до наступления mouse_up). Не помогло, ибо механизм запускается еще до mouse_down и отмены уже запущенного механизма не происходит. Все же нашел способ извратиться: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
На самом деле при большом желании ситуацию воспроизвести все же возможно. Например, (надо делать быстро) из TreeView переходим в другой контрол и не мешкая задвигаем разделитель в TreeView. Но это малореальные ситуации, и потом никак не приводит к вылету программы и прочим серьезным последствиям, поэтому думаю считать вопрос решенным и от фейдера не отказываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2010, 01:10 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Дмитрий77, по splitter-у пока прочёл по диагонали, но есть замечания: 1) SetBkColor необходим, иначе XOR будет происходить с выбранным сейчас в контексте цветом фона, что есть величина случайная. Если сейчас выбран чёрный, разделителя просто не будет видно. 2) Сабклассинг нужен для отлова потери захвата (capture) мыши. Иногда он теряется (пример - пользователь нажал Ctrl+Esc), причём в программу не приходит при этом стандартных мышиных сообщений. Хорошо себя ведущий элемент управления обязан отлавливать потерю захвата. (Можно поллинг GetCapture() делать, но это некрасиво.) 3) Фокус - в MFC явно прописаны, дуплетом, SetCapture(); SetFocus(); при начале таскания. То есть фокус с текущего элемента управления уходит. Можно на это ориентироваться, можно нет, но такова вот стандартная реализация. 4) У меня мусор в виде ClipControls = False оставался, уберите, если ещё не убрали. Остальное пока не смотрел. По теме тулбара. Опять не вчитывался (увы-увы), но как-то показалось, что начали с градиентной заливки, кончили почему-то прозрачностью. 1) Висты у меня нет, поэтому вопрос - с помощью Theme Explorer или функции GradientFill() можно получить желаемую картинку? 2) "Прозрачность". Когда-то, кажется, была в VBPJ статья. На C пример описан здесь , куда-то пропавший из статьи код прикладываю, смысл: ReBar, в нём band(-ы) с битмапной подложкой, в band-е toolbar со стилем TBSTYLE_FLAT. Если я правильно понял, что требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2010, 17:12 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
БенедиктДмитрий77, 2) Сабклассинг нужен для отлова потери захвата (capture) мыши. Иногда он теряется (пример - пользователь нажал Ctrl+Esc), причём в программу не приходит при этом стандартных мышиных сообщений. Хорошо себя ведущий элемент управления обязан отлавливать потерю захвата. (Можно поллинг GetCapture() делать, но это некрасиво.) пример - пользователь нажал Ctrl+Esc да, действительно глючит причем если это сделать то дальнейшие мелкие глюки с перерисовками будут продолжаться. С одной стороны ерунда: я бы никогда не додумался на это нажимать при таскании, пользователь еще может например рубильник компьютера из розетки вынуть и много чего еще. Но с другой стороны: ну да. Но как вы сами отметили сабклассинг у вас заумный. Если я правильно понял, то нужно что-то типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
1) Я так и не понял что есть НЕЧТО: форма, PictureSplitter... 2) Он скорее всего должен запускаться не по Form_Load и жить до конца работы проги. А видимо стартовать по Mouse_down и принудительно выполнять Mouse_Up, т.е. возвращать стиль в норму и стирать сплиттер-картинку. Ну т.е. потеря захвата эквивалентна коду Mouse_up В общем не дано мне с ходу понять чего делать, ваш вариант в силу накрученности понятно брать не хочу не буду (и не сумею, круто оч-чень). А у меня там всего лишь Setup-форма, user ее один раз может подрегулирует... Есть правда еще одно Aplication где я бы все это применил, но там уже все эти взаимные перемещения ListView/Treeview уже давно прописаны на VB по-детски, не рискнул бы с ходу взять все и перекраивать, все размеры, все координаты,вся идеология при таких заменах сразу едет... Бенедикт3) Фокус - в MFC явно прописаны, дуплетом, SetCapture(); SetFocus(); при начале таскания. То есть фокус с текущего элемента управления уходит. Можно на это ориентироваться, можно нет, но такова вот стандартная реализация. Просто "снимает стиль окна WS_CLIPCHILDREN, чтобы рисовать поверх всех дочерних окон" хорошо тогда, когда дочернее окно "не рыпается",любой рефреш дочернего окна смажет этот сплиттер кот. поверх а фейдер, это когда Treeview в стиле Explorer и при уходе фокуса треугольнички(кот. вместо плюсиков) медленно исчезают, соотв. TreeView автоперерисовывается. Но кстати если смотреть на висте в стандартный проводник, то фокус не уходит, хотя... там всегда непрерывная перерисовка и галка (обсуждали недавно) роли не играет. БенедиктПо теме тулбара. 1) Висты у меня нет, поэтому вопрос - с помощью Theme Explorer или функции GradientFill() можно получить желаемую картинку?. Так Win 7 в плане "красивостей" вроде то же самое. Увы, увы... с Theme Explorer удалось нашаманить только вот это Код: plaintext 1.
Если есть какие-то наметки, можно пошаманить, но нет уверенности что этот тулбар это именно "стиль". Дело в том, что он используется только в окнах Explorer. И еще в двух "родных" приложениях: Windows Mail и Fax and Scan. Причем в этих двух цвет темно синий а не мутно -зеленый. Конечно, если это "стиль", то правильнее научиться говорить "сим-сим откройся", чем писать новую книгу по HDC-магии и т.п. Но чтобы подбирать волшебное слово надо хотя бы точно знать что оно есть в словаре в принципе. Реально рабочее красивое решение http://www.vbforums.com/showthread.php?t=381167 при включенных стилях не работает (а именно ради стилей и стараемся, без стилей такого "не положено"). Бенедикткончили почему-то прозрачностью Потому что если тулбар прозрачный, то под него хоть статическую картинку можно подложить (наверное). Я вертел долго этот ControlSpyV6, смотрел на эти планеты на черном фоне, но воспроизвести этот TB_TRANSPARENT у меня нормально не получилось даже через API-тулбар, а речь идет-таки о доработке VB-toolbar. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2010, 21:15 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
> Автор: Дмитрий77 > С одной стороны ерунда: я бы никогда не додумался на это нажимать при таскании, пользователь еще может например > рубильник компьютера из розетки вынуть и много чего еще. Я этим частенько пользуюсь, потому что по другому не получается "выйти" из режима таскания. :) Вернее это самый быстрый способ выйти из режима таскания :) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2010, 10:15 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Игорь Горбонос, да нет, правы конечно не обязательно ctrl+esc можно alt+tab, или напр. какое-нибудь окно всплыло внезапно, ну скажем реклама антивируса авира на бесплатной версии. пока просто не понимаю как это по-простому сделать, чего и как сабклассить (я выше сформулировал свои сомнения, кот. по делу вопроса) >1) Я так и не понял что есть НЕЧТО: форма, PictureSplitter... >2) Он скорее всего должен запускаться не по Form_Load и <не должен>жить до конца работы проги. А видимо стартовать по Mouse_down и принудительно выполнять Mouse_Up, т.е. возвращать стиль в норму и стирать сплиттер-картинку. Ну т.е. потеря захвата эквивалентна коду Mouse_up т.е. пример есть, но оч. крутой, если как-то по-простому разжуете, то думаю осилю ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2010, 11:45 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
> Автор: Дмитрий77 > т.е. пример есть, но оч. крутой, если как-то по-простому разжуете, то думаю осилю К сожаленю, я глубоко не вникаю в код(не хватает времени ) И о каком из примеров идет речь? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2010, 12:07 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
Игорь Горбонос, Критикуется Бенедиктом "моя" продукция (то что сделал из примера Antonariy с учетом примера Бенедикта) EasySplitter_Code_Vista.zip Сабклассинг я благополучно проигнорировал (речь о том что не надо игнорировать) Пример нужного сабклассинга (думаю ключ в слове WM_CAPTURECHANGED) в примере Бенедикта, но как отмечает сам автор сабклассинг там навороченно излишне сложен Project2.rar На время таскания перемычки с контейнера (который сплиттер) "снимается стиль окна WS_CLIPCHILDREN, чтобы рисовать поверх всех дочерних окон" основная беда, когда сплиттер потерял захват мыши (случайно) даже не в том, что остатки разделителя-картинки виднеются на экране какое-то время, пока не "подергали туда-сюда", а в том, что WS_CLIPCHILDREN не возвращается назад, в норм. условиях он возвращается назад по событию mouse_up. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Сабклассинг думаю должен востолнять это восстановление стиля по WM_CAPTURECHANGED Т.е. задача придумать простой сабклассинг и вставить в первый пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2010, 12:39 |
|
Взаимное положение ListView/Treeview
|
|||
---|---|---|---|
#18+
держи :) Я добавил модуль для сабклассинга. сюда добавил перехват сообщений: Код: plaintext 1. 2. 3. 4.
Посмотри и допиляй как тебе нужно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2010, 14:16 |
|
|
start [/forum/search_topic.php?author=lapochka2382&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 440ms |
total: | 616ms |
0 / 0 |