1、要实现窗口最小化必须满足以下条件: 1:按下最小化按钮,窗体不可见 2:最小化后,最小化窗体的图标必须出现在任务栏的通知区域中 3:当双击通知区域中的图标时,窗体又显示出来,同时通知区域中的图标消失. 要满足上面的条件: 1:首先屏蔽窗体中系统自带的最小化图标,即 Form.MinButton=False 2:声明 1 个 API 函数: Public Declare Function Shell_NotifyIcon Lib “shell32.dll“ Alias “ Shell_NotifyIconA“ (ByVal dwMessage As Long, lpData As NOTIFYI
2、CONDATA) As Long 注意:上面这个 API 函数在 XP 中没有别名,将别名去掉后为: Public Declare Function Shell_NotifyIcon Lib “shell32.dll“(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long 3:声明 7 个常数: Public Const NIM_ADD = 2、 参 数 说 明 :dwMessage 为 输 入 参 数 , 传 递 发 送 的 消 息 , 表 明 要 执 行 的 操作 。 可 选 的 值 如 下 :NIM_ADD向 托 盘 区 域
3、 添 加 一 个 图 标 。 此 时 第 二 个 参 数 lpdata 指 向 的 NOTIFYICONDATA 结 构 体 中 的 hWnd 和 uID 成 员 用 来 标 示 这 个 图标 , 以 便 以 后 再 次 使 用 Shell_NotifyIcon 对 此 图 标 操 作 。NIM_DELETE删 除 托 盘 区 域 的 一 个 图 标 。 此 时 第 二 个 参 数 lpdata 指 向 的 NOTIFYICONDATA 结 构 体 中 的 hWnd 和 uID 成 员 用 来 标 示 需 要 被删 除 的 这 个 图 标 。NIM_MODIFY修 改 托 盘 区 域 的 一
4、个 图 标 。 此 时 第 二 个 参 数 lpdata 指 向 的 NOTIFYICONDATA 结 构 体 中 的 hWnd 和 uID 成 员 用 来 标 示 需 要 被修 改 的 这 个 图 标 。NIM_SETFOCUSVersion 5.0. 设 置 焦 点 。 比 如 当 用 户 操 作 托 盘 图 标 弹 出 菜 单, 而 有 按 下 ESC 键 将 菜 单 消 除 后 , 程 序 应 该 使 用 此 消 息 来 将 焦 点设 置 到 托 盘 图 标 上 。NIM_SETVERSIONVersion 5.0. 设 置 任 务 栏 按 照 第 二 个 参 数 lpdata 指 向
5、 的 NOTIFYICONDATA 结 构 体 中 的 uVersion 成 员 指 定 的 版 本 号 来 工 作。 此 消 息 可 以 允 许 用 户 设 置 是 否 使 用 基 于 Windows2000 的 version 5.0 的 风 格 。 uVersion 的 缺 省 值 为 0, 默 认 指 明 了 使 用 原 始 Windows 95 图 标 消 息 风 格 。 具 体 这 两 者 的 区 别 请 参 考 msdn 中 的Shell_NotifyIcon 函 数 说 明 的 Remarks。lpdata 为 输 入 参 数 , 是 指 向 NOTIFYICONDATA 结
6、构 体 的 指针 , 结 构 体 内 容 用 来 配 合 第 一 个 参 数 wMessage 进 行 图 标 操 作 。3、 返 回 值如 果 图 标 操 作 成 功 返 回 TRUE, 否 则 返 回 FALSE。如 果 dwMessage 参 数 设 为 NIM_SETVERSION, 则 如 果 版本 设 置 成 功 返 回 TRUE, 如 果 设 置 的 版 本 不 支 持 返 回 FALSE。 编 辑 本 段 二 、 NOTIFYICONDATA 结 构 体 说 明包 含 系 统 需 要 的 用 来 传 递 托 盘 区 域 消 息 的 信 息 。1、 格 式typedef stru
7、ct _NOTIFYICONDATA DWORD cbSize;HWND hWnd;UINT uID;UINT uFlags;UINT uCallbackMessage;HICON hIcon;TCHAR szTip64;DWORD dwState;DWORD dwStateMask;TCHAR szInfo256;union UINT uTimeout;UINT uVersion;TCHAR szInfoTitle64;DWORD dwInfoFlags;GUID guidItem; NOTIFYICONDATA, *PNOTIFYICONDATA;2、 成 员 说 明 :cbSize结 构
8、 体 的 大 小 , 以 字 节 为 单 位 。hWnd窗 口 的 句 柄 。 标 示 的 窗 口 用 来 接 收 与 托 盘 图 标 相 关 的 消 息 。Shell_NotifyIcon 函 数 调 用 时 , hWnd 和 uID 成 员 用 来 标 示 具 体 要操 作 的 图 标 。uID应 用 程 序 定 义 的 任 务 栏 图 标 的 标 识 符 。 Shell_NotifyIcon 函 数调 用 时 , hWnd 和 uID 成 员 用 来 标 示 具 体 要 操 作 的 图 标 。 通 过 将 多次 调 用 , 你 可 以 使 用 不 同 的 uID 将 多 个 图 标 关
9、联 到 一 个 窗 口 hWnd。uFlags此 成 员 表 明 具 体 哪 些 其 他 成 员 为 合 法 数 据 ( 即 哪 些 成 员 起 作 用) 。 此 成 员 可 以 为 以 下 值 的 组 合 :NIF_ICONhIcon 成 员 起 作 用 。NIF_MESSAGEuCallbackMessage 成 员 起 作 用 。NIF_TIPszTip 成 员 起 作 用 。NIF_STATEdwState 和 dwStateMask 成 员 起 作 用 。NIF_INFO使 用 气 球 提 示 代 替 普 通 的 工 具 提 示 框 。 szInfo, uTimeout, szInf
10、oTitle 和 dwInfoFlags 成 员 起 作 用 。NIF_GUID保 留 。uCallbackMessage应 用 程 序 定 义 的 消 息 标 示 。 当 托 盘 图 标 区 域 发 生 鼠 标 事 件 或 者使 用 键 盘 选 择 或 激 活 图 标 时 , 系 统 将 使 用 此 标 示 向 由 hWnd 成 员标 示 的 窗 口 发 送 消 息 。 消 息 响 应 函 数 的 wParam 参 数 标 示 了 消 息事 件 发 生 的 任 务 栏 图 标 , lParam 参 数 根 据 事 件 的 不 同 , 包 含 了 鼠标 或 键 盘 的 具 体 消 息 , 例
11、如 当 鼠 标 指 针 移 过 托 盘 图 标 时 , lParam将 为 WM_MOUSEMOVE。hIcon增 加 、 修 改 或 删 除 的 图 标 的 句 柄 。 注 意 , windows 不 同 版 本对 于 图 标 有 不 同 要 求 。 Windows XP 可 支 持 32 位 。szTip指 向 一 个 以 0 结 束 的 字 符 串 的 指 针 。 字 符 串 的 内 容 为 标 准 工具 提 示 的 信 息 。 包 含 最 后 的 0 字 符 , szTip 最 多 含 有 64 个 字 符 。对 于 Version 5.0 和 以 后 版 本 , szTip 最 多
12、含 有 128 个 字 符( 包 含 最 后 的 0 字 符 ) 。dwStateVersion 5.0, 图 标 的 状 态 , 有 两 个 可 选 值 , 如 下 :NIS_HIDDEN图 标 隐 藏NIS_SHAREDICON图 标 共 享dwStateMaskVersion 5.0. 指 明 dwState 成 员 的 那 些 位 可 以 被 设 置 或 者 访问 。 比 如 设 置 此 成 员 为 NIS_HIDDEN, 将 导 致 只 有 hidden 状 态可 以 被 获 取 。szInfoVersion 5.0. 指 向 一 个 以 0 结 束 的 字 符 串 的 指 针 。
13、字 符 串 的内 容 为 气 球 提 示 内 容 。 最 多 含 有 255 个 字 符 。 如 果 要 移 除 已 经 存在 的 气 球 提 示 信 息 , 设 置 uFlags 成 员 为 NIF_INFO, 同 时 将 szInfo 设 为 空 。uTimeout和 uVersion 成 员 为 联 合 体 。 uTimeout 表 示 气 球 提 示 超 时 的时 间 , 单 位 为 毫 秒 , 此 时 间 后 气 球 提 示 将 消 失 。 系 统 默 认 气 球 提 示的 超 时 时 间 最 小 值 为 10 秒 , 最 大 值 为 30 秒 。 如 果 设 置 的 uTimeout 的 值 小 于 10 将 设 置 最 小 值 , 如 果 大 于 30 将 设 置 最 大 值 。 将超 时 时 间 分 为 最 大 最 小 两 种 , 是 因 为 解 决 不 同 图 标 的 气 球 提 示 同 时弹 出 的 问 题 , 详 细 内 容 请 参 考 MSDN 中 NOTIFYICONDATA 结构 体 说 明 的 remarks。uVersion