Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сделать в ms vb6 асинхронные события? 
:(
    Опции темы
leniviy
Дата 9.7.2004, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



надо, чтобы событие вызывалось аналогично таймеру или ExecuteComplete в ADO.
PM MAIL   Вверх
Guest
Дата 9.7.2004, 22:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











leniviy, поподробнее пожалуйста

  Вверх
leniviy
Дата 11.7.2004, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



Конкретно, мне надо реализовать в проге событие ApplicationOnIdle ( по аналогии с VCL ). Я пробовал ставить хук на WH_FOREGROUNDIDLE из callback ф-ции вызывать событие, но при этом появились всякие глюки. например, при отладке зависает.
PM MAIL   Вверх
arilou
Дата 15.7.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Вообще, VB - это однопоточный язык, и там многое сделано для того, чтобы _не_ дать программеру его обмануть smile.gif

Можно сделать ActiveX биб-ку, в которой будет метод для установки указателя на callback. Этот метод будет запускать Timer, и по таймеру дергать callback.

В VB в модуле определяешь callback-функцию, и передаешь ее через AddressOf
Что-то типа:

Код

sub CallbackProc()
 MsgBox "Callback"
end sub

dim myTmr as MyTimer.MyTimer

myTmr = new MyTimer.MyTimer
myTmr.Start(AddressOf CallbackProc)


Думается мне, что в методе CallbackProc лучше брейкпоинтов не ставить wink.gif


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
boevik
Дата 15.7.2004, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Цитата
Код
myTmr.Start(AddressOf CallbackProc)

Как запустить функцию CallbackProc из Start в классе MyTimer?


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
arilou
Дата 15.7.2004, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Цитата(boevik @ 15.7.2004, 13:15)
Цитата
Код
myTmr.Start(AddressOf CallbackProc)

Как запустить функцию CallbackProc из Start в классе MyTimer?

Сорри, я не добавил, что ActiveX биб-ку надо писать на ATL C++ и использовать там Win API:

Вот кусок кода:

Код


MyTimer *current;

STDMETHODIMP MyTimer::Start(VARIANT *callback)
{
m_hTimer = SetTimer(NULL, TIMER_EVENT_ID, nTimerSpan, (TIMERPROC)TimerProc);
current = this;
m_cbk = (CALLBACKFUNC*)callback->byref;

return S_OK;
}

void MyTimer::CallBack()
{
m_cbk();
}

VOID CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
current->CallBack();
}




--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
leniviy
Дата 16.7.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



Пожалуй, это слишком сложно. Раз так, возьму VB'шный таймер и буду из его события вызывать свои
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.