当前位置: 首页 > news >正文

wp手机打开wordpress网站优化seo推广服务

wp手机打开wordpress,网站优化seo推广服务,药厂网站建设,博罗高端网站建设价格C很多类库都喜欢用回调函数,MFC中的定时器,消息机制,hook机制等待,包括现在在研究的cocos2d-x中也有很多的回调函数。 1.回调函数 什么是回调函数呢?回调函数其实就是一个通过函数指针调用的函数!假如你把A…

C++很多类库都喜欢用回调函数,MFC中的定时器,消息机制,hook机制等待,包括现在在研究的cocos2d-x中也有很多的回调函数。


1.回调函数

什么是回调函数呢?回调函数其实就是一个通过函数指针调用的函数!假如你把A函数的指针当作参数传给B函数,然后在B函数中通过A函数传进来的这个指针调用A函数,那么这就是回调机制。B函数就是回调函数,而通常情况下,A函数是系统在符合你设定条件的情况下会自动执行,比如Windows下的消息触发等等。那么调用者和被调用者的关系就被拉开了,就像是中断处理函数那样。


2.函数指针

函数指针是一个指针,只是这个指针它不像普通的指针指向是是一个变量,此时它指向的是一个函数,也就是它存储的是一个函数的地址,如果我们愿意的话,可以改变这个它的值,让他由指向funA转变为指向funB,那么这个函数指针的作用就改变了。


3.函数指针的使用


3.1函数指针声明

[cpp] view plaincopy
  1. typedef 返回类型(*函数指针类型名)(函参列表);  


3.2示例

[cpp] view plaincopy
  1. typedef void(*Fun)(int,int); //定义函数指针类型  
  2. void min(int a,int b);  
  3. void max(int a,int b);  
  4.   
  5. void min(int a,int b)  
  6. {  
  7.     int minvalue=a<b?a:b;  
  8.     std::cout<<"min value is "<<minvalue<<"\n";  
  9. }  
  10.   
  11. void max(int a,int b)  
  12. {  
  13.     int maxvalue=a>b?a:b;  
  14.     std::cout<<"Max value is "<<maxvalue<<"\n";  
  15. }  
  16.   
  17. int _tmain(int argc, _TCHAR* argv[])  
  18. {  
  19.     Fun pFun=NULL; //定义函数指针变量pFun  
  20.     //pFun=min;//两种赋值方式都支持  
  21.     pFun=&min;  
  22.     pFun(1,2);//这里获得最小值  
  23.     //pFun=max;  
  24.     pFun=&max;  
  25.     pFun(1,2);//这里获得最大值  
  26.     return 0;  
  27. }  
我想这么写应该是很一目了然了。


4.回调函数的使用

回调函数的使用其实和上面函数指针示例是很一致的,只是上面的实例中pFun是我们自己调用的。现在我们在MFC中让系统调用一下吧。


先看一下SetTimer函数声明:

[cpp] view plaincopy
  1. UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWNDUINTUINTDWORD) );  
其中lpfnTimer是这么解释的:Specifies the address of the application-supplied TimerProc callback function that processes the WM_TIMER messages. If this parameter is NULL, the WM_TIMER messages are placed in the application's message queue and handled by the CWnd object.

也就是或如果为NULL的话,系统自动触发WM_Timer消息,然后调用OnTimer函数。


我们调用自己的自定义回调函数。

[cpp] view plaincopy
  1. CALLBACK VOID callback_fun(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)  
  2. {  
  3.     TRACE("CallBack\n");//debug下运行控制台输出CallBack  
  4. }  
  5.   
  6. void CTestCallBackDlg::OnBnClickedButton1()  
  7. {  
  8.     // TODO: 在此添加控件通知处理程序代码  
  9.     SetTimer(1,1000,(TIMERPROC)callback_fun);//每一秒回调一次  
  10. }  

另外,需要注意的是回调函数必须是全局函数或者静态成员函数,因为普通的成员函数会隐含着一个传递函数作为参数,也就是this指针。因此如果使用普通成员函数作为回调函数的话会导致函数参数个数不匹配,因此编译失败。这也是线程函数是多为静态函数的原因。

我们还注意到回调函数用CALLBACK修饰,我们可以在windef.h中发现:

[cpp] view plaincopy
  1. #define CALLBACK    __stdcall  

CALLBACK其实就是__stdcall,还记得上篇讲过的函数调用约定吗?

http://www.lbrq.cn/news/2689903.html

相关文章:

  • 做网站镜像申请百度收录网址
  • 网站制作教程 百度文库网络营销推广方案论文
  • 南京哪个网站建设比较好关键词挖掘查询工具
  • 初中信息科技怎么自己做网站网络营销策划ppt
  • 易用的做网站软件短视频询盘获客系统
  • 淄博网站排名外包优化人员配置
  • 木兰姐网站建设网站优化排名推广
  • 淘宝店转让交易平台seo外包公司哪家好
  • 做网站需要的公司深圳十大教育培训机构排名
  • 建设好学校网站免费正能量erp软件下载
  • 海门市住房和城乡建设局网站如何推广好一个产品
  • 企业网站功能模块设计广告营销平台
  • 厦门北京网站建设丁香人才网官方网站
  • 重庆装修公司网站建设seo宣传
  • 怎样给网站做seo优化什么是搜索引擎优化seo
  • 哈尔滨建站哪个好数据分析平台
  • 小红书推广营销安徽seo网络推广
  • 网站什么时候备案产品推广怎么做
  • 做家装网站客户来源多吗最好用的磁力搜索器
  • 编程 网站建设如何做一个网站
  • html5在线制作网站模板灰色推广
  • 怀化网站建设联系方式网络运营工作内容
  • 网络营销招聘岗位有哪些推广关键词优化公司
  • 廊坊高端网站制作3小时百度收录新站方法
  • 常见的网站结构有哪些竞价推广sem
  • 限制网站访问ip百度售后客服电话24小时
  • 青州网站建设百度广告一级代理
  • 深圳高端营销网站模板引擎网站
  • 网站定制开发合同营销推广策划
  • index 石家庄网站建设seo网站关键词优化方式
  • 【图像算法 - 13】基于 YOLO12 与 OpenCV 的实时目标点击跟踪系统(系统介绍 + 源码详细)
  • 【Java Web 快速入门】九、事务管理
  • 基于Python的《红楼梦》文本分析与机器学习应用
  • [激光原理与应用-254]:理论 - 几何光学 - 自动对焦的原理
  • 验证二叉搜索树
  • 使用Windbg分析多线程死锁项目实战问题分享