logo资料库

MiniGUI编程指南-V3.0.pdf

第1页 / 共668页
第2页 / 共668页
第3页 / 共668页
第4页 / 共668页
第5页 / 共668页
第6页 / 共668页
第7页 / 共668页
第8页 / 共668页
资料共668页,剩余部分请下载后查看
MiniGUI 编 程 指 南
版本 3.0 修订号 4
适用于 MiniGUI Ver 3.0.x
北京飞漫软件技术有限公司
UMiniGUIU 编程指南(V3.0)
简介
版权声明
1 前言
1.1 相关的文档
1.2 本指南的组织
1.3 获得本指南中的例子
1.4 示例程序的编译及运行环境
1.5 版权和许可条款
2 开始 MiniGUI 编程
2.1 基本的编程概念
2.1.1 事件驱动编程
2.1.2 MiniGUI 的三种运行模式
2.2 一个简单的 MiniGUI 程序
2.2.1 头文件
2.2.2 程序入口点
2.2.3 MiniGUI-Processes 模式下加入层
2.2.4 创建和显示主窗口
2.2.5 进入消息循环
2.2.6 窗口过程函数
2.2.7 屏幕输出
2.2.8 程序的退出
2.3 编译、链接和运行
2.3.1 编译MiniGUI程序
2.3.2 MiniGUI 组件
2.4 为MiniGUI 应用程序编写 Automake/Autoconf 脚本
3 窗口和消息
3.1 窗口系统和窗口
3.1.1 什么是窗口系统
3.1.2 窗口的概念
3.2 MiniGUI的窗口
3.2.1 窗口类型
3.2.2 主窗口的创建
3.2.3 窗口风格
3.2.4 不规则窗口的创建
3.2.5 主窗口的销毁
3.2.6 对话框
3.2.7 控件和控件类
3.2.8 输入法支持
3.3 消息与消息处理
3.3.1 消息
3.3.2 消息的种类
3.3.3 消息队列
3.3.4 消息的处理
3.3.5 发送和投递消息
3.3.6 MiniGUI-Processes 的专用消息处理函数
3.4 几个重要的消息及其处理
3.4.1 MSG_NCCREATE
3.4.2 MSG_SIZECHANGING
3.4.3 MSG_SIZECHANGED 和 MSG_CSIZECHANGED
3.4.4 MSG_CREATE
3.4.5 MSG_FONTCHANGING
3.4.6 MSG_FONTCHANGED
3.4.7 MSG_ERASEBKGND
3.4.8 MSG_PAINT
3.4.9 MSG_CLOSE
3.4.10 MSG_DESTROY
3.5 通用窗口操作函数
4 对话框编程基础
4.1 主窗口与对话框
4.2 对话框模板
4.3 对话框回调函数
4.4 MSG_INITDIALOG 消息
4.5 模态与非模态对话框
4.6 对话框相关的控件风格和操作函数
5 控件编程基础
5.1 控件和控件类
5.2 利用预定义控件类创建控件实例
5.3 控件编程涉及的内容
5.4 控件专用的操作函数
6 控件高级编程
6.1 自定义控件
6.2 控件的子类化
6.3 控件的组合使用
7 菜单
7.1 菜单概念
7.2 创建和操作菜单
7.2.1 创建普通菜单
7.2.2 创建弹出式菜单
7.2.3 MENUITEMINFO 结构
7.2.4 操作菜单项
7.2.5 删除和销毁菜单或菜单项
7.2.6 MSG_ACTIVEMENU 消息
7.3 编程实例
8 滚动条
8.1 滚动条概念
8.2 使能、禁止滚动条
8.3 滚动条的范围和位置
8.4 滚动条消息
8.5 编程实例
9 键盘和鼠标
9.1 键盘
9.1.1 键盘输入
9.1.2 击键消息
9.1.3 字符消息
9.1.4 键状态
9.1.5 输入焦点
9.1.6 示例程序
9.2 鼠标
9.2.1 鼠标输入
9.2.2 鼠标消息
9.2.3 鼠标捕获
9.2.4 跟踪鼠标光标
9.3 事件钩子
10 图标、光标和插入符
10.1 图标
10.1.1 图标的装载和显示
10.1.2 图标的销毁
10.1.3 图标的创建
10.1.4 使用系统图标
10.2 光标
10.2.1 光标的载入和创建
10.2.2 光标的销毁
10.2.3 光标的定位和显示
10.2.4 光标限定
10.2.5 使用系统光标
10.2.6 示例程序
10.3 插入符
10.3.1 插入符的创建和销毁
10.3.2 显示和隐藏插入符
10.3.3 插入符的定位
10.3.4 调整插入符的闪烁时间
10.3.5 示例——简单编辑框窗口
11 界面外观及特效
11.1 外观渲染器及窗口元素属性
11.1.1 窗口元素属性
11.1.2 皮肤渲染器的窗口皮肤属性
11.1.3 窗口属性操作函数
11.1.4 渲染器管理
11.1.5 主窗口的创建
11.1.6 控件的创建
11.1.7 对话框的创建
11.2 主窗口双缓冲区
11.2.1 双缓冲窗口扩展风格
11.2.2 双缓冲区机制的相关函数
11.2.3 双缓冲区机制特效示例( 淡入淡出特效、推拉特效和卷帘特效)
11.3 桌面定制
11.3.1 桌面定制结构体
11.3.2 相关函数
11.3.3 编程实例
12 其他编程主题
12.1 定时器
12.2 剪贴板
12.2.1 创建和销毁剪贴板
12.2.2 把数据传送到剪贴板
12.2.3 从剪贴板上获取数据
12.3 读写配置文件
12.4 编写可移植程序
12.4.1 理解并使用 MiniGUI 的 Endian 读写函数
12.4.2 利用条件编译编写可移植代码
12.5 定点数运算
13 图形设备接口
13.1 UMiniGUIU图形系统的架构
13.1.1 GAL和GDI
13.1.2 新的GAL
13.2 窗口绘制和刷新
13.2.1 何时进行绘制
13.2.2 MSG_PAINT消息
13.2.3 有效区域和无效区域
13.3 图形设备上下文
13.3.1 图形设备的抽象
13.3.2 设备上下文句柄的获取和释放
13.3.3 设备上下文句柄的保存和恢复
13.3.4 系统内存中的设备上下文
13.3.5 屏幕设备上下文
13.4 映射模式和坐标空间
13.4.1 映射模式
13.4.2 视口和窗口
13.4.3 设备坐标的转换
13.4.4 坐标系的偏移和缩放
13.5 矩形操作和区域操作
13.5.1 矩形操作
13.5.2 区域操作
13.6 基本的图形绘制
13.6.1 基本绘图属性
13.6.2 基本绘图函数
13.6.3 剪切域操作函数
13.7 文本和字体
13.8 位图操作
13.8.1 位图的概念
13.8.2 位图的颜色
13.8.3 设备相关位图和设备无关位图
13.8.4 位图文件的装载
13.8.5 位块填充
13.8.6 位块传送
13.9 调色板
13.9.1 为什么需要调色板
13.9.2 调色板的使用
14 文本的处理和显示
14.1 字符集和编码
14.2 设备字体
14.2.1 位图设备字体
14.3 逻辑字体
14.4 文本分析
14.5 文本转换
14.6 文本输出
14.7 字体的渲染特效
14.8 BIDI文本的使用
15 基于 NEWGAL 的高级 GDI 函数
15.1 新的区域算法
15.2 光栅操作
15.3 内存 DC 和 BitBlt
15.4 增强的 BITMAP 操作
15.5 新的 GDI 绘图函数
15.6 高级GDI绘图函数
15.6.1 图片缩放函数
15.6.2 图片旋转函数
15.6.3 圆角矩形
15.7 曲线和填充生成器
15.7.1 直线剪切器和直线生成器
15.7.2 圆生成器
15.7.3 椭圆生成器
15.7.4 圆弧生成器
15.7.5 垂直单调多边形生成器
15.7.6 一般多边形生成器
15.7.7 填注生成器
15.7.8 曲线和填充生成器的用法
15.8 绘制复杂曲线
15.9 封闭曲线填充
15.10 建立复杂区域
15.11 直接访问显示缓冲区
15.12 高级二维绘图函数
15.12.1 画笔及其属性
15.12.2 画刷及其属性
15.12.3 高级二维绘图函数
15.12.4 高级二维绘图函数的使用
15.13 双屏显示
15.13.1 创建副屏
15.13.2 销毁副屏
16 进程间通讯及异步事件处理
16.1 异步事件处理
16.2 UMiniGUIU-Processes与进程间通讯
16.2.1 UMiniGUIU-Processes的多进程模型
16.2.2 简单请求/应答处理
16.2.3 UNIX Domain Socket 封装
17 开发定制的 UMiniGUIU-Processes 服务器程序
17.1 mg-samples中 mginit 程序
17.1.1 初始化 UMiniGUIU-Processes 的服务器功能
17.1.2 创建任务栏
17.1.4 启动默认程序
17.1.5 进入消息循环
17.2 最简单的 mginit 程序
17.3 UMiniGUIU-Processes 客户端专用函数
17.4 Mginit专用的其他函数和接口
18 图形引擎及输入引擎
18.1 Shadow 图形引擎
18.2 MLShadow 图形引擎
18.3 pc_xvfb 图形引擎
18.4 rtos_xvfb 图形引擎
18.5 CommLCD 引擎
18.6 Comm IAL引擎
18.7 Custom IAL 引擎
18.8 Custom IAL 引擎实例
19 静态框
19.1 静态框的类型和风格
19.1.1 标准型
19.1.2 位图型
19.1.3 分组框
19.1.4 其他静态框类型
19.2 静态框消息
19.3 静态框通知码
19.4 编程实例
20 按钮
20.1 按钮的类型和风格
20.1.1 普通按钮
20.1.2 复选框
20.1.3 单选钮
20.2 按钮消息
20.3 按钮通知码
20.4 编程实例
21 列表框
21.1 列表框的类型和风格
21.2 列表框消息
21.2.1 将字符串加入列表框
21.2.2 删除列表框条目
21.2.3 选择和取得条目
21.2.4 查找含有字符串的条目
21.2.5 设置和获取某条目的检查框的当前状态
21.2.6 设置某列表框条目加粗显示状态
21.2.7 设置和获取某列表框条目的选择状态
21.2.8 添加多个列表框条目
21.2.9 其他消息
21.3 列表框通知码
21.4 编程实例
22 编辑框
22.1 编辑框风格
22.2 编辑框消息
22.2.1 获取和设置插入符位置
22.2.2 设置和获取选中的文本
22.2.3 复制、剪切和粘贴
22.2.4 获取和设置行高等属性
22.2.5 设置文本上限
22.2.6 设置和取消只读状态
22.2.7 设置和获取密码字符
22.2.8 设置标题文字和提示文字
22.2.9 设置行结束符的显示符号
22.2.10 设置行结束符
22.2.11 获取段落数、指定段落长度和文本
22.3 编辑框通知码
22.4 编程实例
23 组合框
23.1 组合框的类型和风格
23.1.1 简单组合框、下拉式组合框以及旋钮组合框
23.1.2 旋钮数字框
23.2 组合框消息
23.2.1 简单组合框、下拉式组合框以及旋钮组合框的消息
23.2.2 旋钮数字框的消息
23.3 组合框通知码
23.4 编程实例
24 菜单按钮
24.1 菜单按钮风格
24.2 菜单按钮消息
24.2.1 向菜单按钮控件添加条目
24.2.2 从菜单按钮控件删除条目
24.2.3 删除菜单中的所有条目
24.2.4 设置当前选定条目
24.2.5 得到当前选定条目
24.2.6 获取或设置菜单项条目数据
24.2.7 其他消息
24.4 菜单按钮的通知消息
24.5 编程实例
25 进度条
25.1 进度条风格
25.2 进度条消息
25.2.1 设置进度条的范围
25.2.2 设置步进长度
25.2.3 设置进度条位置
25.2.4 在当前进度基础上偏移
25.2.5 使进度条前进一个步进值
25.3 进度条通知码
25.4 编程实例
26 滑块
26.1 滑块风格
26.2 滑块消息
26.3 滑块通知码
26.4 编程实例
27 工具栏
27.1 创建工具栏控件
27.2 工具栏风格
27.3 工具栏消息
27.3.1 添加工具项
27.3.2 获取或设置工具项信息
27.3.3 设置新的工具项位图
27.4 工具栏通知码
27.5 编程实例
28 属性表
28.1 属性表风格
28.2 属性表消息
28.2.1 添加属性页
28.2.2 属性页过程函数
28.2.3 删除属性页
28.2.4 属性页句柄和索引
28.2.5 属性页的相关操作
28.3 属性表通知码
28.4 编程实例
29 滚动窗口控件
29.1 可以滚动的窗口
29.2 通用的滚动窗口消息
29.2.1 获取和设置内容区域和可视区域的范围
29.2.2 获取位置信息和设置当前位置
29.2.3 获取和设置滚动属性
29.3 滚动窗口控件消息
29.3.1 添加子控件
29.3.2 获取子控件的句柄
29.3.3 容器(内容)窗口过程
29.4 编程实例
30 滚动型控件
30.1 控件风格
30.2 滚动型控件消息
30.2.1 列表项的内容显示
30.2.2 列表项操作函数的设置
30.2.3 列表项的操作
30.2.4 获取和设置当前高亮项
30.2.5 列表项的选择和显示
30.2.6 显示的优化
30.2.7 设置可见区域的范围
30.3 控件通知码
30.4 编程实例
31 树型控件
31.1 树型控件风格
31.2 树型控件消息
31.2.1 节点项的创建和删除
31.2.2 节点项属性的设置和获取
31.2.3 选择和查找节点项
31.2.4 比较和排序
31.3 树型控件的通知码
31.4 编程实例
32 列表型控件
32.1 列表型控件风格
32.2 列表型控件消息
32.2.1 列的操作
32.2.2 列表项操作
32.2.3 选择、显示和查找列表项
32.2.4 比较和排序
32.2.5 树型节点的操作
32.3 其它消息的处理
32.4 列表型控件通知码
32.5 编程实例
33 月历控件
33.1 月历控件风格
33.2 月历控件消息
33.2.1 获取日期
33.2.2 设置日期
33.2.3 调整颜色
33.2.4 控件大小
33.3 月历控件通知码
33.4 编程实例
34 旋钮控件
34.1 旋钮控件风格
34.2 旋钮控件消息
34.2.1 设置和获取位置属性
34.2.2 禁止和恢复
34.2.3 目标窗口
34.3 旋钮控件通知码
34.4 编程实例
35 酷工具栏
35.1 酷工具栏风格
35.2 酷工具栏消息
35.3 编程实例
36 动画控件
36.1 ANIMATION 对象
36.2 动画控件风格
36.3 动画控件消息
36.4 编程实例
37 网格控件
37.1 网格控件风格
37.2 网格控件消息
37.2.1 列的操作
37.2.2 行的操作
37.2.3 单元格的操作
37.3 其它消息的处理
37.4 网格控件通知码
37.5 编程实例
38 图标型控件
38.1 图标型控件风格
38.2 图标型控件消息
38.2.1 图标项的操作
38.3 控件通知码
38.4 编程实例
39 独立滚动条控件
39.1 滚动条的定义
39.2 滚动条的形态
39.3 独立滚动条的风格
39.4 独立滚动条的消息
39.4.1 获取滚动条信息
39.4.2 设置滚动条信息
39.4.3 获取当前游标的位置
39.4.4 设置当前游标的位置
39.4.5 获取滚动条滚动范围
39.4.6 设置滚动条滚动范围
39.4.7 设置滚动条滚动范围,并立即重绘
39.4.8 启用或者禁用滚动条箭头
39.5 滚动条可配置的属性
39.6 滚动条通知码
39.6.1 通知消息的触发
39.7 编程示例
附录A 统一的 UMiniGUIU 初始化接口
A.1 内存管理初始化接口
A.2 标准输出初始化接口
A.3 POSIX Threads 初始化接口
MiniGUI 3.0 编程指南 MiniGUI 编 程 指 南 版本 3.0 修订号 4 适用于 MiniGUI Ver 3.0.x 北京飞漫软件技术有限公司 2010 年 1 月 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南 MiniGUI 编程指南(V3.0) • • • 简介 版权声明 第 01 章:前言 • 第 1 篇:MiniGUI 编程基础 o o o o o o o o o o o 第 02 章:开始 MiniGUI 编程 第 03 章:窗口和消息 第 04 章:对话框编程基础 第 05 章:控件编程基础 第 06 章:控件高级编程 第 07 章:菜单 第 08 章:滚动条 第 09 章:键盘和鼠标 第 10 章:图标、光标和插入符 第 11 章:界面外观及特效 第 12 章:其他编程主题 • 第 2 篇:MiniGUI 图形编程 o o o 第 13 章:图形设备接口 第 14 章:文本的处理和显示 第 15 章:高级图形函数 • 第 3 篇:MiniGUI 高级编程 o o o 第 16 章:进程间通讯及异步事件处理 第 17 章:开发定制的 MiniGUI-Processes 服务器程序 第 18 章:图形引擎及输入引擎 • 第 4 篇:MiniGUI 控件编程 o o o o o o o o o 第 19 章:静态框 第 20 章:按钮 第 21 章:列表框 第 22 章:编辑框 第 23 章:组合框 第 24 章:菜单按钮 第 25 章:进度条 第 26 章:滑块 第 27 章:工具栏 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南 o o o o o o o o o o o o 第 28 章:属性表 第 29 章:滚动窗口控件 第 30 章:滚动型控件 第 31 章:树型控件 第 32 章:列表型控件 第 33 章:月历控件 第 34 章:旋钮控件 第 35 章:酷工具栏 第 36 章:动画控件 第 37 章:网格控件 第 38 章:图标型控件 第 39 章:独立滚动条控件 • 附录A:统一的 MiniGUI 初始化接口 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南 简介 由北京飞漫软件技术有限公司开发的 MiniGUI(http://www.minigui.com),是国内为数不多的几大国际知名自由软件之一。其 目标是为实时嵌入式操作系统建立一个跨操作系统的、快速、稳定和轻量级的窗口系统及图形用户界面支持系统。我们 将 MiniGUI 定义为“针对嵌入式设备的、跨操作系统的图形界面支持系统”,属于一种“嵌入式图形中间件”软件产品。目前, MiniGUI 已成为跨操作系统的图形用户界面支持系统,可在 Linux/uClinux、eCos、VxWorks、pSOS、ThreadX、Nucleus、uC/OS-II、 OSE 等操作系统,以及 Win32 平台上运行。 目前,MiniGUI 可免费下载的最新开源版本(遵循 GPL 条款)是 MiniGUI GPL V1.6.10。你可以从 http://www.minigui.org 下载 上述 GPL 版本的源代码、开发文档及示例程序。需要注意的是:免费下载的 MiniGUI 只能用于开发 GPL 或其它公开源码的 应用软件,如果你要利用 MiniGUI 开发专有或商业软件,则必须从北京飞漫软件技术有限公司购买商业授权。飞漫软件将为 购买 MiniGUI 商业授权的用户提供最新的 MiniGUI 3.0 标准版或专业版(或企业版)产品,并提供相关的移植及开发技术支持 服务。 本指南详细讲述了利用 MiniGUI 3.0.x 开发嵌入式应用软件的基础知识、技术资料和开发技巧,内容涉及到 MiniGUI 3.0.x 编程 的各个方面,包括消息循环和窗口过程、对话框和控件、图形接口等。有关 MiniGUI 3.0.x 应用编程接口的详细描述,可访问: http://www.minigui.com/api_ref/3.0.x_processes/index.html - 多进程运行模式(请根据实际版本来确定 x 的取值,如版本为 3.0.6, 则 x 为 6) http://www.minigui.com/api_ref/3.0.x_threads/index.html - 多线程运行模式 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南 版权声明 《MiniGUI 编程指南》版本 3.0,适用于 MiniGUI Version 3.0.x。 版权所有 (C) 2003~2010,北京飞漫软件技术有限公司,保留所有权利。 无论您以何种方式获得该手册的全部或部分文字或图片资料,无论是普通印刷品还是电子文档,北京飞漫软件技术有限公司 仅仅授权您阅读的权利,任何形式的格式转换、再次发布、传播以及复制其内容的全部或部分,或将其中的文字和图片未经 书面许可而用于商业目的,均被视为侵权行为,并可能导致严重的民事或刑事处罚。 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南 1 前言 • • • • • 1.1 相关的文档 1.2 本指南的组织 1.3 获得本指南中的例子 1.4 示例程序的编译及运行环境 1.5 版权和许可条款 MiniGUI 是一个跨操作系统的、面向嵌入式系统的轻量级图形用户界面支持系统。MiniGUI 项目自 1998 年底开始到现在,已 历经十多年的开发过程,目前已非常成熟和稳定,并且在许多实际产品或项目中得到了广泛的应用。目前,MiniGUI 的最新 版本是 3.0。本指南是 MiniGUI 3.0 的编程指南,描述如何在 MiniGUI 之上编写应用程序。 本指南是一本关于 MiniGUI 3.0 编程的完整指南,讲述了使用 MiniGUI 3.0 编程的基础知识、编程方法及技巧,并详细地描述 了主要的应用程序编程接口函数。虽然本指南试图尽可能详尽地描述 MiniGUI 编程的各个方面,但它不是一本关于 MiniGUI API 的完整参考手册,该方面的信息请参考《MiniGUI API Reference Manual》。 1.1 相关的文档 和本编程指南相关的文档有: • 技术白皮书 - 描述 MiniGUI V3.0 的功能特性。 • 特性表 - MiniGUI V3.0 功能特性的具体描述。 • MiniGUI 3.0 API 参考手册(多进程模式) - MiniGUI V3.0 多进程运行模式的 API 详细描述。 • MiniGUI 3.0 API 参考手册(多线程模式) - MiniGUI V3.0 多线程运行模式 API 详细描述。 • 发布说明(Release Notes) - 有关 MiniGUI V3.0 和先前版本的主要区别及兼容性说明文档。该文件详细描述了新版 本中的新增功能、增强或者优化等等;请特别注意可能引起兼容性问题的增强或缺陷修正。 请访问 http://www.minigui.com/index.phpid=techproducts 获得飞漫软件其他产品的信息以及购买信息。 1.2 本指南的组织 除本前言外,本指南共分四篇共三十八章: • 第 1 篇:MiniGUI 编程基础,第 2 章到第 12 章。讲述使用 MiniGUI 编程的基本概念。 • 第 2 篇:MiniGUI 图形编程,第 13 章到第 15 章。讲述 MiniGUI 图形相关接口的使用及概念。 • 第 3 篇:MiniGUI 高级编程主题,第 16 章到第 18 章。讲述 MiniGUI-Processes 相关的高级编程概念及定制图形引 擎和输入引擎的开发。 • 第 4 篇:MiniGUI 控件编程,第 19 章到第 38 章。讲述 MiniGUI 提供的各种控件的使用方法。 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南 1.3 获得本指南中的例子 本指南中的示例程序 mg-samples 软件包(MiniGUI 示例程序包)。我们将这些示例程序组织成了完整的 Autoconf/Automake 项目,并以 mg-samples 软件包的形式保存在产品光盘中。对 MiniGUI 3.0 产品(标准版、专业版或企业版),示例程序的代 码包保存在产品光盘的 minigui/ 目录中,相关文件如下所列: • mg-samples-3.0.x-tar.gz:《MiniGUI 编程指南》的配套示例程序。 • minigui-res-3.0.x.tar.gz:MiniGUI 3.0 所使用的资源,包括基本字体、图标、位图和鼠标光标。 • adp/:对 MiniGUI 3.0 标准版和专业版产品,该目录中保存有针对特定开发板(操作系统、硬件平台)的 MiniGUI 3.0 开发包。 1.4 示例程序的编译及运行环境 本指南假定用户使用的是针对 Linux 操作系统的 MiniGUI 3.0 标准版或专业版产品,因此,某些例子是以用户使用 Linux 操 作系统以及 GNU 开发环境为背景讲述的。但是,本指南中的绝大部分概念同时适用于其他操作系统。关于如何在其他操作 系统上安装、编译并运行 MiniGUI 示例程序的相关内容,请参阅和产品光盘中 minigui/docs 目录下的《MiniGUI 使用说明》 文档(通常保存为 MiniGUI-USER-MANUAL*.pdf 文件)。 我们推荐运行 Linux 的 PC 机配置如下: • 奔腾 III 以上 CPU; • 256MB 以上内存; • 至少 15GB 空闲的硬盘空间; • 使用 USB/PS2 接口的鼠标(PS2 或 IMPS2 鼠标协议); • • 选择 Unbuntu Linux 7.10/8.04 发行版、Fedora Linux 8/9/10 发行版、Debian Linux 发行版等。安装时请选择所有的软 VESA2 兼容的显示卡,确保能达到 1024x768 分辨率,16 位色; 件包(需为 /usr 文件系统保留至少 5GB 的空间); • 对硬盘合理分区,将 /usr、/usr/local、/home、/var、/opt 等文件系统挂装在不同的分区上,确保为 /usr/local 和 /opt 文件系统划分至少各 3GB 的空间。 1.5 版权和许可条款 本指南中作为例子提供的源代码版权归北京飞漫软件技术有限公司所有,并遵循 GPL 条款发布。有关 GPL 许可证条款的原 文,通过如下途径获得: • mg-samples 软件包中的 COPYING 文件 • 访问 http://www.gnu.org/licenses/licenses.html 网页 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
MiniGUI 3.0 编程指南 2 开始 MiniGUI 编程 • • • • 2.1.1 事件驱动编程 2.2.1 头文件 2.2.2 程序入口点 2.1.2 MiniGUI 的三种运行模式 2.2.3 MiniGUI-Processes 模式下加入层 2.1 基本的编程概念 o o 2.2 一个简单的 MiniGUI 程序 o o o o o o o o 2.3 编译、链接和运行 o o 2.4 为 MiniGUI 应用程序编写 Automake/Autoconf 脚本 2.2.5 进入消息循环 2.2.6 窗口过程函数 2.2.7 屏幕输出 2.2.8 程序的退出 2.2.4 创建和显示主窗口 2.3.1 编译 MiniGUI 程序 2.3.2 MiniGUI 组件 本章以一个简单的 MiniGUI 程序为例讲述 MiniGUI 编程的基本概念和基础知识。 2.1 基本的编程概念 2.1.1 事件驱动编程 MiniGUI 是一个窗口系统及图形用户界面支持系统,通常的 GUI 编程概念均适用于 MiniGUI 编程,如窗口和事件驱动编程等。 在传统的窗口和图形系统模型中,键盘和鼠标动作产生由应用程序不断轮询的事件。这些事件通常被发送到具有焦点的窗口, 而应用程序把这些事件交由和该窗口相关联的例程来处理。这些窗口例程通常是由应用程序定义的,或者是某些标准例程中 的一个。操作系统、其它窗口的事件处理例程和应用程序代码都可以产生事件。 用于处理事件的窗口例程通常标识了某一个“窗口类”,具有相同窗口例程的窗口实例被认为是属于同一窗口类。 焦点和光标的概念用于管理输入设备和输入事件的传送。鼠标光标是一个绘制在屏幕之上的小位图,指示当前的鼠标位置。 以某种非破坏性的方式绘制该位图是窗口系统的责任,不过应用程序可以控制绘制哪一个位图以及是否显示该光标。应用程 序还可以捕捉鼠标光标并获取光标事件,即使该光标已经超出该应用程序窗口的显示范围。键盘输入有类似的输入焦点和键 盘输入插入符的概念。只有具有输入焦点的窗口才能获取键盘事件。改变窗口的焦点通常由特殊的按键组合或者鼠标光标事 件完成。具有输入焦点的窗口通常绘制有一个键盘插入符。该插入符的存在、形式、位置,以及该插入符的控制完全是由窗 口的事件处理例程完成的。 应用程序可通过调用一些系统函数来要求重绘窗口或窗口的某一部分,这些事件通常由窗口例程来处理。 Copyright © by the Feynman Software. All contents is the property of Feynman Software.
分享到:
收藏