|

如题,使用窗口子类化,但是禁止菜单编辑器创建的菜单,动态创建的菜单就不见了
不知道怎么回事老是上传不了附件
附件源码上传百度云
链接:https://pan.baidu.com/s/1KOiSRDudvJGdWlYRlx1OyA
提取码:2we0
源码如下:
.版本 2
.常量 类型_文本, "0"
.常量 菜单函数_按位置, "1024"
.常量 类型_分隔线, "2048", , Specifies that the menu item is a separator. A menu item separator appears as a horizontal dividing line. The dwTypeData and cch members are ignored. This value is valid only in a drop-down menu, submenu, or shortcut menu.
.常量 窗口特征_窗口程序, "-4"
.版本 2
.DLL命令 取窗口特征, 子程序指针, , "GetWindowLongA"
.参数 窗口句柄, 整数型
.参数 要取的特征, 整数型
.DLL命令 执行窗口程序, 整数型, , "CallWindowProcA"
.参数 程序指针, 子程序指针
.参数 窗口句柄, 整数型
.参数 消息, 整数型
.参数 参数1, 整数型
.参数 参数2, 整数型
.DLL命令 取菜单条句柄, 整数型, , "GetMenu", , 取指定窗口的菜单条句柄
.参数 窗口句柄, 整数型
.DLL命令 取子菜单句柄, 整数型, , "GetSubMenu"
.参数 菜单句柄, 整数型
.参数 位置, 整数型
.DLL命令 置窗口特征, 子程序指针, , "SetWindowLongA"
.参数 窗口句柄, 整数型
.参数 要置的特征, 整数型
.参数 新特征, 子程序指针, , 仅易语言3.0支持
.DLL命令 取系统菜单, 整数型, , "GetSystemMenu"
.参数 窗口句柄, 整数型
.参数 取原始菜单, 逻辑型
.DLL命令 添加菜单项, 逻辑型, , "InsertMenuA"
.参数 菜单句柄, 整数型
.参数 位置, 整数型
.参数 标志, 整数型
.参数 ID, 整数型
.参数 标题, 文本型
.DLL命令 取菜单项目ID, 整数型, , "GetMenuItemID"
.参数 菜单句柄, 整数型
.参数 位置, 整数型
.DLL命令 取当前进程, 整数型, , "GetCurrentProcess"
.DLL命令 删除菜单项目, 逻辑型, , "RemoveMenu"
.参数 菜单句柄, 整数型
.参数 位置, 整数型
.参数 标志, 整数型
.版本 2
.程序集 启动窗口程序集
.程序集变量 序号, 整数型
.程序集变量 系统菜单, 整数型
.程序集变量 动态菜单, 整数型
.程序集变量 菜单条, 整数型
.子程序 __启动窗口_创建完毕
窗口句柄 = _启动窗口.取窗口句柄 ()
系统菜单 = 取系统菜单 (窗口句柄, 假)
' ==*****************************==
菜单条 = 取菜单条句柄 (窗口句柄)
动态菜单 = 取子菜单句柄 (菜单条, 1)
' ==*****************************==
' 不知道为什么,这两句不能写在一起:“动态菜单 = 取子菜单句柄 (取菜单条句柄 (窗口句柄), 1)”,必须分开来写,否则死机!! 切记,切记,血的教训!!
序号 = 1
默认窗口程序 = 置窗口特征 (窗口句柄, #窗口特征_窗口程序, &新窗口程序) ' 改变当前窗口的消息处理程序,即常说的“窗口子类化”
.子程序 __启动窗口_将被销毁
置窗口特征 (窗口句柄, -4, 默认窗口程序) ' 窗口销毁前置回原来的消息处理程序
.子程序 _按钮1_被单击
.如果真 (序号 ≥ 100)
返回 ()
.如果真结束
添加菜单项 (动态菜单, 序号, #菜单函数_按位置, 序号, “动态菜单项” + 到文本 (序号))
序号 = 序号 + 1
.子程序 _按钮2_被单击
菜单项3.禁止 = 真
' ’为什么一禁止菜单,动态创建菜单就会不见了,也添加不了菜单了"
.子程序 _添加动态菜单_被选择
.如果真 (序号 ≥ 100)
返回 ()
.如果真结束
添加菜单项 (动态菜单, 序号, #菜单函数_按位置, 序号, “动态菜单项” + 到文本 (序号))
序号 = 序号 + 1
.子程序 新窗口程序, 整数型, , 不要修改该子程序的返回值及参数的类型!
.参数 窗口句柄, 整数型
.参数 消息, 整数型
.参数 参数1, 整数型
.参数 参数2, 整数型
.局部变量 回答, 整数型
.局部变量 x, 短整数型
.局部变量 y, 短整数型
.判断开始 (消息 = 273)
.如果真 (参数1 < 100)
信息框 (“动态菜单” + 到文本 (参数1) + “被单击”, 0, , )
.如果真结束
.默认
.判断结束
返回 (执行窗口程序 (默认窗口程序, 窗口句柄, 消息, 参数1, 参数2)) ' 把不需要处理的消息传递给默认窗口处理程序,使窗口能正常响应消息
.版本 2
.全局变量 默认窗口程序, 子程序指针
.全局变量 窗口句柄, 整数型
|
|