Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2010, 11:21   #1
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

Код:
int CVoIPServ::MixStart(unsigned int Delay,unsigned int Resolution)

//------------------- расчет возможной точности из мсдн скопированный 

this->mmTimerID = timeSetEvent(
        Delay,                    // delay
        wTimerRes,                     // resolution (global variable)
		(TIMECALLBACK*)(&CVoIPServ::Mix)/*OneShotCallback*/,               // callback function
        (DWORD)this->mmTimerID,                  // user data
        TIME_PERIODIC );                // periodic  timer event
    if(! mmTimerID)
        return 1;
пробую передать функцию класса третьим аргументом
прототип функции:
Код:
void CALLBACK CVoIPServ::Mix(UINT TimerID, UINT msg, DWORD dwUser, 
DWORD dw1, DWORD dw2)
при этом
Цитата:
MMRESULT timeSetEvent(
UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD_PTR dwUser,
UINT fuEvent
);

lpTimeProc

Pointer to a callback function that is called once upon expiration of a single event or periodically upon expiration of periodic events. If fuEvent specifies the TIME_CALLBACK_EVENT_SET or TIME_CALLBACK_EVENT_PULSE flag, then the lpTimeProc parameter is interpreted as a handle to an event object. The event will be set or pulsed upon completion of a single event or periodically upon completion of periodic events. For any other value of fuEvent, the lpTimeProc parameter is interpreted as a function pointer with the following signature: void (CALLBACK)(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
компилятор:
Цитата:
Error 11 error C2440: 'type cast' : cannot convert from 'void (__stdcall CVoIPServ::* )(UINT,UINT,DWORD,DWORD,DWORD)' to 'TIMECALLBACK (__stdcall *)' c:\documents and settings\teks\рабочий стол\soundsolution\voipserver\voips erv.cpp 180 VoIPServer
ЗЫ: каст к лптаймкеллбак пробовал (просто дефайн указателя в примере функции TIMECALLBACK* )
прототип требуемого, Callback - _stdcall
Код:
 typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
http://www.qtforum.org/article/10419...te-timers.html
http://social.msdn.microsoft.com/for...6-2612717c7ab7
последний разговор оборвали на самом интересном месте


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

так, функция маст би статик

ЗЫ, экземпляр объекта передается через dwUser

Всем спасибо

Последний раз редактировалось Stilet; 23.07.2010 в 13:10.
Teksa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция SetFilePointer. Как расчитать адрес? как правильно передать смещение в функцию SetFilePointer? Hottabych Общие вопросы Delphi 3 07.05.2013 20:16
Как передать в функцию указатель на String avd Общие вопросы C/C++ 6 06.06.2010 17:52
Как передать в функцию параметр разных типов borispnz Общие вопросы Delphi 5 06.02.2010 08:37
передать вектор структур в функцию GroundZero Общие вопросы C/C++ 3 22.08.2009 11:23
Как передать значение переменной из функции в ACCESSе в функцию в EXCELе? musicitsme Microsoft Office Access 1 01.04.2009 10:24