Not the best one @ function pointers here, but I think it should be Test::messageReceived instead of &Test::messageReceived.
But I think that is just one part of it. I believe you are trying to use a function pointer of a non-static function as a regular C pointer. I think this is not allowed. But again, I'm not the brightest fellow for function pointers.
The use of Boost.Bind or the upcoming std::bind can be used to bind member functions into a simple (non-)nullary function. They simplify what you're trying to do. I suggest you look it up. Please be warned though that the errors produced by bind are horrendous and takes patience. You may be better off simply creating a cleaner solution.
As to whether you should use Boost.Bind or std::bind, I'd use Boost.Bind for current portability sake.