回调函数在日常工作中是比较常用的,但是在校的学生很多接触不到这个被老师“忽略”的技术小点。所以,写点文字,给那些需要的学弟学妹们。
回调函数顾名思义就是开设一个函数让别的应用程序来调用。假设我们现在有这样的一个需求:我们开设了一个线程作为工作线程在该线程内转换100个文件,需要在主线程内显示转换进度。通常我们可以PostMessage给住线程,但是某些情况下,会导致程序crash或者进度显示明显滞后。
我们还有一种方法,就是开设回调,让工作线程主动的调用我们的回调实现进度的刷新:
第一步:
函数原型声明
typedef BOOL (
CALLBACK* SAVEPROC)(INT32 nSavePercent, LPARAM lParam);
第二步:
主线程内编写回调函数
BOOL
CALLBACK TranscodingProcess(INT32 nPercent, LPARAM lParam)
{
return TRUE;
}
第三步:
工作线程内使用回调函数
HRESULT GenerateTraceBMP(SAVEPROC lpProc)
{
if (lpProc)
{
lpProc(10, 0);
}
return NOERROR;
}
代码比较简单,如果还是不会使用的朋友,可以发送mail给我:
bicarse@yahoo.com.cn,会转发一份代码给你。