回调函数定义和使用
来源:互联网 发布:java 64位win7 编辑:程序博客网 时间:2024/06/07 03:56
为什么 要用回调函数呢,这个问题我也想过,现在先说说回调函数的定义 和使用,过下在回答为什么 要使用回调函数,
下面这个例子是处理从一个普通的C++类CTest中把数据传到一个对话框类CTestCALLDlg中去,这里不能用消息来处理,因为消息只能处理线程和对话框之间的数据传输,对纯C++不起作用,这种情况 下,就只能用回调函数来处理了,
在Test.h文件中CTest定义之前定义 typedef bool (WINAPI * SendCmd)(WORD NodeID);用于声明一种指针类型,也就是后面要用到的回调函数类型,在在Test.h文件中定义一个成员函数void Testcall(SendCmd);注意这个成员函数的参数,在Test.cpp中:
void CTest::Testcall(SendCmd Sd)
{
Sd(10);
}
在CTestCALLDlg.cpp中写下回调函数SendCmdt 的实现部分 和 OnBnClickedButton1事件调用
bool _stdcall CALLBACK SendCmdt(WORD NodeID)
{
return true;
}
void CTestCALLDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CTest m_test;
m_test.Testcall(SendCmdt);
}
此时程序运行,就进入了回调函数中去了,这样做的目的是把NodeID变量 的值从CTest类传到CTestCALLDlg类中,回调函数的一个好处是 在CTest 中不知道NodeID 有什么用,只能通过回调作用,传出来到要使用的地方进行处理,只是在回调函数声明时告诉系统有这么一个函数,实现部分在外面 。。。。 上面的问题也应该 不用回答了,,
就写到这了, 文字写的不够流畅,希望回调函数的使用和作用表达清楚 了,呵呵
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://baike.baidu.com/view/414773.html?fromTaglist
- VC回调函数定义和使用
- VC回调函数定义和使用
- 回调函数定义和使用
- 回调函数的定义和使用
- 回调函数定义
- c 函数指针的定义 和 C++回调函数的使用
- c 函数指针的定义 和 C++回调函数的使用
- unity 定义回调函数
- 回调函数的定义与使用一例
- VC回调函数的定义和实现
- C语言回调函数的定义和写法
- Java回调函数使用和剖析
- javascript 理解和使用回调函数
- 使用回调函数
- 回调函数使用
- 什么是回调函数,如何定义和实现一个类的成员函数为回调函数(转)
- 什么是回调函数,如何定义和实现一个类的成员函数为回调函数(转)
- 定义成员函数为回调函数
- 怎样使用C++回调函数
- hdu 2444 The Accomodation of Students 二分匹配
- Struts2的Ajax的学习
- openOffice+pdf2swf+flexpaper(类百度文库) :office转pdf(Linux,window)
- win32,win64编程永恒;语言编程需要注意的64位和32机器的区别
- 回调函数定义和使用
- HDU1237
- c++之获取当前时间
- linux指令大全(完整篇)
- An overview of the ARM architecture
- There is no Action mapped for namespace [/] and action name [login] associate解决办法
- 管与android软键盘隐藏总结
- java > Eclipse,svn】解决Eclipse中SVN图标不显示的问题
- tomcat日志设置