Порядок окон

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Порядок окон

Сообщение Alexanbar » 20.05.2006 (Сб) 22:14

ТРебуется одно окно отображать всегда поверх другого. Причём таких пар окон может быть несколько.

!! НЕ поверх всех, а поверх определённого окна. Естественно, если это вообще возможно.

Исходные данные: hwn1,hwnd2

Насколько я понимаю, SetWindowPos может поместить одно окно после другого (вот только будет ли этот порядок сохраняться при появлении новых окно?) или, скажем, поверх всех.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.05.2006 (Сб) 22:20

Оба окна твои?
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.05.2006 (Сб) 23:21

tyomitch писал(а):Оба окна твои?


Если да то

Код: Выделить всё
Form2.Show , Form1


Form1 будет всегда поверх Form2
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 21.05.2006 (Вс) 0:03

Нет. Одно окно, которое д.б. поверх, моё.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 21.05.2006 (Вс) 22:54

Ну, если такое сделать нельзя, то, может быть, можно перехватить получение фокуса чужим окном?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.05.2006 (Пн) 8:40

Угу.
Это называется межпроцессный сабклассинг.
См. про расширение часов в трее.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 22.05.2006 (Пн) 14:33

межпроцессный сабклассинг


сразу скажу что на вб это вроде не возможно, но тебе поможет
http://allapi.net/vbexamples/vbexample. ... egory=MISC
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.05.2006 (Пн) 15:28

Demonx
Ты, видимо, пропустил весь текст, который шёл после отквоченных тобою слов.
На VB это возможно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 22.05.2006 (Пн) 19:44

Demonx писал(а):
межпроцессный сабклассинг


сразу скажу что на вб это вроде не возможно, но тебе поможет
http://allapi.net/vbexamples/vbexample. ... egory=MISC


В общем-то, это может, наверное, решить мою проблему. Вот только никаких сведений нет об исходном коде и условиях распространения. Да и сам разработчик ещё не понятно, где находится.

Опять же, чужие глюки могут проявиться, а я их, естественно, устранить не смогу.
Исходник бы поиметь чего-либо аналогичного.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 23.05.2006 (Вт) 3:35

Alexanbar, вот, что мне на такой вопрос посоветовали:
http://bbs.vbstreets.ru/viewtopic.php?t ... highlight=
З.Ы. если что-нить получится мне тоже будет очень интересно.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 23.05.2006 (Вт) 3:42

Лучше думать чем жевать.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Сообщение arthur2 » 04.06.2008 (Ср) 9:23

Виноват, что поднимаю такую старую тему. Случайно наткнулся на этот топик (искал субклассинг и поиском сюда выбросило)

Просто так случилось, я знаю ответ:

SetWindowLong me.hwnd, -8, anotherWin.hwnd

(-8 в своё время нашёл методом глубинного тыка, так что не знаю, как константа называется)

Первое будет всегда поверх второго (но не поверх других окон). При сворачивании второго сворачивается и первое. При разворачивании - разворачивается.

А ещё можно сделать какой-нибудь контрол SetParent в ноль, и уже его отдать чужому окну. Тогда чужое окно не будет терять фокуса при активации контрола.
Артур
 
   


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 34

    TopList  
cron