Здравствуйте Joker3D, Вы писали:
JD>Здравствуйте Constructor, Вы писали:
C>>А теперь я попрошу поподробнее
C>>1. Почему она должна быть статической?
C>>2. Зачем у нее объявили 2-й параметр UINT uMsg, // WM_TIMER message, если туда все равно передается сообщение WM_TIMER?
JD>1. потому что таймер умеет дергать только глобальную (или статическую — один хрен
функцию, соответствующую описанию
JD>JD>VOID CALLBACK TimerProc(
JD> HWND hwnd, // handle to window
JD> UINT uMsg, // WM_TIMER message
JD> UINT_PTR idEvent, // timer identifier
JD> DWORD dwTime // current system time
JD>);
JD>
JD>и он понятия не имеет о твоих классах/объектах.
Позволю себе не согласиться. Это не пропускает компилятор, так как действительно, не совпадают типы. А таймеру пофиг, какая функция, ему интересен только ее адрес. Поэтому всякими нечестными способами типа union можно добиться вызова функции-члена класса, только надо очень осторожно следить за ее аргументами.