c ++ тип функции CALLBACK - PullRequest
       8

c ++ тип функции CALLBACK

3 голосов
/ 27 ноября 2010

Я пытаюсь создать что-то вроде MsgProc в Win32.Когда они объявляют функцию MsgProc, они имеют тип CALLBACK перед ней.Итак, все, что я пытаюсь сделать, - это создать собственную функцию сообщения, которая вызывает мою функцию для обработки сообщенийЭто в основном то же самое, когда сообщения отправляются и обрабатываются.Мой вопрос, как я могу создать тот же процесс?Пример был бы великолепен.

Ответы [ 3 ]

1 голос
/ 27 ноября 2010

Кроме классических указателей на функции и функциональных объектов, вас могут заинтересовать новые лямбды C ++ 0x.

Вот пример передачи лямбды в функцию таймера.

#include <windows.h>
#include <iostream>
#include <functional>

void onInterval(DWORD interval, std::function<void ()> callback) {
  for (;;) {
    Sleep(interval);
    callback();
  }
}

int main() {
  onInterval(1000, []() {std::cout<<"Tick! ";});
}
0 голосов
/ 27 ноября 2010

Если вы можете использовать Boost, я бы определенно дал Boost.Signals выстрел, они обеспечивают функциональность, которую вы ищете, чистым и безопасным способом ( Boost.Signals2 даже потокобезопасным способом.)

0 голосов
/ 27 ноября 2010

Если вы находитесь на C ++, просто используйте указатель на функцию в вашем классе:

http://www.newty.de/fpt/fpt.html

...