Я использовал код дерева стыковки IMGui и создал Application.cpp и Application.h в example_win32_directx9. Я использую релиз и x64 для компиляции. Я установил подсистему в системе в Linker to Windows. Код Application.cpp:
#include "Application.h"
#include "imgui.h"
namespace MyApp
{
void RenderUI()
{
bool Decimal_places = false;
bool settings = false;
ImGui::Begin("Main");
if (ImGui::Button("Settings")) {
settings = true;
}
else {
settings = false;
}
ImGui::End();
if (settings==true) {
ImGui::Begin("Settings");
if (Decimal_places == false) {
if (ImGui::Button("Off")) {
Decimal_places = true;
}
}
ImGui::End();
}
//static float value = 0.0f;
//ImGui::DragFloat("Value", &value);
}
}
Код приложения.h:
#pragma once
namespace MyApp
{
void RenderUI();
}
Он работает нормально, но я не знаю, как убрать кнопку «Выкл» или изменить ее с «Выкл» на «Вкл» и почему окно настроек закрывается. Я уже включил файл заголовка в main.cpp, а также использовал функцию файла заголовка в main.cpp.
Чтобы исправить это, bool необходимо объявить вне функции. После его редактирования исправленный Application.cpp с большим количеством функций был:
#include "Application.h"
#include "imgui.h"
namespace MyApp
{
bool settings = false;
bool p_open = true;
bool Decimal_places = false;
void RenderUI()
{
ImGui::Begin("Main");
if (ImGui::Button("Settings")) {
settings = true;
}
ImGui::End();
if (settings == true) {
if (p_open == true) {
if (!ImGui::Begin("Settings", &p_open)) {
ImGui::End();
}
else {
if (Decimal_places == false) {
if (ImGui::Button("Off")) {
Decimal_places = true;
}
}
else if (Decimal_places == true) {
if (ImGui::Button("On")) {
Decimal_places = false;
}
}
ImGui::End();
}
}
else {
p_open = true;
settings = false;
}
}
}
}