nana初體驗,菜單和可移動按鈕

建立了一個帶有菜單的窗口,
菜單

  • File選項一“new block”,點擊後新建一個block,
  • File選項二“exit”,點擊後退出。

每個block都可以拖動
注意的是append(“new block”,[&fm](menu::item_proxy& ip){})
這是個lambda匿名函數,C++11新特性,[]中是函數引用的外部變量,()內是參數,{}中是函數正文。

#include <nana/gui.hpp>
#include <nana/gui/place.hpp>
#include <nana/gui/widgets/menubar.hpp>
#include <nana/gui/wvl.hpp>
#include <nana/gui/widgets/button.hpp>
#include <nana/gui/dragger.hpp>
using namespace nana;
int main(int argc, char **argv)
{
    form fm;
    fm.caption(L"CodeLink");//name it
    place pl(fm);//layout of it
    menubar mn(fm);//set a menu bar

    pl.div("<vertical <menu weight=25>>");
    pl.field("menu") << mn;

    mn.push_back("File");
    mn.push_back("Settings");

    mn.at(0).append("new block",[&fm](menu::item_proxy& ip)
    {
        button *btn=new button();
        btn->create(fm, rectangle(10, 50, 80, 20));
        btn->caption("Block");
        dragger *dg=new dragger();
        dg->trigger(*btn);  //When you drag the btn, then
        dg->target(*btn);   //move the btn
    });
    mn.at(0).append("exit",[](menu::item_proxy& ip)
    {
        API::exit();
    });
    pl.collocate();
    fm.show();
    exec();
    return 0;
}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章