今天带来的是一个自创控件,卷帘式菜单
函数接口:
异型控件二.窗体绘制(主体参数,菜单属性,&错误信息)
返回值:bool 成功返回true,创建失败则置错误信息
参数总数:3
参数1:
参数名:主体参数
作用:构造控件主体
参数类型:一维数组
成员总数:7 各成员定义如下:
主体参数[0] = 整型,控件主体x顶点坐标
主体参数[1] = 整型,控件主体y顶点坐标
主体参数[2] = 整型,控件宽
主体参数[3] = 整型,控件高
主体参数[4] = 字符型,主体背景图片路径,可空,如果提供参数,必须提供实路径
主体参数[5] = 字符型,主菜单单击音效文件路径,使用MP3文件或WAM文件,可空,如果提供参数,必须提供实路径
主体参数[6] = 保留,请留空
参数2:
参数名:菜单属性
作用:构造菜单及内容
参数类型:二维数组
各成员定义如下:
第一个维度,每一个下标代表一个主菜单,有多少主菜单则定义多少个下标,比如:
菜单属性[5][] 表示创建的菜单将拥有5个主菜单
第二个维度为菜单具体数量,其成员值为菜单内容,比如:
菜单属性[3][5] 表示创建一个拥有3个主菜单,每个主菜单下最多5个子菜单(最多5个,但不是每个子菜单都必须凑到5个),多个
主菜单下子菜单数量不同的,下标取最多的一个子菜单数量,没有该项子菜单则数组成员留空即可.
整个数组为字符型,每个[N][0]成员均为该菜单层主菜单内容,从[N][1]开始的若干个成员为该级子菜单,比如:
菜单属性=array[2][3]
菜单属性[0][0]="我是第一父菜单"
菜单属性[0][1]="我是第一菜单的子菜单,这个菜单里只要我一个子菜单"
菜单属性[1][0]="我是第二个父菜单"
菜单属性[1][1]="我是第一菜单的子菜单"
菜单属性[1][2]="我是第二菜单的子菜单"
例子中将创建一个::有两个滑块主菜单,第一个主菜单下只有一个子菜单,第二个主菜单下则有两个功能子菜单的卷帘菜单控件
注:此版本最多支持3层主菜单,每层最多3个子菜单
参数4: 错误信息 请提供空变量,函数失败时打印此变量内容获得帮助
菜单运作:
菜单被点击时产生36279消息,该消息需要到消息过程中捕获,其消息参数定义如下:
消息值:36279
w参数:主菜单ID,从0起计,0即第一个父菜单
l参数:子菜单ID,从1起计,1即为某主菜单下第一个子菜单
无论用户单击父菜单或者子菜单,都将产生36279消息,单击父菜单会产生L参数为0的36279消息,通常来说控件自己会响应父菜单点击事件
因此,监控36279消息的同时还应该甄别l消息值,例子如下:
//消息过程功能
功能 异型控件二_消息过程(消息,w参数,l参数)
if(消息==36279)
调试输出("消息: "&消息&" w参数"&w参数&" l参数"&l参数)
endif
功能结束
提示:
$尽管并没有限制控件尺寸,考虑美观,建议尽量创建长条形控件效果会比较好
$虽然支持底图功能,不过菜单会挡住图片,用底图效果是否更好,或者用什么底图效果最好就见仁见智了
$支持主菜单点击音效,点击主菜单时会有音效,尽管没有限制文件播放长度,不过不建议用播放时长太长的文件,应该找那种1秒左右为宜,另:可能声音播放会有延迟
效果图如下:
|