Nana 0.8 发布了,该版本中更改了一些接口,新的接口将于老版本的不兼容。另外从这个版本器,不在包含对C++03的支持,在编译器方面,也不再支持VS2012,VS2013成为微软编译器的最低要求版本,因为0.8使用了一些C++11的特性。这些部分的修改大约减少了2千行代码。
namespace gui
命名空间gui已经被移出,原本在gui命名空间中的名字全部移到命名空间nana中。
nana::form fm;
nana::button btn;
全新的可扩展的事件系统
form.make_event<events::click>([]{}); //以前的方式,已被废除
form.events().click([]{}); //新的
treebox.ext_event().selected([](window, treebox::item_proxy, bool sel){}); //以前的方式,已被废除
treebox.events().selected([](const arg_treebox&){}); //新的
treebox.events().selected([]{}); //新的,可以忽略掉参数
通过窗口句柄来注册事件。
API::make_event<events::click>(window_handle, []{}); //以前的方式,已被废除
API::events(window_handle).click([]{}); //新的
API::events<treebox>(window_handle).selected([]{}); //OK, 当窗口句柄引用的是一个treebox时。
Class place
place::fixed()和place::room()方法已被移除。
参考place的文档,查看新的min/max/arrange/collapse/gap属性。
class notifier替换掉class tray
类noifier的作用是在通知区创建一个图标,目前这个类只工作在Windows上。
接收拖拽文件
现在,注册mouse_dropfiles时,窗口不会自动开启接收拖拽文件的功能。要开启此功能,需要调用widget的enable_dropfiles()或者API::enable_dropfiles()。
API::wait_for()函数
wait_for(window_handle) 会阻塞当前调用函数的执行,直到由window_handle指定的窗口被关闭。该函数与API::modal_window()不同,它不会阻止于其他窗口的交互。