为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言例程 正文

易语言API实现菜单类

三叶资源网 2020-04-29 11:43:09 易语言例程 1634 ℃ 0 评论
.版本 2
.支持库 spec

.程序集 窗口程序集_窗口1, , , 演示窗口的程序集
.程序集变量 窗口句柄, 整数型, , , 用于存储窗口句柄
.程序集变量 菜单, Qn菜单, , , 本模块的Qn菜单
.程序集变量 托盘, 类_托盘, , , 精易模块的 类_托盘 
.程序集变量 主菜单句柄, 整数型, , , 创建的主菜单句柄
.程序集变量 主菜单的子菜单句柄, 整数型, , , 用主菜单句柄创建的子菜单句柄
.程序集变量 二菜单句柄, 整数型, , , 创建的二菜单句柄
.程序集变量 二菜单的子菜单句柄, 整数型, , , 用二菜单句柄创建的二菜单子菜单句柄
.程序集变量 二菜单的子子菜单句柄, 整数型, , , 用二菜单子菜单句柄创建的二菜单的子子菜单句柄
.程序集变量 三菜单句柄, 整数型, , , 创建的三菜单句柄
.程序集变量 三菜单的子菜单句柄, 整数型, , , 用三菜单句柄创建的三菜单的子菜单句柄
.程序集变量 菜单起始ID, 整数型, , , 创建菜单必须的ID变量建议30000开始
.程序集变量 消息指针, 整数型, , , SetWindowLongA方法的指针

.子程序 _演示窗口_创建完毕

窗口句柄 = 取窗口句柄 ()  ' 取窗口句柄

