今天带来的是一个自创控件,卷帘式菜单 
 
函数接口: 
异型控件二.窗体绘制(主体参数,菜单属性,&错误信息) 
返回值: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秒左右为宜,另:可能声音播放会有延迟 
 
效果图如下: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |