Nana开发: 版本0.2.3

本次更新主要改进了对X11的支持,例如拖放事件和dataexch(剪贴板),这意味着Nana C++ Library可以更好地工作在Linux(X11)平台上。除此之外,本次更新还包含了其他的新特性。


class msgbox

class msgbox用于显示一个模式窗口并提示一条简短的信息。一个简单的例子:


nana::gui::msgbox m(STR("msgbox example"));
m<<STR("This is a msgbox example.");
m();



msgbox是C++流风格,因此我们可以很方便地显示字符串,数字和所有类型重载了对std::ostream的operator<<操作符。

有时候,应用程序应该询问用户是否退出程序。

void when_exit(const nana::gui::eventinfo& ei)
{
    nana::gui::msgbox m(ei.window, STR("msgbox example"), nana::gui::msgbox::yes_no);
    m.icon(m.icon_question);
    m<<STR("Are you sure you want to exit the game?");
    ei.unload.cancel = (m() != m.pick_yes);
}

int main()
{
    using namespace nana::gui;
    form fm;
    fm.make_event<events::unload>(when_exit);
    fm.show();
    exec();
}



窗口图标

Nana库定义了两个接口用于设置类型为root_widget窗口的图标,这类窗口如:form和nested_form,这些接口定义在nana::gui::API命名空间中。

void window_icon_default(const nana::paint::iamge&);
void window_icon(nana::gui::window, const nana::paint::image&);


window_icon_default()设置一个默认的图标。在调用之后,所有窗口在创建的时候就会自动设置默认图标。

虽然Nana C++ Library的目标是跨平台,但是在Windows和Linux(X11)上仍然有一些差别,在Windows上,窗口的图标只能是ICON文件。如果程序需要跨平台,那么在编码时就需要区别对待。

using namespace nana::gui;
#if defined(NANA_WINDOWS)
    API::window_icon(fm, nana::paint::image(STR("icon.ico")));
#else
    API::window_icon(fm, nana::paint::image(STR("icon.bmp")));
#endif


在Windows上,窗口的图标通常是EXE文件的图标,这个图标文件以资源的形式保存在EXE文件中。若将资源中的图标文件设置为窗口图标,只需要用类image打开这个EXE文件即可。

API::window_icon_default(nana::paint::image(STR("program.exe")));
或者

API::window_icon(a_form_object, nana::paint::image(STR("program.exe")));


相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页