本帖最后由 feiyu2005 于 2024-3-7 21:36 编辑
炫语言采用的炫彩界面是自绘的UI,在其生成的程序UI界面中点击鼠标右键,不能“召唤”出类似Windows资源管理器中的右键快捷菜单。
比如“剪切”、“复制”、“粘贴”等菜单项目,但可以使用系统键盘快捷键“Ctrl+X”、"Ctrl+C"、"Ctrl+V"来实现对应的功能。
炫语言中可以自行编写右键菜单代码,使用“元素事件_鼠标右键弹起”在需要弹出菜单的UI元素区域弹出对应的自定义右键快捷菜单;使用“元素事件_菜单项选择”来实现对应的菜单项被选择后的操作。
在当前版本的IDE中,编辑框事件管理列表中,没有把“元素事件_菜单项选择”事件列入进去(这个事件在菜单条事件管理列表中可见),个人觉得这个很有必要列进去。
下面是实现两个编辑框设置不同的右键快捷菜单过程示例。
在项目UI中添加两个编辑框,绑定成员变量,添加对应的“元素事件_鼠标右键弹起”事件代码,手动添加绑定“元素事件_菜单项选择”UI绑定信息,手动添加“元素事件_菜单项选择”响应事件代码。
UI绑定信息:
[C++] 纯文本查看 复制代码 [绑定信息] //IDE自动生成的UI绑定信息(UI变量绑定,事件绑定)
[按钮类, _按钮1, "按钮1"]
[元素事件_按钮点击, 按钮点击_按钮1, 1]
[编辑框类, _编辑框1, "编辑框1"]
[元素事件_鼠标右键弹起, 鼠标右键弹起_编辑框1, 1]
[元素事件_菜单项选择, 鼠标右键菜单选择_编辑框1, 1]//这里手动为编辑框1添加一个"元素事件_菜单项选择"事件信息
[编辑框类, _编辑框2, "编辑框2"]
[元素事件_鼠标右键弹起, 鼠标右键弹起_编辑框2, 1]
[元素事件_菜单项选择, 鼠标右键菜单选择_编辑框2, 1]//手动添加一个"元素事件_菜单项选择"事件
元素事件_鼠标右键弹起”事件代码:
[C++] 纯文本查看 复制代码 函数 UI事件 整型 鼠标右键弹起_编辑框1(元素句柄 来源句柄, 整型 nFlags, 点结构 *pPt,逻辑型 *是否拦截)
点结构 鼠标光标位置 = {0}
取光标位置(&鼠标光标位置)
右键菜单1(&鼠标光标位置, 取HWND(), 来源句柄)
返回 0
手动添加的“元素事件_菜单项选择”响应事件代码:
[C++] 纯文本查看 复制代码 //这里对应事件绑定信息手动建立UI事件响应函数
函数 UI事件 整型 鼠标右键菜单选择_编辑框1(元素句柄 来源句柄, 整型 nID, 逻辑型 *是否拦截)
如果(nID == 101)//选择了剪切
编辑框_剪贴板剪切(来源句柄)
否则(nID == 102)//选择了复制
编辑框_剪贴板复制选择(来源句柄)
否则(nID == 103)//选择了粘贴
编辑框_剪贴板粘贴(来源句柄)
否则(nID == 104)//选择了全选
执行全选()
返回 0
右键菜单1()函数的实现代码:
[C++] 纯文本查看 复制代码 #外部类型 HBITMAP
//带图标的右键快捷菜单
函数 整型 右键菜单1(点结构 *鼠标光标位置, HWND 父窗口句柄, 元素句柄 来源句柄)
菜单句柄 hMenu = 菜单_创建()
HBITMAP JQ位图句柄 = RC资源查找位图("JQ01") //在项目exe.rc文件中上传的用于剪切选项的图标“JQ01.bmp”
图片句柄 JQ = 图片_加载从HBITMAP(JQ位图句柄)
菜单_添加项图标(hMenu, 101, "剪切 (Ctrl+X)", NULL, JQ)
HBITMAP FZ位图句柄 = RC资源查找位图("FZ01")
图片句柄 FZ = 图片_加载从HBITMAP(FZ位图句柄)
菜单_添加项图标(hMenu, 102, "复制 (Ctrl+C)", NULL, FZ)
HBITMAP ZT位图句柄 = RC资源查找位图("ZT01")
图片句柄 ZT = 图片_加载从HBITMAP(ZT位图句柄)
菜单_添加项图标(hMenu, 103, "粘贴 (Ctrl+V)", NULL, ZT)
菜单_添加项(hMenu, 104, "全选 (Ctrl+A)")
//菜单_弹出()函数明确"来源句柄"参数,是为了由指定的元素来接收菜单消息事件
菜单_弹出(hMenu, 父窗口句柄, 鼠标光标位置->x, 鼠标光标位置->y, 来源句柄)
返回 0
第二编辑框的右键菜单参照第一个编辑框来编写相应实现代码即可。
成功编译运行,效果如图所示。
项目源码压缩包网盘下载地址,回复可见。
|