吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8407|回复: 17
收起左侧

[C&C++ 转载] IMGUI二级菜单

  [复制链接]
a13799218151 发表于 2020-2-16 19:33
本帖最后由 a13799218151 于 2020-11-8 17:09 编辑

菜单预览



屏幕截图 2020-11-08 160821.png

屏幕截图 2020-11-08 160858.png

屏幕截图 2020-11-08 160916.png

菜单控制



通过 ↑ ↓ 控制 菜单上下移动
通过 ← → 控制 菜单展开,缩进或者是功能的开和关。

修改功能



项目的结构

项目结构

项目结构


项目中有一个config.json文件夹,程序每一次启动的时候都会读取和解析这个文件夹,并根据里面的数据解析成可视的菜单结构。

config.json 数据结构


{
        "title": "IMGUI分级菜单DEMO",
        "items": [
                {
                        "title": "透视设置",
                        "resultCode": 100,
                        "secondItems": [
                                {
                                        "title": "方框透视",
                                        "resultCode": 101,
                                        "status": []
                                },
                                {
                                        "title": "方框类型",
                                        "resultCode": 102,
                                        "status": [
                                                "2D",
                                                "3D"
                                        ]
                                },
                                {
                                        "title": "显示血量",
                                        "resultCode": 103,
                                        "status": []
                                }
                        ]
                },
                {
                        "title": "自瞄设置",
                        "resultCode": 200,
                        "secondItems": [
                                {
                                        "title": "自动瞄准",
                                        "resultCode": 201,
                                        "status": []
                                },
                                {
                                        "title": "自瞄灵敏",
                                        "resultCode": 202,
                                        "status": [
                                                "0.05",
                                                "0.10",
                                                "0.15",
                                                "0.20",
                                                "0.25",
                                                "0.30",
                                                "0.35",
                                                "0.40",
                                                "0.45",
                                                "0.50",
                                                "0.55",
                                                "0.60",
                                                "0.65",
                                                "0.70",
                                                "0.75",
                                                "0.80",
                                                "0.85",
                                                "0.90",
                                                "0.95",
                                                "1.00"
                                        ]
                                },
                                {
                                        "title": "自瞄范围",
                                        "resultCode": 205,
                                        "status": [
                                                "60",
                                                "120",
                                                "180",
                                                "240",
                                                "300",
                                                "360"
                                        ]
                                },
                                {
                                        "title": "自瞄位置",
                                        "resultCode": 206,
                                        "status": [
                                                "头部",
                                                "胸部",
                                                "裆部"
                                        ]
                                }
                        ]
                },
                {
                        "title": "其他设置",
                        "resultCode": 0,
                        "secondItems": [
                                {
                                        "title": "安全退出",
                                        "resultCode": 1,
                                        "status": []
                                }
                        ]
                }
        ]
}
```’


items里面的节点是一级菜单,
secondItems里面的节点是二级菜单。

一级菜单的相关字段
字段 描述
title 功能名称
resultCode 回调码
secondItems 二级菜单



二级菜单的相关字段
字段 描述
title 功能名称
resultCode 回调码
status 功能状态

回调事件



功能的开和关必然会产生一个回调事件.我们前面通过设置resultCode来辨别是哪个功能产生的事件。
下面我们来设置回调事件。
MenuManger.cpp里面有一个menuStatusChangedListener回调函数,我们在里面设置回调事件。
屏幕截图 2020-11-08 164357.png

//菜单回调函数
void menuStatusChangedListener(int resultCode, bool isOpen, std::string title, std::string statusTitle) {

    switch (resultCode) {
    case 0:
        if (isOpen)
        {
            std::cout << "透视设置 打开" << std::endl;
        }
        else {
            std::cout << "透视设置 关闭" << std::endl;
        }
        break;

    case 9:

        if (isOpen)
        {
            std::cout << "自动瞄准 打开" << std::endl;
        }
        else {
            std::cout << "自动瞄准 关闭" << std::endl;
        }
        break;

        break;

    case 12:

        if (isOpen)
        {
            std::cout << "自动热键 打开 按键:" << statusTitle << std::endl;
        }
        else {
            std::cout << "自动热键 关闭" << std::endl;
        }
        break;

    case 13:

        if (isOpen)
        {
            std::cout << "自瞄范围 打开 范围:"  << statusTitle << std::endl;
        }
        else {
            std::cout << "自瞄范围 关闭" << std::endl;
        }
        break;

    case 15:
        if (isOpen)
        {
            std::cout << "辅助准心 打开" << std::endl;
        }
        else {
            std::cout << "辅助准心 关闭" << std::endl;
        }
        break;
        break;
    }

}

运行环境

运行环境就是imgui demo运行的环境。

本机环境如下:Direct X && VS Studio 2019



下载链接



因为项目有20多兆 上传不了我放在百度网盘里了。

下载地址.txt (141 Bytes, 下载次数: 96)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
luxuryang + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| a13799218151 发表于 2020-2-16 20:58
Fasy丶逝言 发表于 2020-2-16 20:19
我想问一下楼主,绘制透视D3D和IMGUI哪个比较好

当然是IMGUI好,IMGUI很方便
 楼主| a13799218151 发表于 2020-2-16 19:37
本帖最后由 a13799218151 于 2020-2-16 19:51 编辑

希望大家支持一下 第一次发帖....
Fasy丶逝言 发表于 2020-2-16 20:19
我想问一下楼主,绘制透视D3D和IMGUI哪个比较好
ShineZhong 发表于 2020-2-16 20:29
强。。。。。。。。。。。。
383235464 发表于 2020-2-17 13:36
有易语言的吗。。。。。。。。。。
 楼主| a13799218151 发表于 2020-2-17 17:03
383235464 发表于 2020-2-17 13:36
有易语言的吗。。。。。。。。。。

小兄弟,易语言我不懂欸
mzlailinying 发表于 2020-2-17 19:23
强。。。。。。。。。。。。
mosar_zh 发表于 2020-2-18 14:12
弓虽。。。。。点赞。。。。
卡农变奏 发表于 2020-2-18 14:14
现在还能用吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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