Типы и классы
От: Kitsune  
Дата: 15.07.03 06:04
Оценка:
Здравствуйте!

Вот проблема:

class CTimer
{
//cut...
VOID CALLBACK process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
};


VOID CALLBACK process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
{
//cut...
}


CTimer::CTimer(int id, int precision, int type, HWND hDlg)
{
//cut...

timeSetEvent(precision, precision, process, (DWORD)hDlg, type); //Вот здесь. Не нравится её мой process, объявленный внутри класса...

//cut...
};

Выдаёт на той строчке:
C:\work\dev\kn_editor\timer.cpp(37) : error C2664: 'timeSetEvent' : cannot convert parameter 3 from 'void (unsigned int,unsigned int,unsigned long,unsigned long,unsigned long)' to 'void (__stdcall *)(unsigned int,unsigned int,unsigned long,unsigned long,unsigned long)'
None of the functions with this name in scope match the target

Что же делать? Подскажите, пожалуйста.

Заранее спасибо,
Kitsune
Re: Типы и классы
От: Всеволод Россия  
Дата: 15.07.03 06:28
Оценка:
Здравствуйте, Kitsune, Вы писали:

K>Здравствуйте!


K>Вот проблема:


K>class CTimer

K>{
K> //cut...
K> VOID CALLBACK process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
K>};


K>VOID CALLBACK process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)

K>{
K> //cut...
K>}

А если вот так:
class CTimer
{
    //cut...
    VOID CALLBACK process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
};

VOID CALLBACK CTimer::process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
{
    //cut...
}
Re: Типы и классы
От: Bell Россия  
Дата: 15.07.03 07:04
Оценка:
Здравствуйте, Kitsune, Вы писали:

K>Здравствуйте!


K>Вот проблема:


K>class CTimer

K>{
K> //cut...
K> VOID CALLBACK process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
K>};

Во-первых:

K>VOID CALLBACK CTimer::process(UINT nTimerId, UINT msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)

K>{
K> //cut...
K>}

K> timeSetEvent(precision, precision, process, (DWORD)hDlg, type); //Вот здесь. Не нравится её мой process, объявленный внутри класса...


K> //cut...

K>};

еще бы понравилось. Функция-член неявно принимает дополнительный параметр — this, а посему ее тип отличается от типа аргумента, принимаемого timeSetEvent.
Выход — сделать CTimer::process static. И вообще — воспользуйся поиском, эта проблема обсуждалась уже много раз.
Любите книгу — источник знаний (с) М.Горький
Re[2]: Типы и классы
От: Kitsune  
Дата: 15.07.03 13:03
Оценка:
B>еще бы понравилось. Функция-член неявно принимает дополнительный параметр — this, а посему ее тип отличается от типа аргумента, принимаемого timeSetEvent.
B>Выход — сделать CTimer::process static. И вообще — воспользуйся поиском, эта проблема обсуждалась уже много раз.

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.