⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample_demo7.cpp

📁 cegui界面库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    // First progress bar
    ProgressBar* pbar = static_cast<ProgressBar*>(winMgr.createWindow("TaharezLook/ProgressBar", "Demo7/Window2/Progbar1"));
    fwnd2->addChildWindow(pbar);
    pbar->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    pbar->setPosition(UVector2(cegui_reldim(0.04f), cegui_reldim( 0.1f)));
    pbar->setSize(UVector2(cegui_reldim(0.94f), cegui_reldim( 0.05f)));
    pbar->setProgress(0.33f);

    // second progress bar in the alternative style
    pbar = static_cast<ProgressBar*>(winMgr.createWindow("TaharezLook/AlternateProgressBar", "Demo7/Window2/Progbar2"));
    fwnd2->addChildWindow(pbar);
    pbar->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    pbar->setPosition(UVector2(cegui_reldim(0.04f), cegui_reldim( 0.16f)));
    pbar->setSize(UVector2(cegui_reldim(0.94f), cegui_reldim( 0.05f)));
    pbar->setProgress(0.7f);

    // standard listbox
    Listbox* lbox = static_cast<Listbox*>(winMgr.createWindow("TaharezLook/Listbox", "Demo7/Window2/Listbox"));
    fwnd2->addChildWindow(lbox);
    lbox->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    lbox->setPosition(UVector2(cegui_reldim(0.04f), cegui_reldim( 0.25f)));
    lbox->setSize(UVector2(cegui_reldim(0.42f), cegui_reldim( 0.3f)));

    // combobox widget
    Combobox* cbobox = static_cast<Combobox*>(winMgr.createWindow("TaharezLook/Combobox", "Demo7/Window2/Combobox"));
    fwnd2->addChildWindow(cbobox);
    cbobox->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    cbobox->setPosition(UVector2(cegui_reldim(0.5f), cegui_reldim( 0.25f)));
    cbobox->setSize(UVector2(cegui_reldim(0.42f), cegui_reldim( 0.45f)));

    // multi-column list (MCL / Grid) widget
    MultiColumnList* mclbox = static_cast<MultiColumnList*>(winMgr.createWindow("TaharezLook/MultiColumnList", "Demo7/Window2/MultiColumnList"));
    fwnd2->addChildWindow(mclbox);
    mclbox->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    mclbox->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.6f)));
    mclbox->setSize(UVector2(cegui_reldim(0.9f), cegui_reldim( 0.38f)));
    mclbox->setSelectionMode(MultiColumnList::RowSingle);

    // StaticImage
    Window* simg = winMgr.createWindow("TaharezLook/StaticImage", "Demo7/Window2/Image1");
    fwnd2->addChildWindow(simg);
    simg->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    simg->setPosition(UVector2(cegui_reldim(0.56f), cegui_reldim( 0.35f)));
    simg->setSize(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.2f)));
    simg->setProperty("FrameEnabled", "false");
    simg->setProperty("BackgroundEnabled", "false");
    simg->setProperty("Image", "set:BackgroundImage image:full_image");

    // Multi-line editbox widget
    MultiLineEditbox* mleb = static_cast<MultiLineEditbox*>(winMgr.createWindow("TaharezLook/MultiLineEditbox", "Demo7/Window3/MLEditbox"));
    fwnd3->addChildWindow(mleb);
    mleb->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
    mleb->setPosition(UVector2(cegui_reldim(0.02f), cegui_reldim( 0.1f)));
    mleb->setSize(UVector2(cegui_reldim(0.96f), cegui_reldim( 0.85f)));
    mleb->setText("Multi-line edit box.  Edit me!\n");

    //
    // List box setup
    //
    // Add items to normal listbox
    lbox->addItem(new MyListItem("Listbox Item 1"));
    lbox->addItem(new MyListItem("Listbox Item 2"));
    lbox->addItem(new MyListItem("Listbox Item 3"));
    lbox->addItem(new MyListItem("Listbox Item 4"));
    lbox->addItem(new MyListItem("Listbox Item 5"));
    lbox->addItem(new MyListItem("Listbox Item 6"));
    lbox->addItem(new MyListItem("Listbox Item 7"));

    // add items to the combobox list
    cbobox->addItem(new MyListItem("Combobox Item 1"));
    cbobox->addItem(new MyListItem("Combobox Item 2"));
    cbobox->addItem(new MyListItem("Combobox Item 3"));
    cbobox->addItem(new MyListItem("Combobox Item 4"));
    cbobox->addItem(new MyListItem("Combobox Item 5"));
    cbobox->addItem(new MyListItem("Combobox Item 6"));
    cbobox->addItem(new MyListItem("Combobox Item 7"));
    cbobox->addItem(new MyListItem("Combobox Item 8"));
    cbobox->addItem(new MyListItem("Combobox Item 9"));
    cbobox->addItem(new MyListItem("Combobox Item 10"));

    // Add columns to MCL
    mclbox->addColumn("Server Name", 0, cegui_reldim(0.33f));
    mclbox->addColumn("Address", 1, cegui_reldim(0.5f));
    mclbox->addColumn("Ping", 2, cegui_reldim(0.2f));

    // Add some empty rows to the MCL
    mclbox->addRow();
    mclbox->addRow();
    mclbox->addRow();
    mclbox->addRow();
    mclbox->addRow();

    // Set first row item texts for the MCL
    mclbox->setItem(new MyListItem("Laggers World"), 0, 0);
    mclbox->setItem(new MyListItem("yourgame.some-server.com"), 1, 0);
    mclbox->setItem(new MyListItem("1000ms"), 2, 0);

    // Set second row item texts for the MCL
    mclbox->setItem(new MyListItem("Super-Server"), 0, 1);
    mclbox->setItem(new MyListItem("whizzy.fakenames.net"), 1, 1);
    mclbox->setItem(new MyListItem("8ms"), 2, 1);

    // Set third row item texts for the MCL
    mclbox->setItem(new MyListItem("Cray-Z-Eds"), 0, 2);
    mclbox->setItem(new MyListItem("crayzeds.notarealserver.co.uk"), 1, 2);
    mclbox->setItem(new MyListItem("43ms"), 2, 2);

    // Set fourth row item texts for the MCL
    mclbox->setItem(new MyListItem("Fake IPs"), 0, 3);
    mclbox->setItem(new MyListItem("123.320.42.242"), 1, 3);
    mclbox->setItem(new MyListItem("63ms"), 2, 3);

    // Set fifth row item texts for the MCL
    mclbox->setItem(new MyListItem("Yet Another Game Server"), 0, 4);
    mclbox->setItem(new MyListItem("abc.abcdefghijklmn.org"), 1, 4);
    mclbox->setItem(new MyListItem("284ms"), 2, 4);
}


