Database 版 (精华区)

发信人: wodeji (西西), 信区: Database
标  题: [转载] PowerBuilder 开 发 系 列 谈 (14) 
发信站: 紫 丁 香 (Tue Sep 29 17:51:50 1998), 站内信件

【 以下文字转载自 Programming 讨论区 】
【 原文由 two 所发表 】


        熟 悉 Windows 编 程 的 人 员 都 知 道, Windows 的 API 为 程 序 员 提 供 了 大 量
 的 消 息, 约 有 两 百 多 个 的 消 息。 在 PowerBuilder 中, 系 统 将 每 个 Windows 消
 息 做 为 事 件 传 递 给 程 序 员 处 理, 并 且 为 大 多 数 普 通 的 事 件 提 供 了 缺 省
 的 处 理。 

        PowerBuilder 在 语 句 描 绘 器 中 为 每 一 个 标 准 的 控 件 设 定 了 一 些 常 用 的
 事 件,一 般 的 编 程 人 员 基 于 这 些 事 件 就 基 本 可 以 完 成 常 见 的 操 作。 如
 果 我 们 会 遇 到 事 件 的 处 理 是 需 要 另 外 的 截 获 Windows 的 消 息, 我 们 可 以
 在 语 句 描 绘 器 的 菜 单 的 Declare | User Event... 中 加 入 一 个 新 的 事 件, 同 时 指
 出 您 所 希 望 对 应 的 Windows 消 息。 

        Windows API 的 消 息 一 般 以 两 到 三 个 字 符 的 标 识 开 始, 这 个 标 识 标 明
 了 该 消 息 的 来 源 或 对 象。 例 如:pbm_active实 际 上 对 应 的 是
 WM_ACTIVATE,WM 说 明 该 消 息 是 一 窗 口 消 息。 其 它 的 消 息 前 缀 包 括: 

     *BM         按 钮 消 息
     *BN         按 钮 通 知 消 息
     *CB         通 用 对 话 框 消 息
     *CBN        通 用 对 话 框 通 知 消 息
     *DM         对 话 框 消 息
     *EM         编 辑 器 控 件 消 息
     *EN         编 辑 器 控 件 通 知 消 息
     *LB         列 表 框 消 息
     *LBN        列 表 框 通 知 消 息
     *MM         多 媒 体 消 息
     *SBN        卷 滚 条 通 知 消 息

        此 外 还 有 一 个 DDE 消 息,DDE 消 息 从 技 术 上 来 说 属 于 窗 口 消 息, 但
 在 这 里 我 们 把 它 们 分 离 出 来, 因 为 PowerBuilder 并 不 完 全 支 持 全 部 的 DDE
 消 息。 

        消 息 一 般 告 诉 某 个 对 象(如 按 钮) 去 执 行 一 些 动 作。 通 知 消 息 一 般
 由 某 个 控 件 发 出, 它 通 知 应 用 程 序 某 些 事 件 在 其 上 发 生 了。Waite Group
 的 《Windows API 编 程 宝 典》 详 细 描 述 了 这 200 多 个 消 息 的 具 体 含 义, 这
 些 消 息, 我 们 在 PowerBuilder 中 也 可 以 用 Send(handle, message_no, word, long) 函 数
 发 出。 

        所 有 的 PowerBuilder 自 动 映 射 的 事 件 名 都 以"Pbm"前 缀, 例
 如,BM_GETCHECK变 成 了 

        pbm_bmgetcheck。 通 过 向 定 义 用 户 事 件 对 话 框 中 增 加 事 件, 程 序 员 可
 以 在 需 要 的 时 候 截 获 这 些 消 息。 

        PowerBuilder 还 有 另 一 类 消 息 是 标 准 的 Windows API 所 不 提 供 的 消 息。 这
 类 消 息 以"dw"或"dwn"开 头, 如 pbm_dwnretrieveend。 这 些 是 与 数 据 窗 口 有 关 的
 消 息 和 通 知 消 息, 因 为 数 据 窗 口 不 是 标 准 窗 口 对 象, 它 们 有 它 们 自 己
 的 事 件。 

        下 面 我 们 解 释 一 下 PowerBuilder 中 以 pbm 开 头 的 内 部 映 射 事 件 的 含 义。
 限 于 篇 幅, 我 们 不 能 全 部 介 绍, 只 能 将 每 一 类 中 举 一 些 主 要 的 例 子,
 其 余 的 事 件 类 推。 

        单 选 或 多 选 按 钮 消 息(前 缀:pbm_bm) 

 getcheck               单选按钮或多选按钮是否被选?
 getstate               按钮是否加亮
 setcheck               将无线按钮或确认框的选中状态改为未选中状态,反之亦然
 setstate               加亮或不加亮按钮
 change                 改变按钮的风格;例如,改为单选按钮或组合框

 单选或多选按钮通知消息(前缀:pbm_bn)
 clicked                按钮控件被点中
 disable                使按钮控件无效
 double-clicked         按钮控件被双点
 dragdrop               一个对象被放到按钮控件
 dragenter              一个对象被拖到按钮控件
 dragleave              一个对象被拖离按钮控件
 dragover               一个对象被拖经按钮控件
 hilite                 按钮控件将被加亮
 paint                  按钮控件将被绘制
 setfocus               按钮控件将获得聚焦
 unhilite               按钮控件将被不加亮
 通用对话框消息(前缀:pbm_cb)
 addstring              将字符串加到通用对话框
 deletestring           从通用对话框删除一个字符串
 dir                    加一个目录列表到通用对话框
 findstring             搜索以一组字符开头的字符串
 findstringexact        搜索与所提供的字符完全匹配的字符串
 getcount               列表框中的项数
 getcursel              当前被选项的数目
 getdroppedcontrolset   列表框在屏幕上的坐标位置        
 geteditsel             编辑器控件中被选字符的范围
 getextendedui          缺省或扩展的用户界面
 getitemdata            重画的列表框中的 4字节的项
 getitemheight          列表框中某一项的高度
 getlbtext              列表框中的文本
 getlbtextlen           列表框中文本的长度
 insertstring           向列表框中增加新的字符串或4字节项
 limittext              限制能被输入到列表框中的字符数
 resetcontent           删除列表框中所有元素
 selectstring           搜索匹配的字符串并显示
 setcursel              在列表框中选择并显示一项
 seteditsel             在列表框的编辑区域中选择一块文本
 setextendedui          设置缺省或扩展用户界面
 setitemdata            在列表框中设定 4字节(32位)项
 setitemheight          设置列表框中项的高度
 showdropdown           转换(显示或隐藏列表框中拖放区域)

 通用对话框通知消息(前缀:pbm_cbn)
 dblclk                 用户在列表中某一项上双点
 dragdrop               一个对象被放到通用对话框控件上
 dragententer           一个对象被拖到通用对话框控件上
 dragleave              一个对象被拖离通用对话框控件
 dragover               一个对象被拖经通用对话框控件
 dropdown               列表框的下放区域即将被显示
 editchange             编辑器控件中的文本发生变化
 editupdate             列表框编辑器控件中的文本即将被改变
 errspace               列表框满,不能再向其中加入项
 killfocus              通用列表框失去聚焦
 selchange              列表框中被选文本被改变
 selendcancel           用户按下了"取消"按钮
 selendok               用户按下了"确认"按钮
 setfocus               通用对话控件拥有聚焦

 数据窗口消息(前缀:pbm_dw)
 closedropdown          关闭下拉式数据窗口
 scrollend              在数据窗口中卷滚到最后一行
 scrdlhome              在数据窗口中卷滚到第一行
 scrolllineend          卷滚到当前行的行尾(水平方向)
 scrolllinehome         卷滚到当前行的行首(水平方向)

 数据窗口通知消息(前缀:pbm_dwn)
 backtabout             即将通过 Shift+Tab组合键离开该控件
 changing               控件即将被改变
 dropdown               下拉式列表框的下拉部分即将可见
 graphcreate            即将创建图形
 itemchangefocus        数据窗口控件中当前项的聚焦改变
 itemvalidationerror    对当前项的修改引起了一个合法性检查错误
 key                    有键被按下。使用KeyDown()处理键盘值
 lbuttondown            鼠标左键被按下
 lbuttonup              鼠标左键被松开
 mbuttonclk             鼠标中键点击
 mbuttondbclk           鼠标中键双点
 mousemove              鼠标移动
 printmarginchange      打印边界被改变
 processenter           回车键被按下
 rowchange              数据窗口中聚焦从一行转向另一行
 tabdownout             用户在数据窗口最后一行按下了下箭头键
 tabout                 用户在数据窗口的最后一行/列中按下了tab键
 tabupout               用户在数据窗口第一行中按下了上箭头键

 动态数据交换(DDE)消息(前缀:pbm_dde)
 ddeack                 收到一个DDE消息
 ddeinitiate            开始一个DDE会话
 ddeterminate           终止一个DDE会话

 编辑器控件消息(前缀:pbm_em)
 canundo                编辑器控件是否能撤消上一次修改?
 emptyundobuffer        清空由 Windows管理的取消操作的缓冲区
 fmtlines               在多行编辑器控件的行尾增加或删除回车换行
 getfirstvisibleline    返回编辑器控件中可见的第一行的行号
 gethandle              获得编辑器控件使用的内存句柄
 getline                从编辑器控件中复制一行到内存中的一个缓冲区
 getlinecount           返回多行编辑器控件的行数
 getmodify              文本是否被用户修改
 getrect                返回控件的长方形域
 getsel                 返回被选文本的起始位置
 limittext              限制用户键入的文本长度
 linefromchar           返回被选文本的行号
 lineindex              返回编辑器控件中被选行第一个字符在编辑串中的位置
 linelength             返回编辑器控件中被选行中的字符数
 linescroll             水平或垂直卷滚编辑器控件
 replacesel             从剪贴板或从键盘用新文本替换被选文本
 sethandle              设置编辑器控件的句柄指向内存中的一个缓冲区
 setmodify              设置编辑器控件的modified标志
 setpasswordchar        设置用户输入任何文本时显示的字符。用来在输入密码时的显示
 setrect                设置/重置编辑器控件所在的长方形区域。
                        编辑器控件中的文本被重画。
 setrectnp              与Setrect大致相同,除了不重画文本
 setsel                 选择字符
 settabstops            在多行编辑器控件中设置tab stops
 setwordbreak           设置新的词拆分函数
 setwordbreakproc       设置新的词拆分过程
 undo                   撤消最近的编辑操作

 编辑控件通知消息(前缀:pbm_en)
 change                 编辑器控件中的文本发生改变
 errspace               编辑器控件内存缓冲区溢出
 hscroll                用户点中上水平卷滚条
 maxtext                用户试图输入比所允许的更多的文本
 update                 编辑器控件即将显示用户的修改
 vscroll                用户点中了垂直卷滚条

                       


--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.97.236.132]
--
※ 转载:.紫 丁 香 bbs.hit.edu.cn.[FROM: whs.hit.edu.cn]
--
※ 转载:.紫 丁 香 bbs.hit.edu.cn.[FROM: cadcam.hit.edu.c]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:211.298毫秒