It’s very difficult to answer this question without any practical observation. But with my previous experiences in Delphi/C++Builder I know that processing window messaging is more simple than using callback functions, but in a performance wise it is not a good solution. Because it always gives worse performance due to delays in processing window messages.
I recommended the using of callback functions for your task.