always on desktop

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

always on desktop

Сообщение Лёха_Virus » 14.08.2004 (Сб) 19:25

Здраствуйте!
Подскажите, как сделать так, чтобы окно было всегда на десктопе, не сворачивалось и не перекрывала других окон?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 14.08.2004 (Сб) 19:29

Не пробовал, но:
Код: Выделить всё
Private Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Long

private sub Form_Load()
SetParent hWnd,GetDesktopWindow
end sub
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 14.08.2004 (Сб) 19:33

Попробовал, не получилось.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение tyomitch » 14.08.2004 (Сб) 19:51

Always-on-top, что ли, надо? Или что?

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

Сообщение GSerg » 14.08.2004 (Сб) 19:59

А если [edit]установить[/edit] WS_CHILD, то результат приколен :) Хотя и не тот.
Последний раз редактировалось GSerg 14.08.2004 (Сб) 21:27, всего редактировалось 1 раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 14.08.2004 (Сб) 21:23

tyomitch писал(а):Always-on-top, что ли, надо? Или что?

надо always-on-DESKtop :). т.е. как элемент рабочего стола. всегда на нём висит, и ничего (кроме рабочего стола) не закрывает собой.

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

Сообщение GSerg » 14.08.2004 (Сб) 21:25

Ну так установи WS_CHILD :) Правда, сворачиваться будет всё равно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение tyomitch » 14.08.2004 (Сб) 22:09

Иди на vbrussian.com, там был пример

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 15.08.2004 (Вс) 19:12

tyomitch писал(а):Иди на vbrussian.com, там был пример

хз, не нашёл там...
мож кто знает как запретить окну сворачиваться? то же самое получится в общем то. т.е. например при нажатии на кнопку "свернуть все окна" форма не сворачивалась бы.

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

Сообщение GSerg » 15.08.2004 (Вс) 19:50

Тьфу ты :)
Просто поставь BorderStyle = 0.

Нееее, пора с асмом завязывать :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение tyomitch » 15.08.2004 (Вс) 20:19

Лёха_Virus писал(а):
tyomitch писал(а):Иди на vbrussian.com, там был пример

хз, не нашёл там...

Не помню точно, где я его надыбал, но вот он...
Дата скачки - январь 2001
Вложения
AppBar.rar
(20.97 Кб) Скачиваний: 125

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 16.08.2004 (Пн) 18:26

я решил эту пробему оч просто:
по таймеру отслеживаю windowstate и если окно сворачивается - я его обратно разворачиваю...
хотя как тока щас выяснил оно всё-же может перекрывать окна... мож ей enabled=false поставить

а в примерчике я к сожалению такой фичи не нашёл... хотя примерчик очень неплохой...

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

Сообщение tyomitch » 16.08.2004 (Пн) 18:47

Лёха_Virus писал(а):а в примерчике я к сожалению такой фичи не нашёл... хотя примерчик очень неплохой...

Какой именно - чтобы окна не перекрывались? Свернуть его уже нельзя :-)
Ты его пробовал к краю экрана придочить-то? Придоченный, он ничего не перекрывает.

По таймеру отслеживать WindowState - последнее дело. Лучше в обработчик _Resize это пропиши.

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 17.08.2004 (Вт) 10:11

Какой именно - чтобы окна не перекрывались? Свернуть его уже нельзя :-)

это верно :)
Ты его пробовал к краю экрана придочить-то? Придоченный, он ничего не перекрывает.

да, но ведь и его окна не перекрывают :)

По таймеру отслеживать WindowState - последнее дело. Лучше в обработчик _Resize это пропиши.

ок, попробуем :)

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

Сообщение tyomitch » 17.08.2004 (Вт) 11:22

Может быть, тебе надо SetWindowPos(HWND_BOTTOM)?

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 17.08.2004 (Вт) 16:33

tyomitch писал(а):Может быть, тебе надо SetWindowPos(HWND_BOTTOM)?

да, наверно это то что надо. но когда я делаю так:

Код: Выделить всё
SetWindowPos Me.hwnd, HWND_BOTTOM, 100, 100, 200, 200, SWP_SHOWWINDOW or SWP_NOACTIVATE or SWP_NOMOVE


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

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

Сообщение tyomitch » 17.08.2004 (Вт) 16:40

Ну тогда в Form_Click прячь его обратно под низ :-)

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 17.08.2004 (Вт) 19:19

это хороший вариант, но проблема в том, что у меня на форме "живого места" нет, одни контролы (и многа) поэтому по клику не получается... по готфокус тоже... придётся всё-таки наверна таймер фтыкать... а жаль

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

Сообщение tyomitch » 17.08.2004 (Вт) 19:26

Лёха_Virus писал(а):это хороший вариант, но проблема в том, что у меня на форме "живого места" нет, одни контролы (и многа) поэтому по клику не получается... по готфокус тоже... придётся всё-таки наверна таймер фтыкать... а жаль

Да нет, и без таймера удастся... Лови Form_Activate и WM_ACTIVATEAPP.

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 17.08.2004 (Вт) 19:46

интересная вещь!!!
сделал main.ZOrder (0) и оно ваще терь не вылазит наверх...

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 17.08.2004 (Вт) 20:51

народ, скажите! при нажатии на кнопку "свернуть все окна" моё окно сворачивается т.к. процедура form_resize не затрагивается, где у меня прописано:

If main.WindowState <> 0 Then main.WindowState = 0

и в 98 винде окно сворачивается (а в ме нет :))

как можно защитить окно от сворачивания по этой кнопке?
в принципе можно опять же по таймеру, но это же косяк

пс. с таймером ничего не вышло. при нажатии на эту блин кнопку виндовстате не меняется даже. как был 0 так и есть. ну и соответственно установление виндовстайт в 0 ничего не даёт.


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

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

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

    TopList