这些天在练习的时候,很多在win32控制台里了回调函数。再次基础上移植到VC/MFC中的时候发现有点问题,于是查阅资料,解决方法如下(直接代码):
不过我在查阅资料的时候,看见有的朋友说回调函数需要被定义为CALLBACK(这是一个宏),遗憾我不知道具体怎么用。
typedef void (*cback)(int a,LPVOID userParam); //回调函数原型定义
public:
afx_msg void OnBnClickedButton1();
public:
bool myloop(int a, cback UserFun, LPVOID userParam);
void MyCallBack(int a, LPVOID userParam)
{
//AfxMessageBox("你好");
AfxMessageBox((char *)userParam);
}
void CCallBackDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
char *buffer = "子坞阁";
myloop(1, MyCallBack, buffer);
}
bool CCallBackDlg::myloop(int a, cback UserFun, LPVOID userParam)
{
UserFun(1, userParam);
return true;
}
【参考资料 感谢作者】
http://download.csdn.net/source/1555089
回调函数百度百科:http://baike.baidu.com/view/414773.html?fromTaglist
附:回调函数的另一用处(感谢作者):
http://www.cnblogs.com/tianlangshu/archive/2011/03/20/1989439.html