Hello Nana C++ Library
来源:互联网 发布:淘宝二维码制作 编辑:程序博客网 时间:2024/05/16 07:48
Hello Nana
项目网址
介绍贴
我们开始一个简单的程序,然后一行一行的讲解。
1 #include<nana/gui/wvl.hpp>
2 #include <nana/gui/widgets/label.hpp>
3 int main()
4 {
5 using namespace nana::gui;
6 form fm;
7 label lab(fm, nana::size(100, 20));
8 lab.caption(STR("Hello Nana"));
9 fm.show();
10 exec();
}
第一行和第二行,包含定义在 namespace nana::gui 中的 form 类和 label 类。所有用Nana C++ Library开发的界面程序都需要包含<nana/gui/wvl.hpp>。
第五行,将nana::gui这个命名空间引入到main函数域中,使编译器可以直接查找到定义在nana::gui中的名字,例如:form, label, exec。
第六行,定义一个名为fm的form对象。在该例子中,这是一个用于摆放label微件的窗口。
第七行,定义一个名为lab的label对象,是一个用于显示文本字符串的标签微件,被创建在窗口中。微件是用户界面中的一个可视元素。
第八行,设置label对象的标题,每个微件都有一个caption()方法用于设置标题。在这行代码中,有一个被名为STR()的宏引用的字符串,这个宏用来外覆一个字符串,作用是使程序在UNICODE和多字节版本之间方便地切换。
第九行,使窗口可见。
第十行,将程序的控制权交给Nana库,此时,程序进入事件循环,等待并接收用户输入,例如,鼠标的移动,单击和键盘的敲击等等,exec()函数会阻塞该线程,直到窗口fm被关闭,在该例中,当关闭掉窗口,程序也随即结束。
Figure 1.1 Hello Nana
现在,使该程序在你的系统中运行之前,你应该安装Nana C++ Library。在帮助目录中,Installation Library Documentation讲解了安装的方法。
事件处理
为了接收用户的操作,需要对指定的微件注册事件处理函数,Nana库会等待用户输入,然后触发与事件对应的事件处理函数。第二个例子展示如何响应用户操作,该程序由一个按钮组成,当点击该按钮,程序就退出。
#include <nana/gui/wvl.hpp>#include <nana/gui/widgets/button.hpp>int main(){using namespace nana::gui;form fm;button btn(fm, nana::size(100, 20));btn.caption(STR("Quit"));btn.make_event<events::click>(API::exit);fm.show();exec();}这段代码和第一个例子很相似,只是把label换成了button,并且给按钮注册了一个click(单击)事件。所有的widget(微件)类都提供一组方法用于注册事件,这组方法全都名为make_event,这是一个函数模板,第一个模板参数指定了一个事件的类型,并且必须显式指定。该函数模板的参数为事件的处理函数,API::exit()是Nana库提供的一个函数,用于关闭当前UI线程中的所有窗口,并退出事件循环函数。在该例中,当单击按钮时,API::exit()会被调用,然后窗口被关闭,程序随即结束。
在下篇中,我们将讲解函数对象和lambdas,以及这两个语言特性是如何运用在事件处理中,使程序的结构更加的清晰。
- Hello Nana C++ Library
- Nana C++ Library:初探
- Nana C++ Library
- Nana C++ Library:初探
- 开启Nana C++ Library对PNG的支持
- Enterprise Library 2.0 - Hello IConfigurationSource
- 手机hotmail邮箱的设置(——NANA的6120c成功)
- [C++] Hello
- hello c
- hello.c
- hello c
- hello.c
- Hello,C!
- hello.c
- Shared library "Hello World!" for Android
- Shared library "Hello World!" for Android
- Shared library "Hello World!" for Android
- lonely..------ Nana Mouskouri
- POJ 1151
- 软件开发的反思之二--软件失败真相
- CS安装卸载测试总结
- List<T>用法
- OpenGL之曲面和曲线
- Hello Nana C++ Library
- 计算相对角度的两个函数
- S3C6410芯片揭密之一 S3C6410体系结构
- lower_bound 用法
- qemu启动虚拟机
- Quartz在Spring中设置动态定时任务
- vc resource 文件在另一个编辑器中打开
- hdu 2514 Another Eight Puzzle
- Fedora Gnome3 系统设置