<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="MSDN中回调函数的讲解及其C#例子：用委托实现回调函数" id="card1">
<p> 游客</p><p>
标题:MSDN中回调函数的讲解及其C#例子：用委托实现回调函数<br/>
正文:<br/>
<br/>ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconusingcallbackfunctions.htm回调函数是托管应用程序中可帮助非托管 DLL 函数完成任务的代码。对回调函数的调用将从托管应用程序中，通过一个 DLL 函数，间接地传递给托管实现。在用平台调用调用的多种 DLL 函数中，有些函数要求正确地运行托管代码中的回调函数。本主题将介绍托管函数的元素，并说明如何实现回调函数和从托管代码中调用回调函数。回调函数基础要从托管代码中调用大多数 DLL 函数，可创建该函数的托管定义，然后调用该函数。此过程比较直接。要使用需要回调函数的 DLL 函数，则会有一些附加的步骤。首先，必须在文档中查阅该函数，确定该函数是否需要回调。接着，必须在托管应用程序中创建回调函数。最后，调用该 DLL 函数，并将指向回调函数的指针当作参数进行传递。下图总结了这些步骤。回调函数和实现 回调函数非常适合在重复执行任务的情况下使用。另一个常见用途是与枚举函数（如 Win32 API 中的 EnumFontFamilies、EnumPrinters 和 EnumWindows）一起使用。如下一节中的示例所示，EnumWindows 函数将枚举计算机上的所有现有窗口，并调用回调函数来对每个窗口执行一项任务。<br/>实现回调函数以下过程将说明托管应用程序如何使用平台调用来输出本地计算机上每个窗口的句柄值。尤其是，示例将使用 EnumWindows 函数来逐步浏览窗口列表，并使用一个托管回调函数（名为 CallBack）来输出窗口句柄的值。实现回调函数开始实现之前，先查看 EnumWindows 函数的签名。EnumWindows 具有以下签名：<br/>BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)表示此函数需要回调的线索之一是存在 lpEnumFunc 参数。如果参数采用指向回调函数的指针，其名称中通常会有 lp（长指针）前缀与 Func 后缀的组合。有关 Win32 函数的文档，请参见 Microsoft Platf<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=323&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=323&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=323&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=323&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=323&amp;Page=4">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=323">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=323">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>