Здравствуйте THEOS, Вы писали:
THEOS>Чем интересна "CALLBACK" функция в чём её смысл, особенности и чем она отличается от функции типа callforward .
Ничем. Callback-функциями называют такие функции, которые реализуются в приложении, а вызываются операционной системой (или, в общем случае, другим модулем). Типичный пример callback-функции — функция окна.
Поскольку вызывающий callback-функцию код уже написан и скомпилирован, типы аргументов и способ передачи аргументов (calling convention) строго определены. Так, например, функция окна обязательна должна соответствовать следующему прототипу:
LRESULT __stdcall WindowProc(
HWND hWnd,
UING nMsg,
WPARAM wParam,
LPARAM lParam
);
Все callback-функции в Win32 имеют соглашение о вызове __stdcall. Макрос CALLBACK, используемый в объявлении таких функций, определен как
#define CALLBACK __stdcall
и несет двоякую роль: c одной стороны он устанавливает правильное соглашение о вызове (что можно сделать и без его помощи, как показано в примере выше), а с другой — сообщает о том, что объявляемая функция используется в качестве callback-функции. Поэтому чаще всего можно встретить объявление функции окна в таком виде:
LRESULT CALLBACK WindowProc(
HWND hWnd,
UING nMsg,
WPARAM wParam,
LPARAM lParam
);
который полностью эквивалентен предыдующему.