Nana 是一个跨平台的C++图形界面库,目前它支持 Windows 和 Linux(X11) 平台。 通过使用Nana提供的平台无关接口,可以使程序在所有支持的操作系统上运行。 Nana是一个免费的开源软件,以Boost Software License协议授权。 Nana是标准C++语言开发,使用了高级C++特性,例如模板,标准库,异常和RTTI,因此,它可以良好地支持VC2013, GCC/MinGW 和 Clang 这些标准C++编译器。
Nana是一个现代C++程序库,这意味着用户可以自由地使用现代的C++特性,诸如Lambda,智能指针以及标准库。
该项目的主要目标是简化开发难度,提供直观的开发方法。例如,
老式的开发方法:
void my_callback(Widget* wdg, void* userdata)
{
const char* str = (const char*)userdata;
wdg->caption(str);
}
const char* str = new char[N];
strcpy(str, get_text());
button->callback(my_callback, (void*)str);
现代的开发方法:auto str = get_text();
button.events().click([str,&button]
{
button.caption(str);
});
显然,现代的方法更简便,而老式的方法是容易出错的,因为你不得不关心类型转换和资源管理的问题。