这 个 函 数 有 四 个 参 数 , 它 们 的 含 义 如 下 : <br> 第 一 个 参 数 hwnd是 窗 口 句 柄 , 是 一 个 长 整 型 数 。 Windows给 每 个 控 件 一 个 编 号 , 这 个 编 号 就 称 为 窗 口 句 柄 。 有 了 这 个 句 柄 , 我 们 就 可 以 告 诉 Windows我 们 要 控 制 哪 个 控 件 , 所 以 这 个 句 柄 在 API调 用 中 至 关 重 要 。 Visual Basic的 大 多 数 控 件 都 包 括 hwnd属 性 , 如 下 拉 框 、 TreeView等 , 窗 体 也 有 这 个 属 性 。 但 也 有 一 些 控 件 没 有 这 个 属 性 , 如 标 签 控 件 。 没 有 这 个 属 性 就 无 法 利 用 Windows API函 数 , 但 可 以 节 省 系 统 资 源 。 <br> 第 二 个 参 数 是 要 传 递 的 消 息 。 API文 档 中 包 括 了 所 有 消 息 的 含 义 和 用 法 , 而 每 个 消 息 所 定 义 的 常 数 在 Win32api.txt中 有 可 以 找 到 。 使 用 SendMessage传 递 消 息 , 大 多 是 为 了 完 成 以 下 几 个 工 作 : <br> 1、 设 置 控 件 的 一 些 选 项 , 象 我 们 要 使 用 的 CB_SETDROPPEDWIDTH的 就 属 于 这 种 情 况 。 尽 管 Visual Basic的 每 个 控 件 都 提 供 了 许 多 属 性 , 但 仍 然 有 许 多 控 件 的 选 项 没 有 包 括 在 其 中 。 而 这 些 选 项 中 的 大 多 数 都 可 以 利 用 SendMessage进 行 设 置 。 <br> 2、 获 得 控 件 的 一 些 设 置 。 同 上 一 种 情 况 相 反 , 有 时 我 们 需 要 获 得 控 件 的 一 些 设 置 , 这 相 当 于 读 取 属 性 。 例 如 , 如 果 想 知 道 一 个 下 拉 框 的 下 拉 部 分 的 宽 度 是 多 少 , 就 可 以 向 控 件 发 送 CB_GETDROPPEDWIDTH消 息 。 对 于 这 种 情 况 , SendMessage函 数 的 返 回 值 就 是 结 果 。 <br> 3、 执 行 一 定 的 操 作 。 例 如 , 我 们 要 在 下 拉 框 中 寻 找 是 否 "ABC"这 个 字 符 串 。 当 然 , 我 们 可 以 编 写 一 个 循 环 , 逐 条 比 较 看 是 否 存 在 这 样 的 字 符 串 。 如 果 使 用 API, 我 们 只 需 要 向 下 拉 框 发 送 CB_FINDSTRING消 息 , 这 条 消 息 就 会 自 动 进 行 查 找 工 作 并 返 回 结 果 。 <br> 4、 模 拟 用 户 操 作 。 我 们 有 时 希 望 模 拟 用 户 的 操 作 , 比 如 关 闭 其 他 应 用 程 序 的 窗 口 。 其 实 只 要 我 们 能 知 道 那 个 窗 口 的 句 柄 , 我 们 就 可 以 发 送 WM_CLOSE消 息 给 那 个 窗 口 , 窗 口 接 受 到 这 条 消 息 就 会 关 闭 , 如 同 用 户 关 闭 窗 口 一 样 。 <br> API消 息 的 妙 用 很 多 , 我 们 这 里 只 是 介 绍 如 何 使 用 SendMessage来 发 送 消 息 , 更 进 一 步 的 应 用 就 留 给 读 者 继 续 探 索 了 。 <br> SendMessage还 有 两 个 参 数 wParam和 lParam。 每 个 消 息 都 具 有 这 两 个 参 数 , 它 们 可 能 包 括 一 些 其 他 信 息 , 其 含 义 由 具 体 的 消 息 来 决 定 的 。 比 如 , 我 们 要 调 用 的 CB_SETDROPPEDWIDTH消 息 , 其 wParam 表 示 要 设 置 下 拉 部 分 的 宽 度 是 多 少 , 以 象 素 为 单 位 ; 而 lParam参 数 没 有 使 用 , 必 须 设 置 为 0。 <br> 可 能 你 已 经 注 意 到 了 , 这 里 SendMessage中 的 lParam定 义 为 Any类 型 。 前 面 我 们 已 经 提 到 , 指 定 Any类 型 禁 止 Visual Basic进 行 类 型 检 查 , 从 而 允 许 将 任 意 数 据 类 型 传 递 给 该 过 程 。 由 于 每 条 消 息 对 参 数 的 类 型 和 传 递 方 式 的 要 求 都 不 同 : 有 的 可 能 要 求 为 Long型 , 有 的 可 能 要 求 为 自 定 义 类 型 ; 大 多 数 要 求 按 传 值 方 式 传 递 , 但 也 有 一 些 要 求 按 传 地 址 方 式 。 为 了 满 足 各 种 要 求 , 我 们 将 这 个 参 数 定 义 为 Any类 型 。 比 如 , 我 们 要 传 递 一 个 Long型 变 量 lData。 如 果 消 息 要 求 传 地 址 方 式 传 递 , 可 以 使 用 : <br> SendMessage … … , lData <br> 而 如 果 要 求 传 值 方 式 传 递 , 则 使 用 <br> SendMessage … … , ByVal lData <br> 如 果 传 递 常 数 , 我 们 则 需 要 使 用 类 型 后 缀 来 指 定 常 数 的 类 型 , 比 如 "0&", 表 示 Long型 的 常 数 0, 如 <br> SendMessage … … , ByVal 0& <br> 我 们 也 可 以 使 用 类 型 转 换 函 数 CLng将 常 数 指 定 为 Long型 , 如 CLng(0)。