admin 发表于 2023-4-7 21:34:10

019-imGui窗口中的控件数组与PushID与PopID


郁金香灬外挂技术
       
        https://www.yjxsoft.com/
       
        本教程视频1920*1080分辩率下观看最佳
        VS2017+win10 64位 环境
        郁金香老师:Q扣 150330575
        欢迎大家参加 郁金香灬技术 游戏安全与外挂的研究学习。
       
        兴趣是我们最好的老师
        成长需要过程与循序渐进        
        兴趣+坚持+时间+优秀的教程会帮助你快速成功

    交流扣扣群 29817979,9569245


学习目标:
PushID
PopID




       // Color buttons, demonstrate using PushID() to add unique identifier in the ID stack, and changing style.
      IMGUI_DEMO_MARKER("Widgets/Basic/Buttons (Colored)");
      for (int i = 0; i < 8; i++)
      {
            if (i > 0)ImGui::SameLine();

            ImGui::PushID(i);
            ImGui::PushStyleColor(ImGuiCol_Button, (ImVec4)ImColor::HSV(i / 7.0f, 0.6f, 0.6f));
            ImGui::PushStyleColor(ImGuiCol_ButtonHovered, (ImVec4)ImColor::HSV(i / 7.0f, 0.7f, 0.7f));
            ImGui::PushStyleColor(ImGuiCol_ButtonActive, (ImVec4)ImColor::HSV(i / 7.0f, 0.8f, 0.8f));
            static int index = 0;
            if (ImGui::Button("xxxxx"))
            {
                index = i;
                //函数处理case(i)
            }
            ImGui::SameLine();
            ImGui::Text("Button index=%d", index);

            ImGui::PopStyleColor(3);
            ImGui::PopID();
            //H透明度
            //HBGR
            ImGui::PushStyleColor(ImGuiCol_Text, 0xFF0000FF);// (ImVec4)ImColor::HSV(i / 7.0f, 0.6f, 0.6f));
         // ImGui::PushStyleColor(ImGuiCol_ButtonHovered, (ImVec4)ImColor::HSV(i / 7.0f, 0.7f, 0.7f));
            //ImGui::PushStyleColor(ImGuiCol_ButtonActive, (ImVec4)ImColor::HSV(i / 7.0f, 0.8f, 0.8f));
            ImGui::SameLine();
            ImGui::Text("test");
            ImGui::PopStyleColor(1);


         // ImGui::PushID(i);
            ImGui::PushStyleColor(ImGuiCol_Button, (ImVec4)ImColor::HSV(i / 7.0f, 0.6f, 0.6f));
            ImGui::PushStyleColor(ImGuiCol_ButtonHovered, (ImVec4)ImColor::HSV(i / 7.0f, 0.7f, 0.7f));
            ImGui::PushStyleColor(ImGuiCol_ButtonActive, (ImVec4)ImColor::HSV(i / 7.0f, 0.8f, 0.8f));
            static int index2 = 0;
            ImGui::SameLine();
            if (ImGui::Button("3xxxxx##"))
            {
                index2 = index2 +1;
            }
            ImGui::Text("Button index2=%d", index2);
          //ImGui::PopID();
            ImGui::PopStyleColor(3);

      }


void 处理按钮事件(int index)
          {
            switch (index)
            {
            case 1:
            {
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 2:
            {
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 3:
            {
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 4:
            {
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 5:
            {
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 6:
            {
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 7:
            {
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 8:
            {
                  MessageBoxA(0, "OK test", "测试", 0);
                  printf("line=%d\r\n", __LINE__);
                  break;
            }
            case 9:
            {
                  printf("09 ->line=%d\r\n", __LINE__);
                  break;
            }
            case 10:
            {
                  printf("10 ->line=%d\r\n", __LINE__);
                  break;
            }
            default:
                  break;
            }
          }
          void CDX11::控件数组测试PushID()
          {

            ImGui::Begin(u8"控件数组测试PushID");
            static int index = 1;
            ImGui::SameLine();
            ImGui::Text("index=%d", index);

            for (int i = 1; i <= 10; i++)
            {
                  //## sprintf_s
                  ImGui::PushID(i);
                  if (ImGui::Button("Button123"))
                  {
                      处理按钮事件(i);
                      index = i;
                  }
                  ImGui::PopID();

            }

            ImGui::PushID(33);
            if (ImGui::Button("Button123"))
            {
                  处理按钮事件(10);
                  printf("第1111111个按钮\n");
            }
            ImGui::PopID();

            //ImGui::PushID(33);
            //if (ImGui::Button("Button123"))
            //{
            //    处理按钮事件(10);
            //    printf("第22222个按钮\n");
            //}
            //ImGui::PopID();

            ImGui::End();


            ImGui::Begin(u8"控件数组测试PushID2");

            ImGui::PushID(33);
            if (ImGui::Button("Button123"))
            {
                  处理按钮事件(10);
                  printf("第22222个按钮\n");
            }
            ImGui::PopID();

            ImGui::End();

          }
                  
                  



页: [1]
查看完整版本: 019-imGui窗口中的控件数组与PushID与PopID