|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.09.2010, 18:51 | #11 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Используйте SetWindowLong, и то это еще не 100% гарантия, я имею ввиду параметр HWND_PARENT вроде, другие функции API не работают вообще кстати. + Еще можно ловить активацию окно А, и тогда сразу обрывать процесс, не пускать по цепочке к DefWindowProc, а слать активацию окну B.
И опять таки, возможна ситуация (осторожно магия!) когда окно A станет над B, но после активации любого из них, повторить не сможете )) обычно происходит при запуски приложения. Все из личного опыта. Сам намучался. |
25.09.2010, 20:34 | #12 |
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
Эм... Что "нет"-то? Оно и будет отдельным, только "внутри" клиентской области окна А...
А именно "поверх", чтоб в любой версии ОС работало, да ещё и чтоб при перетаскивании не дёргалось практически нереально сотворить...
I am the First of Cyber Evolution...
I am the First to Program your Future... |
25.09.2010, 20:51 | #13 | |
Форумчанин
Регистрация: 24.11.2006
Сообщений: 108
|
Перед тем как утверждать нужно сначала попробовать
Цитата:
Но даже если двигать то реализовать можно запросто. и что бы без рывков. у меня на этой основе целый ефект с прозрачностью выстроен. http://forum.sources.ru/index.php?showtopic=212857 пс. если канешно модераторы ссылку на сторонний форум не порублят |
|
25.09.2010, 20:55 | #14 |
Форумчанин
Регистрация: 24.11.2006
Сообщений: 108
|
пс. на картинке скрин сделан с севена. и в отличии от XP тут можно узнать активное или не активное окно по тени от формы. (ну и попрозрачности, но оно не так сильно бросается в глаза) у активного окна она сильно выражена а у неактивного почти нет.
посему можно заметить что окно Б не активно но находится поверх и приэтом не находится в клиенческой области формы А. |
25.09.2010, 20:55 | #15 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Блин, забыл подписаться на тему, теперь чувствую себя троллем - высказался и затех . Сейчас нет времени проверить, но как только дорвусь до флешки с проектом - попробую.
P.S. Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
25.09.2010, 21:52 | #16 |
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
Хм... Через SetWindowLong значить новому родителю дочерним не устанавливается... Интересная бага, так вот почему в МСДН написано не делать так...
Только вот всюду ли работает? И перетаскиванием придётся возиться... Это чу за Делфи такая? о__О З.Ы. Вижу что Вин7, в ней самая уродливая тень из всех что я видел... XD Хоть тему оформления вскрывай и правь...
I am the First of Cyber Evolution...
I am the First to Program your Future... |
25.09.2010, 22:00 | #17 | ||
Форумчанин
Регистрация: 24.11.2006
Сообщений: 108
|
Цитата:
Цитата:
|
||
25.09.2010, 22:19 | #18 |
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
Даже не так... SetParent ставит родителем не то что сказали, а его родителя (если есть, наверное)... А тому в свою очередь ставит окно как Child...
А SelWindowLong просто меняет как задали... Сам запутался уже... Надо наверное было не на VCL опыт ставить, а то там и так понаперекручено... %) <offtop> Ккак 2011? Ещё 2010 не кончился... А на старых мониторах чуть голову в сторону отвести - так вообще ужасть... </offtop>
I am the First of Cyber Evolution...
I am the First to Program your Future... |
25.09.2010, 22:40 | #19 | |
Форумчанин
Регистрация: 24.11.2006
Сообщений: 108
|
Цитата:
Если нужно присвоить парент да еще и на WinApi то с лихвой с этим справляется SetParent(...) из модуля Windows и работать она будет в любом случаи. А вот если у главной формы включен режим MDI (если брать стандартную реализацию VCL) то парен нужно присваевать не главной формы а ClientHandle. Это контейнер создается специально в форме. чтобы дочерние формы не перекрывали менюшки и панельки (если таковы будут). пс. я просто не въехал в проблему которую описал BOBAH13. Объясните более популярно что за проблема описана в 11 посте. <offtop>Так они в прошлом году заявление сделали что каждый год будут выпускать новую версию. </offtop> |
|
25.09.2010, 22:46 | #20 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
У меня layered окна, много окон которые должны находится как дочернии на другом. Тут и проблема, не работало никак, только как я описал. Правда, видимо тут речь не о layered окнах, наверное будет работать и как обычно, т.к. WS_POPUP + WS_EX_LAYERED ну просто нельзя как дочернии использовать, а мне вот надо было
Все же, если речь идет не о layered, тогда видимо, я не в тему написал, прошу прощения в таком случае. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сближение двух форм | CraftR14 | Общие вопросы Delphi | 8 | 20.04.2010 18:35 |
Взаимодействие форм | Anekdot | Общие вопросы Delphi | 2 | 29.01.2010 07:33 |
Нормальное сворачивание ДВУХ форм | Alex Cones | Общие вопросы Delphi | 1 | 27.07.2009 23:58 |
Взаимодействие форм | mauar | Общие вопросы Delphi | 7 | 05.05.2008 11:36 |