Проблема с PopupMenu

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

Проблема с PopupMenu

Сообщение |kerish| » 14.10.2006 (Сб) 11:12

Столкнулся с проблемой при вызове PopupMenu.

Висит иконка в трее. При клике правой кнопкой вызывается
PopupMenu и появляется менюшка.

Но, в программе через определенный промежуток времени выполняется ресурсоемкая функция и во время выполнения этой функции и клике по иконке в трее меню не появляется, а появляется только после выполения этой ресурсоемкой функции.

Пробовал расставлять DoEvents-ы - не помогло.

Как можно решить проблему?

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

Сообщение tyomitch » 14.10.2006 (Сб) 11:52

вынести ресурсоемкую функцию в отдельный поток. Гы-гы.
Изображение

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 14.10.2006 (Сб) 12:01

tyomitch Больше нет идей?

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

Сообщение tyomitch » 14.10.2006 (Сб) 12:07

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

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 14.10.2006 (Сб) 12:25

Дело в том, что всё остальное, кроме всплытия меню работает нормально при работе функции. Не работает только PopupMenu.
Неужели только из-за этого мне придется выносить функцию в отдельный поток?

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 15.10.2006 (Вс) 10:32

Попробывал выносить функцию в отдельный поток.

Функция начинает работать и через некоторое время вываливается сообщение о критической ошибке или сообщение Run-Time Error (-ffffff).
:(

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Сообщение NashRus » 15.10.2006 (Вс) 13:33

и под IDE и в EXE ?

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 15.10.2006 (Вс) 14:40

NashRus И там и там вываливается "Приложение выполнило недопустимую опреацию, и. т. д"

Думаю из-за того, что из этой "отдельно-поточной" функции вызываются другие публичные функции не выделенные в отдельный поток.

Короче говоря вариант вынесения в отдельный поток думаю мне не подойдет.

Единственное, что мне нужно это, чтобы во время работы этой ресурсоёмкой функции можно было нормально выполнить PopupMenu в трее, что пока сделать не могу.

Как вариант думаю сделать своё меню-форму, хотя был бы очень рад не изворачиваться, а реализовать нормальный вызов PopupMenu.

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 15.10.2006 (Вс) 14:41

Думаю помогло бы знать API-функцию подобную PopupMenu.

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Сообщение NashRus » 15.10.2006 (Вс) 14:53

ну так TrackPopupMenu ?

я сейчас тоже на ВБ5 выношу кое-что в CreateThread. и вызываю там по одной функции WinAPI после чего вызываю событие объекта в функции - потоке. указатель на созданный ранее объект предварительно передаю в функцию-тред.
как у Эпплмана. вроде в EXE работает.
интересно, есть положительный опыт такого юзанья на большом количестве инсталляций ?


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

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

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 3

    TopList