建立了一個帶有菜單的窗口,
菜單
- 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;
}