![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Что я делаю неправильно? MMRESULT r =timeSetEvent( 1000, 1, mmTimerProc, NULL, TIME_PERIODIC ); void CALLBACK mmTimerProc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) { ....................................... } Выдаёт сообщение : : error C2664: 'timeSetEvent' : cannot convert parameter 3 from 'void (UINT,UINT,DWORD_PTR,DWORD_PTR,DWORD_PTR)' to 'LPTIMECALLBACK' --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
Олег М |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Попробуй
или, на худой конец
Хотя так-то всё правильно Добавлено @ 12:03 Поищи в заголовках определение LPTIMECALLBACK и проверь |
||||
|
|||||
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
первый вариант выдаёт :
error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'LPTIMECALLBACK' второй вариант выдаёт : error C2276: '&' : illegal operation on bound member function expression А что проверить в заголовках ? --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
там должен быть typedef для LPTIMECALLBACK.
Добавлено @ 12:18 У меня вижуал студии под рукой нет а то бы так сказал |
|||
|
||||
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
typedef TIMECALLBACK *LPTIMECALLBACK
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Это понятно, в хелпе есть, посмотри TIMECALLBACK Добавлено @ 12:43 У тебя mmTimerProc случайно не член класса? Если да то сделай его static |
|||
|
||||
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
static Это так? :
// в хххх.h public: static CALLBACK mmTimerProc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); // в xxxx.cpp static void CALLBACK mmTimerProc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) { // ................ } получаю: error C2664: 'timeSetEvent' : cannot convert parameter 3 from 'int (UINT,UINT,DWORD_PTR,DWORD_PTR,DWORD_PTR)' to 'LPTIMECALLBACK' ICQ есть? --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
В этом месте слово статик не надо а там оставь. И всё заработает |
|||
|
||||
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Ничего не изменилось.
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
Олег М |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
У тебя функция почему-то возвращает инт а не войд. !!!! Понятно почему -войд потерял
надо static void CALLBACK mmTimerProc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); |
||||
|
|||||
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
typedef TIMECALLBACK FAR *LPTIMECALLBACK; Если static void ...... то: error LNK2019: unresolved external symbol __imp__timeSetEvent@20 referenced in function "protected: virtual int __thiscall CSphere2Dlg::OnInitDialog(void)" (?OnInitDialog@CSphere2Dlg@@MAEHXZ) error LNK2019: unresolved external symbol "public: static void __stdcall CSphere2Dlg::mmTimerProc(unsigned int,unsigned int,unsigned long,unsigned long,unsigned long)" (?mmTimerProc@CSphere2Dlg@@SGXIIKKK@Z) referenced in function "protected: virtual int __thiscall CSphere2Dlg::OnInitDialog(void)" (?OnInitDialog@CSphere2Dlg@@MAEHXZ) fatal error LNK1120: 2 unresolved externals --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
С первой проблемой разобрались.
Теперь надо подключить библиотеку Winmm.lib. Это в свойствах проекта, по-моему в линкере - дополнительные библиотеки. |
|||
|
||||
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Добавил в Linker - Command Line Winmm.lib
Правильно? Осталось: error LNK2019: unresolved external symbol "public: static void __stdcall CSphere2Dlg::mmTimerProc(unsigned int,unsigned int,unsigned long,unsigned long,unsigned long)" (?mmTimerProc@CSphere2Dlg@@SGXIIKKK@Z) referenced in function "protected: virtual int __thiscall CSphere2Dlg::OnInitDialog(void)" (?OnInitDialog@CSphere2Dlg@@MAEHXZ) fatal error LNK1120: 1 unresolved externals --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Нет, не комманд лайн. там должно быть что-то типа Additional librares - я нифига не помню! Подскажите кто-нибудь!
|
|||
|
||||
Leopard25 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Всё нормально .
Я потерял имя класса в void CALLBACK mmTimerProc( void CALLBACK CSphere2Dlg::mmTimerProc( Спасибо! --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |