FOX-Toolkit: Hello, World.

#include "fx.h"


/*

  这是一个经典的例子。正如你所看到的那样,用FOX来做同样的事
  并不比相应的控制台程序多多少代码!

  下列事项需要注意:

    - 每个FOX应用程序需要一个(也只需要一个)application对象(FXApp)。

    - 在做任何事情之前,需要初始化application对象。你需要将argc和argv
      这两个参数传递给它以便FOX可以处理特定的命令行参数(例如 -display).

    - 你至少需要创建一个顶层窗口;在本程序中是FXMainWindow。

    - FOX部件只需要以正确的顺序简单地嵌套创建。
      这里,我们创建FXButton作为"main"的孩子。

    - 一个对FXApp::create()的简单调用将自动创建每一个部件。
      若不调用create(),部件只会存在于那里,但并不会出现在屏幕上。
      

    - 最后,FXApp::run()函数会启动主事件循环。直到程序运行结束它才会返回。

*/


// 程序入口点
int main(int argc,char **argv){

  // 每个FOX GUI程序需要一个,也只需要一个application对象。
  // application对象会自动处理一些共享于部件之间的事务;
  // 比如说,它负责发送事件,保存所有的窗口,等等。
  // 我们需要传递“名字”以及“vendor(卖主)”给application,
  // 这两项是用来查找注册信息数据库(用来保存注册信息的,如
  // 字体和颜色)的。
  FXApp application("Hello","FoxTest");

  // 我们在这里初始化应用程序。我们需要将命令行参数传递给FOX以便它做一
  // 些特定的处理。它同时会显示窗口,读取配置文件以便使一些配置生效。
  application.init(argc,argv);

  // 下面要创建主窗口。我们需要将窗口标题以及图标当作参数传递给它(如果
  // 有的话)。它同时支持一些窗口特征,比如边界,关闭按钮,以及拖拽功能。
  FXMainWindow *main=new FXMainWindow(&application,"Hello",NULL,NULL,DECOR_ALL);

  // 这里我们创建了一个按钮。它上面有一个标签,但是没有图标。
  // '&'符号为这个按钮提供了一个快捷键,这样我们就可以用键盘来控制它。
  // 按钮会发送一个ID_QUIT消息给application对象,其默认实现为退出应用程序。
  new FXButton(main,"&Hello, World!",NULL,&application,FXApp::ID_QUIT);

  // 这句“实现”了部件树。这是必要的,因为GUI是一个客户端-服务器系统,
  // 也就是说,实际上有两个系统正在运行,一个客户端(在本程序中,是“Hello world”),
  // 以及一个服务器(X11 server或者Windows GDI)。我们可以创建C++部件对象,
  // 但同时我们也要告诉服务器将窗口显示出来。除了窗口,还有许多其它的资源,
  // 如图标,字体等需要创建。这个函数调用将递归地访问整个部件树,然后创建。
  application.create();

  // 很明显:这句将在屏幕中央显示我们的窗口。
  main->show(PLACEMENT_SCREEN);

  // 直到现在,我们才真正令我们的程序运行起来。直到我们退出程序,它才会返回。
  // 函数run()是一个简单的循环,它从用户那里接收事件,处理之,然后等待下一个事件,
  // 直到我们点击退出按钮。
  return application.run();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值