You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ImGui优化需求:授权成功后替换窗口元素而非新建窗口

解决方案

核心思路是在同一个窗口内部,通过logged变量的状态切换绘制不同UI元素,无需创建多个窗口。修改后的代码如下:

ImGui::SetNextWindowSize(ImVec2(284, 309));
if (ImGui::Begin("sd1", NULL, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings))
{
    if (!logged)
    {
        // 未授权时显示登录界面
        ImGui::InputText("##keyinput", &inputlicencekey, CHAR_MAX, ImGuiInputTextFlags_Password);

        if (ImGui::Button("Login"))
        {
            // 原代码错误:比较字符串地址永远不相等,改为比较内容
            if (inputlicencekey == key)
            {
                logged = true;
            }
        }
    }
    else
    {
        // 授权成功后显示功能界面
        ImGui::Checkbox("Test", &testbool);
        if (ImGui::Button("Inject"))
        {
            testbool = true;
        }
        ImGui::Text("Int");
        // SliderInt要求参数为整数,修正原代码的浮点数错误
        ImGui::SliderInt("##dd", &inttest, 1, 15);
        ImGui::Text("Float");
    }
}
ImGui::End();

关键修改说明

  • 合并窗口逻辑:将登录UI与功能UI放在同一ImGui::Begin()和ImGui::End()块内,通过logged的真假分支实现同一窗口的内容切换,避免多窗口重叠问题。
  • 修复字符串比较错误:原代码用&inputlicencekey == key比较字符串地址,改为直接比较字符串内容(若使用C风格字符串则用strcmp)。
  • 修正控件参数错误:SliderInt的范围参数必须为整数,替换原代码中的浮点数0.1f。
  • 修正按钮拼写:将injcet改为正确的Inject。

内容的提问来源于stack exchange,提问作者helpplease

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:12:51