imgui リストボックスの作成 – FlyWithLua

2023年2月17日
-- imgui はフローティング ウィンドウ内でのみ機能するため、最初に作成する必要があります。
draw_wnd = float_wnd_create(250, 150, 1, true)
float_wnd_set_title(draw_wnd, "imgui Demo")
float_wnd_set_imgui_builder(draw_wnd, "draw_demo")
float_wnd_set_onclose(draw_wnd, "closed_demo")


function draw_demo(wnd, x, y)
    local choices = {"Choice 1", "Choice 2", "Choice 3"}
        
        -- BBeginListBox は、リスト ボックスを開始します。 
        -- 最初のパラメータはラベルで、2 番目のパラメータは現在選択されている選択肢のテキストです。
        if imgui.BeginListBox("List Box", choices[choice]) then
            -- すべての選択肢をループする
            for i = 1, #choices do
                -- Selectable 関数は、リストボックスに選択肢を追加します。
                -- 最初のパラメーターはラベル。この選択肢が現在選択されている場合、2 番目のパラメーターは true でなければなりません。
                if imgui.Selectable(choices[i], choice == i) then
                    -- Selectable は、新しい選択肢が選択されたときに true を返します。
                    -- その選択肢を選択変数にコピーする必要があります。
                    choice = i
                end
            end
            -- BeginListBox が true を返す場合、つまりリストボックスが現在開いている場合にのみ呼び出される必要があります。
            imgui.EndListBox()
        end
end

function closed_demo(wnd)
    -- Tこの関数は、ユーザーがウィンドウを閉じるときに呼び出されます。 
    -- ウィンドウが既に破棄されているため、この関数では imgui 関数の描画または呼び出しは許可されない。
end