Re: CALLBACK
От: Алексей Владимирович Миронов Россия  
Дата: 20.12.02 05:03
Оценка:
Здравствуйте, Elf, Вы писали:

Elf>Может, глупый вопрос, но что есть CALLBACK функция?


По-русски это "функция обратного вызова".
Это ваша функция, которую система может вызвать, чтобы, например, сообщить Вам о некотором событии. Типичный пример — оконная функция — она получает уведомления о событиях, относящихся к данному окну.

Elf>И как пользоваться SetWindowsHookEx и EnumWindows?


Лучше напишу про EnumWindows, так короче будет

#include <windows.h>
#include <stdio.h>

/* Вот наша функция обратного вызова */
BOOL CALLBACK MyEnumProc ( HWND hwnd, LPARAM lParam ) 
{
  char title[1024]; /* Для большинства окон должно хватить */

  GetWindowText ( hwnd, title, sizeof (title) );
  printf ( "%d: %s\n", hwnd, title );
  return TRUE; /* Продолжить перечисление */
}

void main ( void )
{
  EnumWindows ( (WNDENUMPROC)MyEnumProc, (LPARAM)NULL );
}


Результатом запуска программы будет список окон верхнего уровня.

Главные требования для подобных функций:

1) Наличие модификатора CALLBACK;
2) Совпадение количества и типов параметров и возвращаемого значения.

Обратите внимание, что экспортировать функцию не обязательно, Windows все равно сможет вызвать функцию, даже если Вы объявите ее static.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.