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

1.C++中的回调函数函数怎么用?
2. (HANDLE)_beginthreadex(NULL, 0, wrkFun, NULL, 0, &threadID1);
wrkFun这个算是回调吗?启动线程的方法和一般的饿回调有什么区别呢?

我理解:回调和一般的函数的区别就是他的调用是有时机的,例如,线程创建完毕,或是IOCP中,send或是recv完成完毕,我的理解对吗?
最新回答
巴拉拉能量作业消失

2022-06-25 15:38:32

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

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

2023-12-23 03:20:29

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

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

2022-02-07 07:39:40

#include <stdafx.h>
#include <windows.h>
#include <tchar.h>
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;
}
花月似霰

2023-10-30 06:30:36

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

2022-06-22 01:35:18

fivecat314说得不错