马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 耐心秀 于 2023-8-8 09:02 编辑
create_menu("主选项1|主选项2|...","主选项1_子1|主选项1_子2...,主选项2_子1|主选项2_子2...,...")
想实现一个这样的菜单功能 原理就是这样"|"同类分割 ","集合分割 是拿论坛那个例子改的 选择实现和消息部分沿用的例子 各位老哥帮我看看吧 运行时调试输出有值 没有窗口 (动态库调用不咋会)
- 变量 m_hwnd //var == 变量
- 功能 TestProgram_init()
- create_menu("文件|设置|人物资讯", "打开|保存|另存为,设置窗口大小|设置字体|设置颜色|设置标题,打开网页")
- 结束
- 功能 create_menu(title, title2)
- //取得自身句柄
- m_hwnd = 窗口获取自我句柄() //windowgetmyhwnd == 窗口获取自我句柄
- 变量 title_array //主选项数组
- 变量 title_array_p=数组() //主选项句柄数组
- 变量 title_array2 //子菜单集合体数组,每个集合内以"|"分割开
- 变量 title_array3 //具体子菜单临时数组
- //创建主选单条(Msg:CreateMenu)
- 变量 hMenu = 动态库调用("user32.dll", "long", "CreateMenu") //dllcall == 动态库调用
- //将参数以"|"分割,创建主选项
- 变量 count = 字符串分割(title, "|", title_array)
- 遍历(变量 i = 0; i <数组大小(title_array); i++)
- title_array_p[i]=动态库调用("user32.dll", "long", "CreatePopupMenu") //各主选项句柄
- 结束
- //","分割出属于每个主选项的子菜单集合
- 变量 count2 = 字符串分割(title2, ",", title_array2)
- 变量 MF_POPUP = #00000010
- //"|"分割出子菜单选项
- 变量 csl=1000 //子菜单初始编码,各组子菜单集倍数递增区分,子递增1区分
- 遍历(变量 i = 0; i < 数组大小(title_array2); i++)
- 字符串分割(title_array2[i], "|", title_array3)
- 遍历(变量 j = 0; j < 数组大小(title_array3); j++)
- 动态库调用("user32.dll", "long", "AppendMenuW", "long", title_array_p[i], "long", MF_POPUP, "long", csl*(i+1), "wchar *", title_array3[j+1])
- 结束
- 动态库调用("user32.dll", "long", "AppendMenuW", "long", hMenu, "long", MF_POPUP, "long", title_array_p[i], "wchar *", title_array3[0])
- 数组清空(title_array3)
- 结束
- // 重新绘制窗口,并将创建好的菜单一并放进窗口(Msg:SetMenu)
- 动态库调用("user32.dll", "long", "SetMenu", "long", m_hwnd, "long", hMenu)
- 结束
复制代码 |