Поиск:

Ответ в темуСоздание новой темы Создание опроса
> таймер в OCX, как? 
:(
    Опции темы
-Sman-
  Дата 11.11.2005, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Собстно - сам вопрос в сабже.
Есть некий activeX (неоконный). В него надо добавить таймер. Но ведь для таймера используется static CALLBACK процедура. Из нее можно получить доступ к объектам класса? И есть ли хендл (HWND) у ocx?
Понимаю - вопросы глуповатые..но все же - помогите разобраться...
PM MAIL   Вверх
Dray
Дата 17.11.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

Репутация: 1
Всего: 6



Цитата(Sman @ 11.11.2005, 13:58)
И есть ли хендл (HWND) у ocx?

Например в VC++ при использовании библиотеки ATL можно выбирать флажком при создании компанента будет ли он оконным или нет. Можно использовать функцию API SetTimer.
Цитата

UINT_PTR SetTimer(          HWND hWnd,
    UINT_PTR nIDEvent,
    UINT uElapse,
    TIMERPROC lpTimerFunc
);

В первый параметр можно подстасить NULL, тогда второй будет игнорироваться.

Это сообщение отредактировал(а) Dray - 17.11.2005, 23:44


--------------------
忍者

user posted image
PM MAIL   Вверх
SeregaLBN
Дата 13.12.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



можно использовать QueueUserWorkItem
или мультимедиа таймер - timeSetEvent

но в этих обоих примерах - модуль должен собираться как многопоточный
PS: ф-ция QueueUserWorkItem - работает начиная с 2000ки
PM MAIL   Вверх
JoyEx
Дата 13.12.2005, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

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



Цитата(Sman @ 11.11.2005, 13:58)
Есть некий activeX (неоконный). В него надо добавить таймер. Но ведь для таймера используется static CALLBACK процедура. Из нее можно получить доступ к объектам класса? И есть ли хендл (HWND) у ocx?


1) Если у тебя GUI поток, то он может получить WM_TIMER, первичный поток всегда GUI даже, если у него нету окон.

2) Говоришь smile "CALLBACK процедура". А как ты передашь в неё что-то? Посмотри на нее внимательнее - HWND у тебя же NULL, но можно сделать это через глобальный указатель.

3) В первом предложении ты сам ответил на последний вопрос. smile



--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
SeregaLBN
Дата 13.12.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



SetTimer(NULL, 0, 100, MyFunc) вернёт уникальный id таймера
сохраняй его в глобальной переменной типа
Код

   typedef std::map<UINT /* timer id */, MyClass* /* this */> MAP_IdThis;
   MAP_IdThis g_map;


в MyFunc придёт этот id
ну а выбрав из g_map свой экземпляр, делаешь все что тебе требуется...

Это сообщение отредактировал(а) SeregaLBN - 13.12.2005, 20:16
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




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


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

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