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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CALLBACK 
:(
    Опции темы
Leopard25
Дата 9.7.2004, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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'
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 9.7.2004, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробуй
Код
MMRESULT r =timeSetEvent( 1000, 1, (LPTIMECALLBACK) mmTimerProc, NULL, TIME_PERIODIC );

или, на худой конец
Код
MMRESULT r =timeSetEvent( 1000, 1, &mmTimerProc, NULL, TIME_PERIODIC );

Хотя так-то всё правильно

Добавлено @ 12:03
Поищи в заголовках определение LPTIMECALLBACK и проверь
PM MAIL ICQ   Вверх
Leopard25
Дата 9.7.2004, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



первый вариант выдаёт :

error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'LPTIMECALLBACK'


второй вариант выдаёт :

error C2276: '&' : illegal operation on bound member function expression


А что проверить в заголовках ?
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 9.7.2004, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



там должен быть typedef для LPTIMECALLBACK.
Добавлено @ 12:18
У меня вижуал студии под рукой нет а то бы так сказал
PM MAIL ICQ   Вверх
Leopard25
Дата 9.7.2004, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



typedef TIMECALLBACK *LPTIMECALLBACK
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 9.7.2004, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
typedef TIMECALLBACK *LPTIMECALLBACK

Это понятно, в хелпе есть, посмотри TIMECALLBACK
Добавлено @ 12:43
У тебя mmTimerProc случайно не член класса? Если да то сделай его static
PM MAIL ICQ   Вверх
Leopard25
Дата 9.7.2004, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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 есть?
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 9.7.2004, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
static void CALLBACK mmTimerProc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2)
{
// ................
}

В этом месте слово статик не надо а там оставь. И всё заработает
PM MAIL ICQ   Вверх
Leopard25
Дата 9.7.2004, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ничего не изменилось.
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 9.7.2004, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
error C2664: 'timeSetEvent' : cannot convert parameter 3 from 'int (UINT,UINT,DWORD_PTR,DWORD_PTR,DWORD_PTR)' to 'LPTIMECALLBACK'

У тебя функция почему-то возвращает инт а не войд. !!!! Понятно почему -войд потерял
Цитата
public:
static CALLBACK mmTimerProc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);

надо
static void CALLBACK mmTimerProc(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
PM MAIL ICQ   Вверх
Leopard25
Дата 9.7.2004, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 9.7.2004, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



С первой проблемой разобрались.
Теперь надо подключить библиотеку Winmm.lib.
Это в свойствах проекта, по-моему в линкере - дополнительные библиотеки.
PM MAIL ICQ   Вверх
Leopard25
Дата 9.7.2004, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 9.7.2004, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нет, не комманд лайн. там должно быть что-то типа Additional librares - я нифига не помню! Подскажите кто-нибудь!
PM MAIL ICQ   Вверх
Leopard25
Дата 9.7.2004, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всё нормально .
Я потерял имя класса в

void CALLBACK mmTimerProc(

void CALLBACK CSphere2Dlg::mmTimerProc(

Спасибо!
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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