是否支持回调函数本身并不是COM本身需要讨论的问题。答案是肯定的,因为整个Windows操作系统的很多API内部很多就是通过回调函数实现的,比如BOOL EnumWindows( WNDENUMPROC lpEnumFunc,
LPARAM lParam
);
int EnumFontFamilies(
HDC hdc, // handle to DC
LPCTSTR lpszFamily, // font family
FONTENUMPROC lpEnumFontFamProc, // callback function
LPARAM lParam // additional data
);
等。
不过,在有些语言里比如VB等,在设置回调函数指针时就只能强制把函数指针转换为long来进行设置,感觉比较别扭,如果都是在c++环境就无所谓了。