Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2010, 18:51   #11
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Используйте SetWindowLong, и то это еще не 100% гарантия, я имею ввиду параметр HWND_PARENT вроде, другие функции API не работают вообще кстати. + Еще можно ловить активацию окно А, и тогда сразу обрывать процесс, не пускать по цепочке к DefWindowProc, а слать активацию окну B.

И опять таки, возможна ситуация (осторожно магия!) когда окно A станет над B, но после активации любого из них, повторить не сможете )) обычно происходит при запуски приложения.

Все из личного опыта. Сам намучался.
BOBAH13 вне форума Ответить с цитированием
Старый 25.09.2010, 20:34   #12
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Эм... Что "нет"-то? Оно и будет отдельным, только "внутри" клиентской области окна А...
А именно "поверх", чтоб в любой версии ОС работало, да ещё и чтоб при перетаскивании не дёргалось практически нереально сотворить...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 25.09.2010, 20:51   #13
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Перед тем как утверждать нужно сначала попробовать



Цитата:
А именно "поверх", чтоб в любой версии ОС работало, да ещё и чтоб при перетаскивании не дёргалось практически нереально сотворить...
Ну во первый топик стартек ясно сказал что окно двигатся не будет.
Но даже если двигать то реализовать можно запросто. и что бы без рывков.
у меня на этой основе целый ефект с прозрачностью выстроен.
http://forum.sources.ru/index.php?showtopic=212857

пс. если канешно модераторы ссылку на сторонний форум не порублят
ViktorXP вне форума Ответить с цитированием
Старый 25.09.2010, 20:55   #14
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

пс. на картинке скрин сделан с севена. и в отличии от XP тут можно узнать активное или не активное окно по тени от формы. (ну и попрозрачности, но оно не так сильно бросается в глаза) у активного окна она сильно выражена а у неактивного почти нет.
посему можно заметить что окно Б не активно но находится поверх и приэтом не находится в клиенческой области формы А.
ViktorXP вне форума Ответить с цитированием
Старый 25.09.2010, 20:55   #15
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Блин, забыл подписаться на тему, теперь чувствую себя троллем - высказался и затех . Сейчас нет времени проверить, но как только дорвусь до флешки с проектом - попробую.

P.S.
Цитата:
И думаю в проекте не используется VCL... ))
В точку.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 25.09.2010, 21:52   #16
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Хм... Через SetWindowLong значить новому родителю дочерним не устанавливается... Интересная бага, так вот почему в МСДН написано не делать так...
Только вот всюду ли работает? И перетаскиванием придётся возиться...

Это чу за Делфи такая? о__О

З.Ы. Вижу что Вин7, в ней самая уродливая тень из всех что я видел... XD
Хоть тему оформления вскрывай и правь...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 25.09.2010, 22:00   #17
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Цитата:
Это чу за Делфи такая?
Последняя... 2011. официально теперь делфю перейменовали в Delphi XE (следующая будет XE2 и тд.)
Цитата:
в ней самая уродливая тень
Тут я не спорю. ее даже тенью назвать сложно. ибо тень это то что проекцеонно повторяет объект, а это как "темное" свечение расходится во все стороны
ViktorXP вне форума Ответить с цитированием
Старый 25.09.2010, 22:19   #18
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 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...
DomiNick вне форума Ответить с цитированием
Старый 25.09.2010, 22:40   #19
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Даже не так... SetParent ставит родителем не то что сказали, а его родителя (если есть, наверное)... А тому в свою очередь ставит окно как Child...
А SelWindowLong просто меняет как задали...
Люди вы вообще о чем?
Если нужно присвоить парент да еще и на WinApi
то с лихвой с этим справляется SetParent(...) из модуля Windows
и работать она будет в любом случаи.

А вот если у главной формы включен режим MDI (если брать стандартную реализацию VCL) то парен нужно присваевать не главной формы а ClientHandle. Это контейнер создается специально в форме. чтобы дочерние формы не перекрывали менюшки и панельки (если таковы будут).

пс. я просто не въехал в проблему которую описал BOBAH13. Объясните более популярно что за проблема описана в 11 посте.

<offtop>
Цитата:
Сообщение от DomiNick Посмотреть сообщение
Ккак 2011? Ещё 2010 не кончился...
Так они в прошлом году заявление сделали что каждый год будут выпускать новую версию.
</offtop>
ViktorXP вне форума Ответить с цитированием
Старый 25.09.2010, 22:46   #20
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

У меня layered окна, много окон которые должны находится как дочернии на другом. Тут и проблема, не работало никак, только как я описал. Правда, видимо тут речь не о layered окнах, наверное будет работать и как обычно, т.к. WS_POPUP + WS_EX_LAYERED ну просто нельзя как дочернии использовать, а мне вот надо было
Все же, если речь идет не о layered, тогда видимо, я не в тему написал, прошу прощения в таком случае.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сближение двух форм 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