C++中的回调函数函数怎么用?
1.C++中的回调函数函数怎么用?2.(HANDLE)_beginthreadex(NULL,0,wrkFun,NULL,0,&threadID1);wrkFun这个算是...
1.C++中的回调函数函数怎么用?
2. (HANDLE)_beginthreadex(NULL, 0, wrkFun, NULL, 0, &threadID1);
wrkFun这个算是回调吗?启动线程的方法和一般的饿回调有什么区别呢?
我理解:回调和一般的函数的区别就是他的调用是有时机的,例如,线程创建完毕,或是IOCP中,send或是recv完成完毕,我的理解对吗? 展开
2. (HANDLE)_beginthreadex(NULL, 0, wrkFun, NULL, 0, &threadID1);
wrkFun这个算是回调吗?启动线程的方法和一般的饿回调有什么区别呢?
我理解:回调和一般的函数的区别就是他的调用是有时机的,例如,线程创建完毕,或是IOCP中,send或是recv完成完毕,我的理解对吗? 展开
6个回答
展开全部
1、回调类似于事件相应。当系统在某个事情发生的时候会调用你指定的方法。这个方法先定义好,并等待系统来调用。比如Hook(系统钩子)就是给窗口设置一个函数地址,然后系统会自动的调用你的函数。这就是回调了。
2、将一个自定义函数的指针作为参数传递给一个API函数,供其调用。这样的自定义函数,称为回调函数。调用回调函数的过程,称为回调。值得注意的是,仅API函数能实施回调。常用于回调的API函数如:SetWindowLong(),EnumWindows().
回调函数实际上是C语言中由用户特殊定义的外部函数,只不过函数的结构有些特殊规定。他的功能是用来响应对应的事件。
2、将一个自定义函数的指针作为参数传递给一个API函数,供其调用。这样的自定义函数,称为回调函数。调用回调函数的过程,称为回调。值得注意的是,仅API函数能实施回调。常用于回调的API函数如:SetWindowLong(),EnumWindows().
回调函数实际上是C语言中由用户特殊定义的外部函数,只不过函数的结构有些特殊规定。他的功能是用来响应对应的事件。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是在执行beginthreadex的过程中会调用wrkFun函数,或者beginthreadex会记录下wrkFun这个指针所指的地址,在适当的时候调用这个函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fivecat314说得不错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询