#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Pack.H>
#include <FL/Fl_Window.H>

int demo1(int argc, char** argv)
{
    // 创建主窗口
    Fl_Window* window = new Fl_Window(800, 600, "FLTK 上下布局示例");
    window->color(FL_WHITE);

    // 创建一个垂直排列的 Fl_Pack 容器
    Fl_Pack* vpack = new Fl_Pack(0, 0, 800, 600);
    vpack->type(Fl_Pack::VERTICAL);   // 设置为垂直布局
    vpack->spacing(10);               // 设置子部件之间的间距

    // 上部分内容
    Fl_Box* top_box = new Fl_Box(0, 0, 800, 300, "上部分");
    top_box->box(FL_UP_BOX);
    top_box->color(FL_BLUE);
    top_box->labelsize(24);
    top_box->labelcolor(FL_WHITE);

    // 下部分内容
    Fl_Box* bottom_box = new Fl_Box(0, 0, 800, 300, "下部分");
    bottom_box->box(FL_UP_BOX);
    bottom_box->color(FL_GREEN);
    bottom_box->labelsize(24);
    bottom_box->labelcolor(FL_WHITE);

    // 结束 Fl_Pack 容器
    vpack->end();

    // 设置窗口的布局容器
    window->end();
    window->resizable(vpack);   // 使布局随窗口缩放
    window->show(argc, argv);

    // 运行事件循环
    return Fl::run();
}

int main(int argc, char** argv)
{
    demo1(argc, argv);
}