炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 121|回复: 1

[炫源码] 小白学习笔记(3)——简单实现鼠标右键快捷菜单

[复制链接]
  • TA的每日心情
    无聊
    11 小时前
  • 发表于 2024-3-7 21:37:31 | 显示全部楼层 |阅读模式
    本帖最后由 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




    第二编辑框的右键菜单参照第一个编辑框来编写相应实现代码即可。

    成功编译运行,效果如图所示。


    项目源码压缩包网盘下载地址,回复可见。

    游客,如果您要查看本帖隐藏内容请回复



  • TA的每日心情
    难过
    2021-3-17 08:38
  • 发表于 2024-3-8 08:13:15 | 显示全部楼层
    优秀啊.学的根本停不下来.
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-4-27 20:26 , Processed in 0.071883 second(s), 18 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表