/*************************************************************************
    Perform required event hook-ups for this demo.
*************************************************************************/
void Demo7Sample::initDemoEventWiring(void)
{
    using namespace CEGUI;

    // Subscribe handler that quits the application
    WindowManager::getSingleton().getWindow("Demo7/Window1/Quit")->
        subscribeEvent(PushButton::EventClicked, Event::Subscriber(&Demo7Sample::handleQuit, this));

    // Subscribe handler that processes changes to the slider position.
    WindowManager::getSingleton().getWindow("Demo7/Window1/Slider1")->
        subscribeEvent(Slider::EventValueChanged, Event::Subscriber(&Demo7Sample::handleSlider, this));

    // Subscribe handler that processes changes to the checkbox selection state.
    WindowManager::getSingleton().getWindow("Demo7/Window1/Checkbox")->
        subscribeEvent(Checkbox::EventCheckStateChanged, Event::Subscriber(&Demo7Sample::handleCheck, this));

    // Subscribe handler that processes changes to the radio button selection state.
    WindowManager::getSingleton().getWindow("Demo7/Window1/Radio1")->
        subscribeEvent(RadioButton::EventSelectStateChanged, Event::Subscriber(&Demo7Sample::handleRadio, this));

    // Subscribe handler that processes changes to the radio button selection state.
    WindowManager::getSingleton().getWindow("Demo7/Window1/Radio2")->
        subscribeEvent(RadioButton::EventSelectStateChanged, Event::Subscriber(&Demo7Sample::handleRadio, this));

    // Subscribe handler that processes changes to the radio button selection state.
    WindowManager::getSingleton().getWindow("Demo7/Window1/Radio3")->
        subscribeEvent(RadioButton::EventSelectStateChanged, Event::Subscriber(&Demo7Sample::handleRadio, this));
}

bool Demo7Sample::handleQuit(const CEGUI::EventArgs& e)
{
    // signal quit
    d_sampleApp->setQuitting();

    // event was handled
    return true;
}

bool Demo7Sample::handleSlider(const CEGUI::EventArgs& e)
{
    using namespace CEGUI;

    // get the current slider value
    float val = static_cast<Slider*>(static_cast<const WindowEventArgs&>(e).window)->getCurrentValue();

    // set the progress for the first bar according to the slider value
    static_cast<ProgressBar*>(WindowManager::getSingleton().getWindow("Demo7/Window2/Progbar1"))->setProgress(val);
    // set second bar's progress - this time the reverse of the first one
    static_cast<ProgressBar*>(WindowManager::getSingleton().getWindow("Demo7/Window2/Progbar2"))->setProgress(1.0f - val);
    // set the alpha on the window containing all the controls.
    WindowManager::getSingleton().getWindow("root_wnd")->setAlpha(val);

    // event was handled.
    return true;
}

bool Demo7Sample::handleRadio(const CEGUI::EventArgs& e)
{
    using namespace CEGUI;

    // get the ID of the selected radio button
    CEGUI::uint id = static_cast<RadioButton*>(static_cast<const WindowEventArgs&>(e).window)->getSelectedButtonInGroup()->getID();
    // get the StaticImage window
    Window* img = WindowManager::getSingleton().getWindow("Demo7/Window2/Image1");

    // set an image into the StaticImage according to the ID of the selected radio button.
    switch (id)
    {
    case 0:
        img->setProperty("Image", "set:BackgroundImage image:full_image");
        break;

    case 1:
        img->setProperty("Image", "set:TaharezLook image:MouseArrow");
        break;

    default:
        img->setProperty("Image", "");
        break;
    }

    // event was handled
    return true;
}

bool Demo7Sample::handleCheck(const CEGUI::EventArgs& e)
{
    using namespace CEGUI;

    // show or hide the FrameWindow containing the multi-line editbox according to the state of the
    // checkbox widget
    WindowManager::getSingleton().getWindow("Demo7/Window3")->
        setVisible(static_cast<Checkbox*>(static_cast<const WindowEventArgs&>(e).window)->isSelected());

    // event was handled.
    return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -