创建状态回调函数     DATE: 2024-04-29 18:22:37

创建状态回调函数

本教程介绍如何创建用于监视 Internet 请求状态的创建状态回调函数。

状态回调函数接收来自传递非零上下文值的状态任何 WinINet 函数发出的任何 Internet 请求的状态回调。

创建状态回调函数需要执行以下步骤 :

  1. 定义上下文值。回调函数
  2. 创建状态回调函数 。创建

上下文值可以是状态任何无符号长整数值。 理想情况下 ,回调函数上下文值应标识刚刚完成的创建请求以及任何关联资源的位置(如果需要)。

使用上下文值的状态最有用方法之一是传递结构的地址并将其强制转换为 DWORD_PTR 。 结构可用于存储有关请求的回调函数信息 ,以便将其传递给状态回调函数 。创建

以下结构是状态可能上下文值的示例 。 结构的回调函数成员是在考虑 InternetOpenUrl函数的情况下选择的 。

在此示例中,创建状态回调函数将有权访问窗口句柄,状态这将允许它显示用户界面。回调函数 InternetOpenUrl创建的 HINTERNET句柄可以传递给另一个可下载资源的函数 ,以及可用于传递请求相关信息的字符数组 。

可以更改结构的成员以满足特定应用程序的需求 ,因此不要感到受到此示例的约束。

状态回调函数必须遵循 InternetStatusCallback的格式。 为此 ,请按以下步骤操作:

  1. 为状态回调函数编写函数声明。

    以下示例演示一个示例声明  。

  2. 确定状态回调函数将执行的操作。 对于进行异步调用的应用程序,状态回调函数必须处理INTERNET_STATUS_REQUEST_COMPLETE值,该值指示异步请求已完成 。 状态回调函数还可用于跟踪 Internet 请求的进度。

    通常  ,最好使用具有 dwInternetStatus 的switch 语句作为开关值和 case 语句的状态值 。 根据应用程序调用的函数类型 ,可以忽略某些状态值。 有关不同状态值的定义,请参阅 InternetStatusCallbackdwInternetStatus参数下的列表 。

    以下 switch 语句是如何处理状态回调的示例。

  3. 创建代码来处理状态值 。

    处理每个状态值的代码在很大程度上取决于状态回调函数的预期用途。 对于仅跟踪请求进度的应用程序 ,可能需要将字符串写入列表框 。 对于异步操作 ,代码必须处理回调中返回的某些数据 。

    以下状态回调函数使用 switch 函数来确定状态值是什么,并创建一个字符串 ,其中包含状态值的名称和上一个名为 的函数  ,该函数存储在 REQUEST_CONTEXT 结构的 szMemo 成员中。

  4. 使用 InternetSetStatusCallback函数在要接收状态回调的 HINTERNET句柄上设置状态回调函数 。

    以下示例演示如何设置状态回调函数。

 

创建状态回调函数

InternetSetStatusCallback

InternetStatusCallback