Как использовать timeSetEvent с MFC ?????
У меня с этим небольшие проблемы
например мне надо сделать функцию callback таймера, но надо работать и с классами MFC
как ??????
Здравствуйте Terre, Вы писали:
T>Здравствуйте Odi$$ey, Вы писали:
T>>>как ??????
O$>>что конкретно ты хочешь сделать, а оно не получается?
T>Конкретно не могу получить из функции TimerCallBack доступ к любому члену класса CMySuxxDlg T>например:
T>void __stdcall TimerCallBack(unsigned int a, unsigned int b, unsigned long c, unsigned long d, unsigned long e) T>{ T> CMySuxxDlg::FuckThisClass(); T>}
T>Init() T>{ T> timerID = timeSetEvent(mysuxxms, mysuxxres, &TimerCallBack, 100, TIME_PERIODIC); T>}
Передай в функцию указатель на твой класс, например через DWORD dwUser — User-supplied callback data в функции callback.
Здравствуйте Terre, Вы писали:
T>Конкретно не могу получить из функции TimerCallBack доступ к любому члену класса CMySuxxDlg T>например:
T>void __stdcall TimerCallBack(unsigned int a, unsigned int b, unsigned long c, unsigned long d, unsigned long e) T>{ T> CMySuxxDlg::FuckThisClass(); T>}
T>Init() T>{ T> timerID = timeSetEvent(mysuxxms, mysuxxres, &TimerCallBack, 100, TIME_PERIODIC); T>}
А ты попробуй вместо магического числа 100 передать указатель на свой класс и воспользоваться им в TimerCallback.
void CMyDlg::TimerCallBack(UINT uID)
{
// здесь можно свободно обращаться к членам класса
}
[/c]
Только учти, что callback-функция будет вызываться из другого потока, так что надо будет позаботиться о синхронизации в тех местах, где это необходимо. Да и не лишне будет напомнить, что
<!-- msdn -->
Applications should not call any system-defined functions from inside a callback function, except for PostMessage, timeGetSystemTime, timeGetTime, timeSetEvent, timeKillEvent, midiOutShortMsg, midiOutLongMsg, and OutputDebugString
<!-- /msdn -->
Здравствуйте Alex Fedotov, Вы писали:
AF>Только учти, что callback-функция будет вызываться из другого потока, так что надо будет позаботиться о синхронизации в тех местах, где это необходимо. Да и не лишне будет напомнить, что
AF><!-- msdn --> AF>Applications should not call any system-defined functions from inside a callback function, except for PostMessage, timeGetSystemTime, timeGetTime, timeSetEvent, timeKillEvent, midiOutShortMsg, midiOutLongMsg, and OutputDebugString AF><!-- /msdn -->
AF>Особенно это справедливо для Win9x.
Во первых thnx... это вроде работает...
Еще раз, как этого избежать ???
Мне нужно чтоб callback вызывался ровно в через определенный промежуток времени....
без всяких +-...
Или под MFC это сделать нельзя ??
И еще. Иногда прога виснет через некоторое время (интервал 1мс, точность 0) и если запущена другая прога (например winamp).