C++中的回调函数函数怎么用?

2025-02-27 03:04:32
推荐回答(5个)
回答1:

你的理解是对的。
回调函数类似一个电话号码,你去一个地方登记的时候你把电话号码登记上去了,并不是要求对方当时就打你的电话,而是让对方在需要的时候打你的电话。

线程的函数也是回调函数,碰巧的是,创建线程的时候往往也是需要调用这个函数的时候(之所以用“往往”是因为创建了线程你完全可以先SUSPEND而不执行),所以当时就调用了。

回答2:

1、回调类似于事件相应。当系统在某个事情发生的时候会调用你指定的方法。这个方法先定义好,并等待系统来调用。比如Hook(系统钩子)就是给窗口设置一个函数地址,然后系统会自动的调用你的函数。这就是回调了。

2、将一个自定义函数的指针作为参数传递给一个API函数,供其调用。这样的自定义函数,称为回调函数。调用回调函数的过程,称为回调。值得注意的是,仅API函数能实施回调。常用于回调的API函数如:SetWindowLong(),EnumWindows().
回调函数实际上是C语言中由用户特殊定义的外部函数,只不过函数的结构有些特殊规定。他的功能是用来响应对应的事件。

回答3:

#include
#include
#include
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
TCHAR szText[1024] = _T("");

// 获得窗口标题
GetWindowText(hwnd, szText, sizeof(szText) / sizeof(TCHAR));

// 比较窗口标题
if (lstrcmpi(szText, (LPCTSTR)lParam) == 0)
{
MessageBox(NULL, _T("找到了计算器窗口"), _T("提示"), MB_ICONINFORMATION);
// 停止枚举窗口
return FALSE;
}
// 继续枚举窗口
return TRUE;
}

void main()
{
// 查找计算器窗口
EnumWindows(EnumWindowsProc, (LPARAM)_T("计算器"));
return 0;
}

回答4:

就是在执行beginthreadex的过程中会调用wrkFun函数,或者beginthreadex会记录下wrkFun这个指针所指的地址,在适当的时候调用这个函数。

回答5:

fivecat314说得不错