首页 IDL入门教程_13(附录A组件的事件结构)

IDL入门教程_13(附录A组件的事件结构)

举报
开通vip

IDL入门教程_13(附录A组件的事件结构)附录A 组件的事件结构 事件结构的定义 事件结构包含了特定组件的相关信息。每个事件都产生于它自身的、特定的事件结构中,然后被发送到事件处理模块。事件结构可以是命名的也可以是匿名的IDL结构变量。使事件结构与其它结构区分开来的是,事件结构有ID、Top和Handler三个字段。这三个字段都是长整型。下面列举了由IDL组件创建或返回的事件结构。 公共字段的定义 字段ID,通常是长整型,是产生事件的组件的唯一标示符, 产生事件的组件通常是组件层次结构中的一部分。那么字段Top就是该层次结构中顶级base的唯一标...

IDL入门教程_13(附录A组件的事件结构)
附录A 组件的事件结构 事件结构的定义 事件结构包含了特定组件的相关信息。每个事件都产生于它自身的、特定的事件结构中,然后被发送到事件处理模块。事件结构可以是命名的也可以是匿名的IDL结构变量。使事件结构与其它结构区分开来的是,事件结构有ID、Top和Handler三个字段。这三个字段都是长整型。下面列举了由IDL组件创建或返回的事件结构。 公共字段的定义 字段ID,通常是长整型,是产生事件的组件的唯一标示符, 产生事件的组件通常是组件层次结构中的一部分。那么字段Top就是该层次结构中顶级base的唯一标示符,它通常也是一个长整型的数。 事件产生的事件结构都要发送到事件处理程序中。每个事件处理程序都与某一个组件联系在一起。而字段Handler,就是那个与事件处理程序相联系的组件的标识符。它通常是个长整型的数. 这些公共字段的详细信息以及它们是如何定义的,请参阅256页的“事件结构中的公共字段” 基本组件的事件结构 base组件 {WIDGET_BASE, ID:0L, Top:0L, Handler:0L, X:0, Y:0} 只有顶级base,并且是在用户改变其大小的情况下才会产生事件。要产生事件,那么关键字TLB_Size_Events必须被显式地指定。字段X和Y是顶级base的尺寸大小,以像素为单位。Base的尺寸大小并不包含窗口的任何边框。 按钮组件 {WIDGET_BUTTON, ID:0L, Top:0L, Handler:0L, Select:0} 如果按钮被选中,那么字段Select被设置为1;如果按钮被释放,那么就被设为0。一般的按钮在被释放时并不产生事件,因此Select字段一直为1。然而,单选按钮对选中和释放动作会分别产生事件。 绘图组件 {WIDGET_DRAW, ID:0L, Top:0L, Handler:0L, Type:0, X:0, Y:0, Press:0, Release:0,Clicks:0} 字段Type将告诉事件的类型,它可能的值有:鼠标按下(0);鼠标松开(1);鼠标移动(2);视点滚动(3)和显示(4)。上面所有的事件都必须显式地指定,否则相应的事件是不会产生的。 字段X和Y给出了事件发生时的设备或屏幕坐标,绘图组件的左下角为坐标原点。字段Press和Release都是位掩码,当鼠标被按下或释放时,它们的值就分别存在了。其中1 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示鼠标左键,2表示鼠标中键,4表示鼠标右键。如果是个鼠标移动事件,那么Press和Release都被设置为0。 当鼠标单击时,字段Clicks返回1,双击时返回2。 下拉式列表组件 {WIDGET_DROPLIST, ID:0L, Top:0L, Handler:0L, Index:0L} 字段Index返回所选择列表项的索引号。通过它,可以对最初赋予该下拉式列表的数组进行引用。(数组应该存放于组件的用户值中或其他什么地方。) 标签组件 标签组件本身并不产生事件,但可以通过它来设置Timer事件。 列表组件 {WIDGET_LIST, ID:0L, Top:0L, Handler:0L, Index:0L, Clicks:0L } 字段Index返回所选项的索引号,通过索引号,可以对最初赋予给列表的数组进行引用。字段Clicks返回1或2,这取决于列表项是如何选择的。如果列表项被双击选中,Clicks返回2。主意,在事件处理程序中,单击和双击的信息都可以获得。 滑动条组件 {WIDGET_SLIDER, ID:0L, Top:0L, Handler:0L, Value:0, Drag:0} 字段Value返回滑动条的新值。当滑动条在拽动过程中,字段Drag返回1,拽动操作结束,则Drag返回0。注意,只有在UNIX操作系统上,并且设置了Drag关键字,滑动条才会产生Drag事件。 表单组件 插入单个字符事件 {WIDGET_TABLE_CH, ID:0L, Top:0L, Handler:0L, Type:0, Offset:0L, CH:0B, X: 0L, Y:0L} 字段Offset是包含的是一个以0为基数的插入点位置,插入的字符在插入点之后。字段Ch是当前插入字符的ASCII码,字段X和Y,则表示的是当前单元格在表单中的位置,也是以0为基数的。 插入字符串事件 {WIDGET_TABLE_STR, ID:0L, Top:0L, Handler:0L, Type:1, Offset:0L, Str:’’, X: 0L, Y:0L } 字段Str是要插入的字符串。 删除字符串事件 {WIDGET_TABLE_DEL, ID:0L, Top:0L, Handler:0L, Type:2, Offset:0L, Length:0L, X: 0L, Y:0L } 字段Offset是要删除的第一个字符所在的位置,它是以0为基数的。同时它也是下一个字符的插入点。字段Length表示删除字符的个数。 选择文本是事件 {WIDGET_TABLE_TEXT_SEL, ID:0L, Top:0L, Handler:0L, Type:3, Offset:0L, Length:0L, X: 0L, Y:0L } 当插入点的位置发生变化时,这个事件就会被引发。字段Offset是所选文本的第一个字符的位置,以0为基数。字段Length为所选字符的个数。如果Length为0,则表明没有选中,且字符插入点也被设置为Offset值。 选择单元事件 {WIDGET_TABLE_CELL_SEL, ID:0L, Top:0L, Handler:0L, Type:4, Sel_Left:0L, Sel_Top:0L, Sel_Right:0L, Sel_Bottom:0L} 当前所选择的单元格发生变化时,这个事件会被引发。所选择的单元格范围由字段Sel_Left、Sel_Top、Sel_Right和Sel_Bottom确定,它们都是以0为基数。当所选择的单元格在取消选择的事件发生时(选择发生改变或点击表单左上角会导致这个事件的发生),字段Sel_Left、Sel_Top、Sel_Right和Sel_Bottom的值都为-1。 注意,这就意味着,当选择焦点从一个已选中的单元格到一个新单元格时,会产生两次WIDGET_TABLE_CELL_SEL事件。在程序中,要将选择和取消选择区分开来。 改变行高事件 {WIDGET_TABLE_ROW_HEIGHT, ID:0L, Top:0L, Handler:0L, Type:6, Row:0L, Height:0L} 当用户改变表单给定行的高度时会引发这个事件。字段Row包含了所选定行的值(以0 为基数),字段Height包含的是改变后的高度。 改变列宽事件 {WIDGET_TABLE_COLUMN_WIDTH, ID:0L, Top:0L, Handler:0L, Type:7, Column:0L, Width:0L} 当用户改变表单给定列的宽度时会引发这个事件。字段Column包含了所选定列的值(以0 为基数),字段Width包含的是改变后的高度。 无效数据事件 {WIDGET_TABLE_INVALID_DATA, ID:0L, Top:0L, Handler:0L, Type:8, Str:’’, X:0L ,Y:0L} 当这个事件发生时,所在的单元格的数据保持不变。用户输入的无效数据保存在字段Str中。单元格的位置由字段X和Y来确定。 文本组件 插入字符事件 {WIDGET_TEXT_CH,ID:0L, Top:0L, Handler:0L, Type:0, Offset:0L, Ch:0B} 字段Offset是当前插入点的位置(以0为基数)。字符Ch为插入字符的ASCII码。 插入字符串事件 {WIDGET_TEXT_STR,ID:0L, Top:0L, Handler:0L, Type:1, Offset:0L, Str:’’ } 字段Str为插入的字符串。 删除字符串事件 {WIDGET_TEXT_STR,ID:0L, Top:0L, Handler:0L, Type:2, Offset:0L, Length:0L } 字段Offset为要删除的第一个字符串的位置(以0为基数),它同时也是下一个字符的插入点。字段Length为要删除的个数。 文本选择事件 { WIDGET_TEXT_STR,ID:0L, Top:0L, Handler:0L, Type:3, Offset:0L, Length:0L } 插入点的改变会引发这个事件的产生。字段Offset为所选择的第一个字符的位置(以0为基数)。字段Length为要所选择字符的个数。Length表明没有选中字符,并且插入点被设置为Offset的值。 复合组件的事件结构 CW_Animate {ID:0L, Top:0L, Handler:0L, Action:0L} 字段Action中唯一允许的字符串就是“DONE” CW_Arcball { ID:0L, Top:0L, Handler:0L, Value:FltArr(3,3)} 字段Value包含了新的旋转矩阵。 CW_BGroup { ID:0L, Top:0L, Handler:0L, Select:0, Value:*} 字段Select包含了新的旋转矩阵。字段Value可以是按钮的Index、ID、Name和按钮用户值,这取决于组件创建时情况。 CW_Clr_Index {CW_COLOR_INDEX, ID:0L, Top:0L, Handler:0L, Value:0} 字段Value为所选择的颜色的索引号。 CW_Color_Sel {COLORSEL_EVENT, ID:0L, Top:0L, Handler:0L, Value:0} 字段Value为所选择的颜色的索引号。 CW_DefROI 这个复合组件有内部事件处理程序,并且不会产生任何外部事件。 CW_Field { ID:0L, Top:0L, Handler:0L, Value:’’,Type:0, Update:0} 字段Value包含了文本组件中的值。字段Type指定了数据的类型,它可能的值有:0(字符串),1(浮点数),2(整数)或3(长整型)。如果没有更新,则字段Update返回0,否则返回1。 CW_Form { ID:0L, Top:0L, Handler:0L, Tag:’’,Value:0, Quit:0} 字段Tag包含了那些发生了变化的字段标签。字段Value则是包含了变化后的新值;字段;如果Quit被设置,那么Quit返回0,否则返回1。 CW_Flisder { ID:0L, Top:0L, Handler:0L,Value:0.0, Drag:0} 字段Value返回滑动条的当前值。当滑动条在拽动过程中,字段Drag返回1,拽动操作结束,则Drag返回0。 CW_Orient 当组件内部不同子组件改变变换矩阵时,这个复合组件产生不同的事件。一般来讲,这个组件在字段ID第一次发生变化时,将内部组件所产生的的事件直接传送到本组件的顶级base中。大多数事件处理程序都忽略该复合组件的事件,因为系统变量!P.T在任何时候都是自动更新的。 CW_PDMenu {ID:0L, Top:0L, Handler:0L, Value:*} 字段Value既可以是按钮组件的Index、ID、Name,也可以是按钮的Full_Name,这取决于按钮组件是如何创建的。 CW_RGBSlider {ID:0L, Top:0L, Handler:0L, R:0B, G:0B, B:0B} 字段R、G、B分别代表所选择颜色的红、绿、蓝的值。 CW_Zoom {ZOOM_EVENT,ID:0L, Top:0L, Handler:0L, XSize:0L, Ysize:0L, X0:0L, Y0:0L, X1:0L, Y1:0L } 字段Xsize和Ysize包含了缩放后图像的大小,字段X0,Y0,X1,Y1分别包含了原始图像左下角和右上角的坐标。 组件程序的事件结构 Xcolors {XCOLORS_LOAD, ID:0L, Top:0L, Handler:0L, R:BytArr(!D.Table_Size), G:BytArr(!D.Table_Size), B:BytArr(!D.Table_Size), Index:0} Xcolors将向由NotifyID所标识的组件发送事件。字段R、G、B分别包含了当前颜色表的红、绿、蓝的向量值。字段Index设置为-1,或者在载入了颜色表后设置为颜色表的索引值。 其他组件的事件结构 下面所列出的是组件产生的其他事件。 键盘焦点事件 {WIDGET_KBRD_FOCUS, ID:0L, Top:0L, Handler:0L, Enter:0L} 某些组件,如文本框,在设置了关键字KBRD_FOCUS_EVENTS后可以产生键盘焦点事件。当这些组件获得键盘焦点时(字段Enter设置为1)或失去键盘焦点时(字段Enter设置为0)会产生这个事件。 组件退出请求事件 {WIDGET_KILL_REQUEST, ID:0L, Top:0L, Handler:0L} 设置了关键字TLB_KILL_REQUEST_EVENTS的顶级base在窗口管理器销毁该组件(比如,用户用鼠标关闭窗口,而不是点击Quit按钮)时就会接收到这个事件。不管销毁事件是来自Quit按钮,还是来自窗口管理器,调用CleanUp过程来处理任何组件的销毁事件会更加简单。(CleanUp过程的详细信息请参阅278页的“使用CleanUp过程来防止内存泄漏”) 组建计时器事件 {WIDGET_TIMER, ID:0L, Top:0L, Handler:0L} 事件处理程序在接收到计时器事件时可以做任何事情。字段ID是用来标识设置计时器的组件。 组件跟踪事件 {WIDGET_TRACKING, ID:0L, Top:0L, Handler:0L, Enter:0} 每次鼠标进入到组件(字段Enter设置为1)或从组件出来(字段Enter设置为0)时都产生这个事件。对于指定的组件,如果要产生这个事件,则必须设置关键字Tracking_Events。注意,在Windows操作系统下,跟踪事件运行得不是很好。 附录B 数据文件描述 在这里,列举了本书所涉及到的有关数据文件。这些文件可以从下面网站中下载到: ftp://ftp.dfanning.com/pub/dfanning/outgoing/coyote 同时,这些文件也可以在IDL的目录下找到。详细信息请参阅7页的“拷贝数据文件”。 文件名称 描 述 类型 X Y Z abnorm.dat 开有小孔的血小球 字节 64 64 15 cereb.dat 大脑的X射线影像 字节 512 512 1 convec.dat 地幔对流图像 字节 248 248 1 ctscan.dat 胸腔CT扫描图像 字节 256 256 1 galaxy.dat 银河系图像 字节 256 256 1 head.dat 人头的MRI切片组 字节 80 100 57 hurric.dat Gilbert飓风数据 字节 440 340 1 image24.dat 彩色的世界海拔高程数据 字节 3 360 360 jet.dat 水利模拟 字节 81 40 101 m51.dat M51星系图像 字节 340 440 1 people.dat RSI公司的创始人图像 字节 192 192 2 worldelv.dat 世界海拔高程数据 字节 360 360 1 PAGE 6
本文档为【IDL入门教程_13(附录A组件的事件结构)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_797605
暂无简介~
格式:doc
大小:54KB
软件:Word
页数:0
分类:互联网
上传时间:2018-09-10
浏览量:3