Unload

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Unload

Сообщение DVV » 03.11.2004 (Ср) 22:33

Почему когда я выгружая форму(главную) unload form1 у меня не останавливается выполнение.(т.е программа всё равно работает)
Vadim

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.11.2004 (Ср) 22:37

Есть какая-то ещё процедура, выполняющаяся в это время. Для остановки надо ещё End написать или (если есть бесконечные циклы), организовать выход из них при выгрузке программы. Подробнее? Расскажите о своей программе больше.

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 03.11.2004 (Ср) 22:39

Да процедура есть,у меня часы,Кроме того возникает одна проблемка,при выгрузке программы из трея,она иногда не выгружается,
хотя значок в трее исчезает,повторяю иногда(не всегда).В чём дело?
Vadim

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.11.2004 (Ср) 22:48

Функция убирания иконки из трея используется? Как вообще в трей пихается иконка? Модулем или ActiveX контролом?

Надо в процедуру часов поместить код вроде:
Код: Выделить всё
If pUnload Then Exit Sub


А в Form_Unload:
pUnload=True

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 03.11.2004 (Ср) 23:02

Я использую модуль,Ф-я убирания использутся,
Api ф-я Notifyicon (чё-то типа этого).
Vadim

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.11.2004 (Ср) 23:06

Ага, понятно... Точно причину не скажу, сам копаю :)

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 03.11.2004 (Ср) 23:14

В смысле сам не знаешь?
Vadim

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.11.2004 (Ср) 23:19

Насчёт выгрузки из трея не знаю...
Последний раз редактировалось Amed 03.11.2004 (Ср) 23:24, всего редактировалось 1 раз.

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 03.11.2004 (Ср) 23:22

Да!На счёт этого глюка.
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 04.11.2004 (Чт) 0:08

Может кто-нибудь знает в чём тут дело..!!
Vadim

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

Сообщение Demonx » 04.11.2004 (Чт) 0:12

WM_PAINT трэю надо послать чтобы иконка выгрузилась)
Изображение

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 04.11.2004 (Чт) 15:47

Какие ещё есть варианты!?
Vadim

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 04.11.2004 (Чт) 15:57

Лучше выгружать все формы так:

Код: Выделить всё
    For i = Forms.Count - 1 To 0 Step -1
        Unload Forms(i)
    Next


А насчтё трея, я не так выгружаю прогу из трея (имеется в виду WM_PAINT )

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 04.11.2004 (Чт) 16:16

DVV писал(а):Да процедура есть,у меня часы,Кроме того возникает одна проблемка,при выгрузке программы из трея,она иногда не выгружается,
хотя значок в трее исчезает,повторяю иногда(не всегда).В чём дело?



Если пользуеш таймеры то
перед выгрузкой форм их надо остановить.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 04.11.2004 (Чт) 16:24

codemaster писал(а):
DVV писал(а):Да процедура есть,у меня часы,Кроме того возникает одна проблемка,при выгрузке программы из трея,она иногда не выгружается,
хотя значок в трее исчезает,повторяю иногда(не всегда).В чём дело?



Если пользуеш таймеры то
перед выгрузкой форм их надо остановить.

Первый раз слышу, что после выгрузки формы - таймера ещё работают. Это как?

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 04.11.2004 (Чт) 16:52

Для удаления иконки из трея надо посылать
Код: Выделить всё
Shell_NotifyIcon NIM_DELETE, mvNotifyIcon
'Где mvNotifyIcon, ваш тип NOTIFYICONDATA_TYPE


А вот с выгрузкой форм тебе Sirik все отлично объяснил.
Другой вопрос, если subclassing используется или callback.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 04.11.2004 (Чт) 17:18

Sirik писал(а):Первый раз слышу, что после выгрузки формы - таймера ещё работают. Это как?


Здравстуйте! Приехали!

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 04.11.2004 (Чт) 17:22

codemaster писал(а):
Sirik писал(а):Первый раз слышу, что после выгрузки формы - таймера ещё работают. Это как?


Здравстуйте! Приехали!


Что значит приехали ???

Если Объект (в частности таймер) находится на форме и когда ты форму выгружаешь, то автоматически выгружаются все объекты, компоненты и т.д. т.п., которые расположены на форме.
Это же тривиально.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 04.11.2004 (Чт) 17:28

Sirik писал(а):Если Объект (в частности таймер) находится на форме и когда ты форму выгружаешь, то автоматически выгружаются все объекты, компоненты и т.д. т.п., которые расположены на форме.
Это же тривиально.


Почитай книжки. :P :P :P :P

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 04.11.2004 (Чт) 17:30

Почитай книжки.

Если такой умный, назови где про это написано.

И вобще, форум это не место выяснения отношений - надо человеку помогать :evil:

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 04.11.2004 (Чт) 20:28

Вообще-то во всех книжках(в которых находил про это :D ) написано про состояния формы:
1)не загружена
2)загружена, не показана
3)загружена, показана
4)загружена, не показана
5)выгружена

И во всех встречал предупреждение о том, что Unload (относится ко всем объектам) не приводит к выгрузке объекта, пока на него есть какие-то ссылки.
В данном случае Unload переводит форму из 3)-го состояния в 4)-е, не более.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.11.2004 (Чт) 20:35

Вот наивные люди... Короче: первым делом в событии Form_Unload() должны стопиться все таймеры, если они есть на форме вообще. Иначе процесс выгрузки прервется внезапно сработавшим таймером, и форма нихрена не выгрузится. Сколько раз уже на такое напарывались. Лучше всего это реализуется следующим кодом:
Код: Выделить всё
private sub Form_Unload(...)
dim V as Control
for each V in me.controls
if typeof v is timer then v.enabled = false
next v
doevents
...

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 04.11.2004 (Чт) 20:38

Да..А ... что значит.
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 04.11.2004 (Чт) 20:54

Хочу сказать ,что токое происходит(это глюк) ,если я использую postmessege и setforeground
для всплывающего меню!
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 04.11.2004 (Чт) 22:34

Ну так что можно сделать?
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 05.11.2004 (Пт) 20:27

Не пойму в чём дело,что ни кто с этим не сталкивался!Не должно же быть так.
Vadim

DVV
Бывалый
Бывалый
 
Сообщения: 212
Зарегистрирован: 02.09.2004 (Чт) 21:03
Откуда: Уфа

Сообщение DVV » 05.11.2004 (Пт) 23:09

И тихо сам с собою я....
после моих тестов я понял что виноват setforeground(hwnd).Глюк был тогда,когда запускалась у меня программа свёрнутой.
Help!
Vadim


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron