菜鸟问 啥是回调函数
- C/C++ code
#include<stdio.h>int max(int a, int b){ if(a>b) return a; else return b;}void main(){ int (*pmax)(int,int); int a,b,c; pmax=max; printf("input two number:"); scanf("%d,%d",&a,&b); c=(*pmax)(a,b); printf("max=%d\n",c);}
这就是个函数指针,百度说 回调函数 和 函数指针差不多,没搞明白,里面的机制。
我最近遇到一个问题,是底层的一个回调函数,ucgui里面的
- C/C++ code
/***************************************************************************** 名 称:static void _cbCallback(WM_MESSAGE * pMsg) * 功 能:窗体回调函数 * 入口参数:无* 出口参数:无* 说 明:* 调用方法:无 ****************************************************************************/static void _cbCallback(WM_MESSAGE * pMsg) { int NCode, Id; WM_HWIN hDlg; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /*获得窗体部件的ID*/ NCode = pMsg->Data.v; /*动作代码 */ switch (NCode) { case WM_NOTIFICATION_VALUE_CHANGED: /*窗体部件的值被改变 */ _OnValueChanged(hDlg, Id); break; default: break; } break; default: WM_DefaultProc(pMsg); }}
我没有搞懂里面的意思,求大牛们指教。
[解决办法]
就是消息响应函数,就跟你打字一样,你按了A这个按键,他就会显示A这个字符!
[解决办法]
回调函数就是一个通过函数指针调用的函数。
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
[解决办法]
消息机制。。。。switch语句就是用来判断是哪种消息。。常见的比如什么鼠标左键按下,左键松开。之类的。。。。
[解决办法]
参考qsort
Windows系统:“不要调用我,请先填写好未来收到某个消息时你的处理流程,在那个消息到来时我会调用你!”
[解决办法]
[解决办法]
[解决办法]
系统调用你自己写的函数就叫回调,和你平时调用系统函数是相反的。MFC里面就有。