callback function

asper 2000-08-22 08:44:00
看了一下msdn,不太理解,帮个忙?
...全文
395 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Holly 2000-08-24
  • 打赏
  • 举报
回复
在整个工程中搜索RygWndProc不要加括号,如果将函数名作为参数象变量一样使用的地方就是调用的入口!
netsky 2000-08-24
  • 打赏
  • 举报
回复
你看看关于函数指针的用法,了解了函数指针也就了解了CALLBACK.
你在该函数内设个断点,调试一下,就知道什么时候运行了.
asper 2000-08-22
  • 打赏
  • 举报
回复
那我在做自定义控件的时候(vc++ inside 中的ex22d)有这么一个回调函数
LRESULT CALLBACK AFX_EXPORT RygWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
但是怎么在整个程序里没看到有函数调用它呀?搞不明白,继续麻烦各位.
Holly 2000-08-22
  • 打赏
  • 举报
回复
就是函数指针的调用;
设计一个函数接口参数是某一函数的指针,在设计的函数中调用该函数指针,那么该指针指向的函数就是callback functioin!
U皮特U 2000-08-22
  • 打赏
  • 举报
回复
回调函数在win32编程中很常用,它不是直接调用的,而是在满足某些特定条件下由别的代码调用的。比如:EnumFonts函数的功能是枚举系统字体,函数原型定义如下:
int EnumFonts(
HDC hdc, // handle to device context
LPCTSTR lpFaceName, // pointer to font typeface name string
FONTENUMPROC lpFontFunc, // pointer to callback function
LPARAM lParam // pointer to application-supplied data
);
其中lpFontFunc参数就指向一个回调函数入口,其功能是每找到一个字体就会自动调用这个参数指针指向的回调函数,该函数定义为int CALLBACK EnumFontsProc(
lplf lplf, // pointer to logical-font data
lptm lptm, // pointer to physical-font data
DWORD dwType, // font type
LPARAM lpData // pointer to application-defined data
);
在定义EnumFonts函数时并不知道EnumFontsProc回调函数具体做什么事情,只知道每找到字体都要以上面的形式调用这个函数,你就可以自已定义这个回调函数的具体内容,做你想做的事情了。
asper 2000-08-22
  • 打赏
  • 举报
回复
还是不太理解,不好意思
我下了个程序中有这个回调函数
BOOL CALLBACK FindTrayWnd(HWND hwnd, LPARAM lParam)
{然后在另外一个地方调用它
EnumChildWindows(pWnd->m_hWnd, FindTrayWnd, (LPARAM)&rect);
是不是回调函数是为了给其他函数调用而设计的呢?
asper 2000-08-22
  • 打赏
  • 举报
回复
还是不太理解,不好意思
我下了个程序中有这个回调函数
BOOL CALLBACK FindTrayWnd(HWND hwnd, LPARAM lParam)
{
TCHAR szClassName[256];
GetClassName(hwnd, szClassName, 255);

// 比较窗口类名
if (_tcscmp(szClassName, _T("TrayNotifyWnd")) == 0)
{
CRect *pRect = (CRect*) lParam;
::GetWindowRect(hwnd, pRect);
return TRUE;
}

// 当找到时钟窗口时表示可以结束了
if (_tcscmp(szClassName, _T("TrayClockWClass")) == 0)
{
CRect *pRect = (CRect*) lParam;
CRect rectClock;
::GetWindowRect(hwnd, rectClock);
pRect->right = rectClock.left;
return FALSE;
}

return TRUE;
}
然后在另外一个地方调用它
EnumChildWindows(pWnd->m_hWnd, FindTrayWnd, (LPARAM)&rect);
是不是回调函数是为了给其他函数调用而设计的呢?
Wingsun 2000-08-22
  • 打赏
  • 举报
回复
也就是回调函数,就是说,当某一个事件发生时系统会根据你给出的函数指针来调用你定义这个回调函数,这是系统提供的一种和用户通讯的方法。他通过调用用户的自定义函数来给用户提供一个处理消息或事件的机制。

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