Сообщение с таймаутом, поверх всех окон, и не блокируя поток

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение с таймаутом, поверх всех окон, и не блокируя поток

Сообщение Eugenio » 13.12.2005 (Вт) 14:10

1. Есть в Windows "стандартная возможность" вывести сообщение с таймаутом?
Как-то раньше обходился встроенными функциями VB да еще API вроде MessageBox, а тут нужен таймаут, да еще и:
2. Не блокировать основной поток
Последний раз редактировалось Eugenio 13.12.2005 (Вт) 16:13, всего редактировалось 1 раз.
Есть ли у меня вопрос? У меня всегда есть вопрос

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.12.2005 (Вт) 16:09

А сделать свою форму для вывода сообщений и повесить на неё таймер в данном случае немреминимо?
Изображение

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 13.12.2005 (Вт) 16:13

keks-n писал(а):А сделать свою форму для вывода сообщений и повесить на неё таймер в данном случае немреминимо?

Не блокируя поток? :)
Не понимаю, поясни
Есть ли у меня вопрос? У меня всегда есть вопрос

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.12.2005 (Вт) 16:23

Form1.Show vbModelles, Me
Lasciate ogni speranza, voi ch'entrate.

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 13.12.2005 (Вт) 16:36

alibek писал(а):Form1.Show vbModelles, Me

Так если я начну ожидание события (таймаута) прямо в Form_Load, или Form_Activate, разве поток не будет ждать?
Есть ли у меня вопрос? У меня всегда есть вопрос

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.12.2005 (Вт) 16:40

А ты его не жди там.
Ты там взводи флаг, а ожидай в таймере.
Lasciate ogni speranza, voi ch'entrate.

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 13.12.2005 (Вт) 16:49

alibek писал(а):А ты его не жди там.
Ты там взводи флаг, а ожидай в таймере.

Так ведь в принципе без разницы, где - ждать вообще не хотелось бы!
Есть ли у меня вопрос? У меня всегда есть вопрос

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.12.2005 (Вт) 17:04

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

Ваще, если таймер не нравится делай CreateThread, компились в P-код и выполняй шо хочешь, без заморозки основного потока.
Изображение

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 13.12.2005 (Вт) 17:35

keks-n писал(а):Ваще, если таймер не нравится делай CreateThread, компились в P-код и выполняй шо хочешь, без заморозки основного потока.

Насчет потоков в VB не все так просто, как тебе кажется.
Изменю вопрос, спрошу по поводу thread'ов:
не придумал я что-то, как передать в ThreadProc что-нибудь полезное.
Тут без выделения памяти в куче не обойтись?
Нет у кого примера передачи параметров во ThreadProc?
Есть ли у меня вопрос? У меня всегда есть вопрос

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.12.2005 (Вт) 18:01

А ты через ActiveX EXE делай, Тёмыч линку на пример от мелко-мягких давал. Там после CreateObject выполняешь метод класса с передачей параметров.
А по поводу "не всё так просто, как тебе кажется" - я с месяц пропарился, потом плюнул и начал по поводу ActiveX EXE думать...
Изображение

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 13.12.2005 (Вт) 18:35

Чертовщина какая-то. Попытался все-таки написать с ипользованием GlobalAlloc и CreateThread. В режиме отладки все работает.
После сборки -
Project.exe выполнило недопутимую операцию...
Есть ли у меня вопрос? У меня всегда есть вопрос

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.12.2005 (Вт) 21:37

В Native-коде работать нихрена не будет :(
Компились в Р-код
Изображение

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 15.12.2005 (Чт) 18:40

keks-n писал(а):В Native-коде работать нихрена не будет :(
Компились в Р-код

Я читал твой пост про P-код, провбовал - все равно валится...
Есть ли у меня вопрос? У меня всегда есть вопрос


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

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

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

    TopList