sp;
End If
PopupMenu 的 完 整 句 法 是:
[Form.]PopupMenu menuname[flags[,x[,y]]]
改 变flags 的 值 可 以 控 制 弹 出 式 菜 单 的 表 现 形 式 。flags 有 两 组 值 。 第 一 组 值 用 来 控 制 菜 单 的 显 示 方 式 , 包 括POPUPMENU_LEFTALIGNPOPUPMENU_CENTERALIGN,POPUPMENU_RIGHTALIGN , 分 别 表 示 以x 为 左 边 界 , 以x 为 中 心 和 以x 为 右 边 界 的 显 示 方 式 , 并 且 以x 为 左 边 界 是 缺 省 的 方 式; 另 外 一 组 值 用 来 控 制 菜 单 项 的 选 中 方 式 , 包 括POPUPMENU_LEFTBUTTON 和POPUPMENU_RIGHTBUTTON , 分 别 表 示 左 键 选 中 和 左/ 右 键 选 中 均 可 , 并 且 左 键 选 中 是 缺 省 的 方 式 。flags 的 值 由 上 面 的 两 组 值 经 过OR 运 算 得 出 。 例 如 , 要 求 左 对 齐 显 示 并 且 左 键 选 中 为 准 , 则 应 有:
flags=POPUPMENU_LEFTALIGN OR POPUPMENU_LEFTBUTTON
x 和y 用 来 定 义 菜 单 弹 出 的 位 置 、 缺 省 是 鼠 标 点 中 的 位 置 。
菜 单 项 的 其 他 属 性
用ALT+ 字 母 键 激 活 顶 层 菜 单 , 或 者 在 菜 单 激 活 后 用 字 母 键 激 活 一 个 菜 单 项 , 必 须 学 会 使 用& 。& 用 在 菜 单 项 的 标 题 属 性(Caption) 里 。 它 的 用 法 和 作 用 与 在 用C 语 言 编 制 的Windows 程 序 中 的 用 法 和 作 用 相 同 。
有 时 希 望 顶 层 菜 单 之 间 的 间 隔 大 一 些 , 或 者 某 个 顶 层 菜 单 出 现 在 菜 单 条 的 最 右 端 , 这 时 就 要 用 到 标 题 属 性 是 空 格 的 菜 单 。 如 果 一 个 菜 单 的 标 题 是 由 多 个 空 格 组 成 的 , 那 么 这 个 菜 单 在 菜 单 条 上 就 占 用 跟 空 格 的 个 数 相 应 的 空 间 , 并 且 它 后 面 的 菜 单 也 顺 序 地 后 移; 如 果 这 个 菜 单 的Visible 属 性 是False , 那 么 它 就 跟 不 存 在 一 样 。
窗 口 设 计 的 原 则 和 举 例
下 面 是 一 个 浮 动 窗 口 技 术 的 例 子 。 为 了 引 起 用 户 的 注 意 , 或 者 必 须 保 证 含 有 重 要 信 息 的 窗 口 不 被 其 他 窗 口 覆 盖 , 就 要 用 到 浮 动 窗 口 技 术 , 建 立 一 个“ 总 在 最 前 面”(TopMost) 的 窗 口 。 具 体 的 做 法 是:
(1) 在VB 程 序 中 加 入 如 下 的 声 明:
Declare Function SetWindowPos Lib"user"(Byval h%,Byval hb%,Byval x%,Byval y%,By
val cx%,Byval cy%,Byval f%)As Integer
Global Const SWP_NOMOVE=2
Global Const SWP_NOSIZE=1
Global Const HWND_TOPMOST= 1
Global Const HWND_NOTOPMOST= 2
Global Const FLAGS=SWP_NOMOVE Or SWP_NOSIZE
(2) 假 设 要 把 窗 体frmExample 设 置 成 总 在 最 前 面 的 窗 口 , 只 要 在frmExample 窗 体 的Form_Load
过 程 里 加 入 以 下 代 码:
Dim success%
success=SetWindowPos(frmExample.hWnd,HWND_TOPMOST,0,0,0,0,FLAGS)
如 果 要 取 消 总 在 最 前 面 的 特 性 , 则 可 以 执 行 如 下 的 代 码:
success=SetWindowPos(frmExample.hWnd,HWND_NOTOPMOST,0,0,0,0,FLAGS)
success 不 等 于0 表 示SetWindowPos 执 行 成 功 。
在MDI 程 序 里 , 有 一 个 窗 口 是 所 有 其 他 窗 口 的 父 窗 口 , 各 个 子 窗 口 完 成 相 对 独 立 的 功 能 , 就 像 是 多 个 独 立 的 工 具