这是一个系列讲座,主要讲述QNX下的GUI编程-Photon编程,主要针对初学者。
Photon Manager作为一个服务进程运行,并且创建一个三维的事件空间(包含二维空间的region和第三维--事件管理)。Photon Manager本身不会绘制任何东西,也不会管理鼠标、键盘等输入设备。Photon Manager只是一个中间件,一方面他提供给上层应用一系列标准编程接口,另一方面驱动程序和窗口管理器通过与他通信获得应用程序指令。
Photon microGUI包含了一个可视化开发工具Photon Application Builder,也就是我们常说的PhAB。他可以辅助设计界面,并生成相应的C/C++代码,通过使用PhAB我们可以快速的开发产品原型、并将每一个widget的事件处理回调属性化。
Widget集合建立在X Toolkit(Xt)库之上,这是一个面向对象的轻量级框架,如果你熟悉Xt,那么你学习Photon编程会很容易。
每一个Widget封装了如下内容:
- 怎样绘制自己;
- 如何相应用户事件;
- 当他销毁时如何重画;
一个Widget创建后我们可以使用PtSetResource对他的资源(或者说是属性)进行设置,事件回调也可以通过这种方法设置。
一个Widget的生命周期包括如下阶段:
- 创建,Create or Instantiated,这时对象已经存在,可以设置属性;
- 真实化,realized,这时对象将可见,可以通过PtRealizeWidget()来真实化对象;
- 虚化对象,unrealized,这时对象不可见,可以通过调用PtUnrealizeWidget()来虚化对象;
- 销毁,当对象不需要存在时,可以手动销毁对象,可以通过PtDestroyWidget()销毁对象。
我们可以使用PhAB来建立Photon工程,也可以手工建立文本类型工程之后加入对象的创建、真实化、虚化、销毁的代码,通过调用PtMainLoop()处理消息队列中的消息来完成业务逻辑。
Photon API函数命名约定:
- Al前缀:国际化处理,需包含phexlib库;
- Ap前缀:PhAB处理模块、widget数据库等的函数,需包含Ap库;
- Pd前缀:绘制上下文函数;
- Pf前缀:文字操作;
- Pg前缀:底层图形函数;
- Ph前缀:Photon microKernel绘制请求函数;
- P1前缀:图形图像函数;
- Pm前缀:内存上下文函数;
- Pp前缀:打印函数;
- Pt前缀:创建、真实化、销毁Widget函数;
- Px前缀:加载图像、处理配置文件等扩展函数集;
- Pt前缀:实时时钟函数;
- utf8:UTF-8编码字符串函数;
- wc:宽字符字符串处理函数;
创建Photon工程步骤:
- 创建module:包括窗口、对话框、菜单、图片等资源;
- 添加widget;
- 添加事件回调处理函数;
- 生成代码;
- 运行应用程序;