消息指针 = SetWindowLongA (窗口句柄, #GWL_WNDPROC, 到整数 (&菜单处理过程))  ' 监控窗口消息

托盘.创建 (窗口句柄, #测试图标, “Qn菜单演示例程”)  ' 用精易模块创建托盘图标
托盘.挂接事件 (&托盘事件)  ' 挂接精易模块创建托盘图标的事件

菜单起始ID = 30000  ' 将菜单起始ID设置为30000

主菜单句柄 = 菜单.创建弹出 ()  ' 创建一个弹出菜单并返回一个句柄
菜单.添加_图片 (主菜单句柄, #测试图标, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个用图片当做背景的菜单并添加事件
' ============   www.sanye.cx  =============--
’本站收录资源,如有密码,默认解压密码都为:www.sanye.cx
’三叶资源网官方④群:72857039
' 投稿邮箱:[email protected]
' ============ =====================--
’专注易语言,按键精灵等编程源码分享的网站
’三叶资源网收集的软件和源码,大部分为软件作者或网友推荐,
’版权归原作者所有,仅供学习和研究使用。
’转载本站提供的资源请勿删除本说明文件。
' 本站提供资源只可供研究使用,请在下载24小时内删除,勿用于商业用途,由此引起一切后果与本站无关。
' ============   www.sanye.cx  =============--
' 本源码来自三叶资源网(www.sanye.cx)
菜单.添加 (主菜单句柄, “Qn菜单演示例程”, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个普通的菜单并添加事件

主菜单的子菜单句柄 = 菜单.添加 (主菜单句柄, “子菜单演示”, , 0, , )  ' 用刚刚创建的弹出菜单句柄返回一个子菜单句柄
菜单.插入A (主菜单的子菜单句柄, 1, “子菜单带图标演示”, 下一个菜单ID (), , #测试图标, &主菜单单击, &主菜单点燃)  ' 添加一个带图标和文本的子菜单并添加事件
菜单.添加 (主菜单的子菜单句柄, “子菜单演示”, 下一个菜单ID (), 0, &子菜单单击, &子菜单点燃)  ' 添加一个普通的子菜单并添加事件
菜单.添加 (主菜单的子菜单句柄, “子菜单演示”, 下一个菜单ID (), 0, &子菜单单击, &子菜单点燃)  ' 添加一个普通的子菜单并添加事件

菜单.插入A (主菜单句柄, 3, “带图标演示”, 下一个菜单ID (), , #测试图标, &主菜单单击, &主菜单点燃)  ' 添加一个带图标和文本的菜单并添加事件
菜单.添加 (主菜单句柄, “主菜单演示1”, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个普通的菜单并添加事件
菜单.添加 (主菜单句柄, “主菜单演示2”, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个普通的菜单并添加事件
菜单.添加 (主菜单句柄, “主菜单演示3”, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个普通的菜单并添加事件
菜单.添加 (主菜单句柄, “主菜单演示4”, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个普通的菜单并添加事件
菜单.添加 (主菜单句柄, “主菜单演示5”, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个普通的菜单并添加事件
菜单.添加 (主菜单句柄, “”, 1, 2048, , )  ' 添加一个分隔符的菜单并添加事件
菜单.添加 (主菜单句柄, “主菜单演示6”, 下一个菜单ID (), 0, &主菜单单击, &主菜单点燃)  ' 添加一个普通的菜单并添加事件

二菜单句柄 = 菜单.创建弹出 ()  ' 在创建一个弹出菜单并返回一个句柄
菜单.添加 (二菜单句柄, “带选中的菜单演示”, 下一个菜单ID (), 8, &带选中的菜单子程序, )  ' 创建一个带选中的菜单演示并添加事件
菜单.添加 (二菜单句柄, “二菜单演示”, 下一个菜单ID (), 0, , )  ' 添加一个普通的菜单并添加事件
菜单.添加 (二菜单句柄, “二菜单演示”, 下一个菜单ID (), 0, , )  ' 添加一个普通的菜单并添加事件
菜单.添加 (二菜单句柄, “”, 1, 2048, , )  ' 添加一个分隔符的菜单并添加事件
菜单.添加 (二菜单句柄, “二菜单演示”, 下一个菜单ID (), 0, , )
菜单.添加 (二菜单句柄, “二菜单演示”, 下一个菜单ID (), 0, , )
菜单.添加 (二菜单句柄, “二菜单演示”, 下一个菜单ID (), 0, , )

二菜单的子菜单句柄 = 菜单.添加 (二菜单句柄, “二菜单演示”, , 0, , )
菜单.添加 (二菜单的子菜单句柄, “子菜单演示”, 下一个菜单ID (), 0, , )
菜单.添加 (二菜单的子菜单句柄, “子菜单演示”, 下一个菜单ID (), 0, , )
菜单.添加 (二菜单的子子菜单句柄, “”, 1, 2048, , )

二菜单的子子菜单句柄 = 菜单.添加 (二菜单的子菜单句柄, “子菜单演示”, , 0, , )
菜单.添加 (二菜单的子子菜单句柄, “子子菜单演示”, 下一个菜单ID (), 0, , )
菜单.添加 (二菜单的子子菜单句柄, “子子菜单演示”, 下一个菜单ID (), 0, , )
菜单.添加 (二菜单的子子菜单句柄, “子子菜单演示”, 下一个菜单ID (), 0, , )
菜单.添加 (二菜单的子子菜单句柄, “子子菜单演示”, 下一个菜单ID (), 0, , )

多重加入 ({ “三菜单演示”, “三菜单演示1”, “三菜单演示2”, “三菜单演示3”, “三菜单演示4”, “三菜单演示5”, “三菜单演示6” })  ' 用循环方式添加菜单并变成子程序

调试输出 (菜单.是否菜单 (主菜单句柄))

.子程序 多重加入, , , 多重加入菜单
.参数 菜单名组, 文本型, 数组
.局部变量 i, 整数型

三菜单句柄 = 菜单.创建弹出 ()
.计次循环首 (取数组成员数 (菜单名组), i)
    菜单.插入A (三菜单句柄, i, 菜单名组 [i], 下一个菜单ID (), 0, , &多重加入子程序, )
.计次循环尾 ()

.子程序 带选中的菜单子程序, , , 带选中的菜单子程序事件
.参数 菜单ID, 整数型
.参数 窗口句柄, 整数型
.局部变量 形态, 整数型

形态 = 菜单.取状态 (二菜单句柄, 菜单ID, 真)

.如果真 (形态 = 0)
    菜单.选中 (二菜单句柄, 菜单ID, 真, 真)
    调试输出 (“真”)
.如果真结束

.如果真 (形态 = 8)
    菜单.选中 (二菜单句柄, 菜单ID, 假, 真)
    调试输出 (“假”)
.如果真结束


.子程序 多重加入子程序, , , 多重加入菜单的子程序
.参数 菜单ID, 整数型
.参数 窗口句柄, 整数型
.局部变量 索引, 整数型

.判断开始 (窗口句柄 = 0)
    索引 = 菜单.取索引 (三菜单句柄, 菜单ID) + 1
.默认
    .如果 (窗口句柄 < 8 且 窗口句柄 > 0)
        索引 = 窗口句柄
    .否则
        索引 = 菜单.取索引 (三菜单句柄, 菜单ID) + 1
    .如果结束

.判断结束

信息框子程序 (“主句柄” + 到文本 (三菜单句柄) + #换行符 + “句柄为 ” + 到文本 (窗口句柄) + #换行符 + “ID为 ” + 到文本 (菜单ID) + #换行符 + “索引为 ” + 到文本 (索引) + #换行符 + “标题为 ” + 菜单.取标题 (三菜单句柄, 菜单ID) + #换行符 + “形态 被点击”)

.子程序 信息框子程序
.参数 参数, 文本型

信息框 (参数, #信息图标, “Qn菜单演示例程”, )

.子程序 _主菜单_被单击, , , 主菜单按钮被点击

菜单.弹出 (主菜单句柄, , , , 窗口句柄)


.子程序 _菜单二_被单击, , , 菜单二按钮被点击

菜单.弹出 (二菜单句柄, , , , 窗口句柄)


.子程序 _菜单三_被单击, , , 菜单三按钮被点击

菜单.弹出 (三菜单句柄, , , , 窗口句柄)


.子程序 菜单处理过程, 整数型, , 用于处理菜单过程
.参数 窗口句柄, 整数型, , hWnd
.参数 消息, 整数型, , uMsg
.参数 参数1, 整数型, , wParam
.参数 参数2, 整数型, , lParam
.局部变量 低, 整数型
.局部变量 高, 整数型

.判断开始 (消息 = #WM_COMMAND)  ' 窗口菜单被选择
    低 = 位与 (参数1, 65535)
    高 = 参数1 \ 65536
    .如果真 (参数2 = 0 且 高 = 0)
        菜单.处理菜单事件 (窗口句柄, 低, )
    .如果真结束

.默认
    .如果真 (消息 = #WM_MENUSELECT)  ' 鼠标经过菜单
        菜单.处理菜单事件 (窗口句柄, 位与 (参数1, 65535), 真)
    .如果真结束

.判断结束

返回 (CallWindowProcA (消息指针, 窗口句柄, 消息, 参数1, 参数2))

.子程序 托盘事件
.参数 操作类型, 整数型

.如果真 (操作类型 = #WM_LBUTTONDOWN)
    菜单.弹出托盘 (主菜单句柄, , , , 窗口句柄, 真)  ' 准备弹出托盘菜单
.如果真结束

.如果真 (操作类型 = #WM_RBUTTONUP)
    菜单.弹出托盘 (主菜单句柄, , , , 窗口句柄, )  ' 弹出托盘菜单
.如果真结束


.子程序 子菜单点燃, , , 主菜单的子菜单点燃事件

调试输出 (1)

.子程序 子菜单单击, , , 主菜单的子菜单单击事件

调试输出 (2)

.子程序 主菜单点燃, , , 主菜单点燃事件
.参数 菜单ID, 整数型
.参数 窗口句柄, 整数型
.局部变量 索引, 整数型

.判断开始 (窗口句柄 = 0)
    索引 = 菜单.取索引 (主菜单句柄, 菜单ID) + 1
.默认
    .如果 (窗口句柄 < 8 且 窗口句柄 > 0)
        索引 = 窗口句柄
    .否则
        索引 = 菜单.取索引 (主菜单句柄, 菜单ID) + 1
    .如果结束
    ' ============   www.sanye.cx  =============--
    ’本站收录资源,如有密码,默认解压密码都为:www.sanye.cx
    ’三叶资源网官方④群:72857039
    ' 投稿邮箱:[email protected]
    ' ============ =====================--
    ’专注易语言,按键精灵等编程源码分享的网站
    ’三叶资源网收集的软件和源码,大部分为软件作者或网友推荐,
    ’版权归原作者所有,仅供学习和研究使用。
    ’转载本站提供的资源请勿删除本说明文件。
    ' 本站提供资源只可供研究使用,请在下载24小时内删除,勿用于商业用途,由此引起一切后果与本站无关。
    ' ============   www.sanye.cx  =============--
    ' 本源码来自三叶资源网(www.sanye.cx)

.判断结束
调试输出 (“句柄为” + 到文本 (窗口句柄) + “ ID为” + 到文本 (菜单ID) + “ 索引为” + 到文本 (索引) + “ 点击”)

.子程序 主菜单单击, , , 主菜单单击事件
.参数 菜单ID, 整数型
.参数 窗口句柄, 整数型
.局部变量 索引, 整数型

.判断开始 (窗口句柄 = 0)
    索引 = 菜单.取索引 (主菜单句柄, 菜单ID) + 1
.默认
    .如果 (窗口句柄 < 8 且 窗口句柄 > 0)
        索引 = 窗口句柄
    .否则
        索引 = 菜单.取索引 (主菜单句柄, 菜单ID) + 1
    .如果结束

.判断结束
.如果真 (索引 = 1)
    调试输出 (“一”)
.如果真结束

.如果真 (索引 = 2)
    调试输出 (“二”)
.如果真结束

.如果真 (索引 = 3)
    调试输出 (“三”)
.如果真结束

.如果真 (索引 = 4)
    调试输出 (“四”)
.如果真结束


.子程序 下一个菜单ID, 整数型, , 生存下一个菜单ID

菜单起始ID = 菜单起始ID + 1
返回 (菜单起始ID)

@琪诺兔

文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
腾讯滑块验证码模块源码获取本机信息刺激战场辅助验证码自动识别服务端javascript面试题识别位图斜切ExDUI视频教程分组框美化计算剩余时间集福卡BitBlt汇编版CHM帮助文档PDF打印自绘API创建时钟CommonJS谷歌浏览器HOOKCMD输出
最新评论