使用SendMessage函数滚动文本框控件中的内容

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 showman 的 blog

在visual basic 中, 可 以 通 过 程 序 使 文 本 框 控 件 中 的 内 容 进 行 滚 动, 而 不 用 等 待 用 户 单 击 滚 动 条 控 件, 可 以 通 过 使 用windows api 的sendmessage 函 数 将 一 个 或 多 个 滚 动 消 息 发 送 到 系 统 来 实 现 上 述 功 能。

在 文 本 框 控 件 中 滚 动 ---- 在 下 面 的 样 例 程 序 中, 连 接 到left 命 令 按 钮 上 的 代 码 将 文 本 框 中 的 内 容 向 左 移 动 一 个 字 符 的 位 置。 当 用 户 单 击 了 文 本 框 控 件 上 的 水 平 滚 动 条 时, 该 消 息 被 发 送 到 窗 口。 然 而, 在 这 个 程 序 中, 是 在 用 户 单 击 命 令 按 钮 时 发 送 该 消 息。

---- 要 控 制 滚 动 行 为 的 方 向, 必 须 告 诉sendmessage 函 数 将 一 个wm_hscroll 消 息 发 送 到 文 本 框 控 件 中, 并 在wparam 参 数 中 指 定 方 向 参 数。 下 面 是 可 以 在wparam 参 数 中 指 定 的 有 效 设 置。

---- sb_left 往 左 边 移 动 较 多 部 分
---- sb_right 往 右 边 移 动 较 多 部 分
---- sb_lineleft 往 左 边 移 动 一 个 单 元
---- sb_lineright 往 右 边 移 动 一 个 单 元

---- 可 见, 要 将 文 本 框 中 的 文 本 向 左 移 动 一 个 字 符, 可 以 将wparam 参 数 设 置 为sb_lineleft; 要 将 文 本 框 中 的 内 容 向 右 移 动 一 个 字 符, 则 将wparam 参 数 设 置 为sb_lineright, 等 等。

样 例 程 序 ---- 该 程 序 显 示 了 如 何 使 用sendmessage 函 数 来 滚 动 文 本 框 控 件 中 的 内 容。

---- 1. 在visual basic 中 开 始 一 个 新 的 工 程, 采 用 缺 省 的 方 法 建 立form1。
---- 2. 将 如 下 常 量 和 声 明 语 句 添 加 到form1 的 通 用 声 明 部 分 中( 注 意 该 声 明 语 句 需 要 书 写 在 一 行 内):
---- private declare function sendmessage lib "user32" alias "sendmessagea" (byval hwnd as long, byval wmsg as long, byval wparam as integer, byval lparam as long) as long
---- const sb_lineright = 1
---- const sb_lineleft = 0
---- const wm_hscroll = &h114

---- 3. 在form1 上 添 加 一 个 文 本 框 控 件, 采 用 缺 省 的 方 法 建 立text1。 将 其multiline 属 性 设 置 为true,scroolbars 属 性 设 置 为3-both。

---- 4. 在form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立command1。
---- 将 其caption 属 性 设 置 为“ 左”。

---- 5. 将 如 下 代 码 添 加 到command1 的 单 击 事 件 中:


private sub command1_click()
    dim x as long
    x = sendmessage(text1.hwnd, wm_hscroll,
        sb_lineleft, byval 0&)
end sub

---- 6. 在form1 上 添 加 第 二 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立command2。
---- 将 其caption 属 性 设 置 为“ 右”。

---- 7. 将 如 下 代 码 添 加 到command2 的 单 击 事 件 中:


private sub command2_click()
    dim x as long
    x = sendmessage(text1.hwnd, wm_hscroll,
        sb_lineright, byval 0&)
end sub

---- 按 下f5 键 来 执 行 该 程 序。 在 文 本 框 控 件 中 键 入 一 些 文 本, 如 图1。 单 击 左 命 令 按 钮, 文 本 将 被 往 左 滚 动 一 个 字 符, 如 图2。 单 击 右 命 令 按 钮, 文 本 将 被 往 右 滚 动 一 个 字 符 的 位 置, 如 图3。


本文关键:使用SendMessage函数滚动文本框控件中的内容
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top