MiniGUI(程序开发)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

25
控件风格的介绍
窗口的通用风格: WS_VISIBLE WS_CAPTION WS_BORDER WS_VSCROLL WS_EX_NONE (窗口可见) (窗口有标题) (窗口有边框) (垂直滚动条) (无扩展风格)
26
重要的消息类型
MSG_CREATE:在窗口成功创建后进行触发, 在其中可以进行新窗口的创建。 MSG_COMMAND:控件内部发生事件时, 通过此消息来进行发送。 MSG_CHAR:有按键值,当按键按下时触发此 消息。 MSG_LBUTTONDOWN:鼠标点击左键时出 发此消息。
MSG_PAINT等。 鼠标信息存放于LOWORD
(lParam), HIWORD(lParam),
19
文件的编译
gcc –o same same.c –lpthread –lminigui – ljpeg –lpng
-o 选项告诉gcc 要生成的目标文件名,这里是same, -l 选项指定要链接的库,这里链接的是libminigui 库或 libpthread。编译 MiniGUI-Threads 程序时必须连接这 个函数库;其它要链接的 jpeg、png等函数库,则是 MiniGUI 内部所依赖的函数库。 如果要生成要在目标板上运行的程序时,我们要选 择交叉编译器为arm-linux-gcc
//TranslateMessage 函数把击键消息转换为MSG_CHAR 消息
DispatchMessage(&Msg);
// DispatchMessage 函数最终将把消息发往该消息的目标窗口的窗口过程,让它进 行//处理
}
//应用程序现在的任务就是执行以上的消息循环代码,不断地从消息队列中取出消息 //处理
主窗口的建立
CreateInfo.MainWindowProc = HelloWinProc;//设置主窗口的窗口过程函数
CreateInfo.lx = 0;
CreateInfo.ty = 0; CreateInfo.rx = 320;
//窗口坐标
CreateInfo.by = 240;
CreateInfo.iBkColor = COLOR_lightwhite;
20
配置编译环境
在PC上配置MiniGUI的编译环境
配置MiniGUI的交叉编译环境
在PC上配置SQLite数据库
配置SQLite的交叉编译环境
21
系统需求分析
通过对系统的分析来决定采用MiniGUI的
具体实现方式。通过PC模拟环境来进行项目的 初始开发,通过修改输入引擎来实现在目标板
上的键盘和鼠标操作。

GetWindowAdditionalData :获得对话框的附加 数据。
29
主要的API接口函数

5
MINIGUI版本 我们现在使用的为 GPL 发布的 MiniGUI V1.3.3 版本。现在我们使用的
案例都是基于Threads模式之下。
6
事件驱动
程序的流程不再是只有一个入口和若干个 出口的串行执行线路;相反,程序会一直处于 一个循环状态,在这个循环当中,程序不断从 外部或内部获取某些事件,比如用户的按键或 者鼠标的移动,然后根据这些事件作出某种响 应,并完成一定的功能,这个循环直到程序接 收到某个消息为止。
MainWindowThreadCleanup (hMainWnd);//程序最后调用
MainWindowThread Cleanup 清除主窗口所使用的消息队列等系统资源并最终由MiniGUIMain 返回
13
对话框的建立
对话框本质上就是主窗口,应用程序一般通过对 话框提示用户进行输入操作。
typedef struct { char* class_name; DWORD dwStyle; int x, y, w, h; dialog int id; const char* caption; DWORD dwAddData; DWORD dwExStyle; } CTRLDATA; typedef CTRLDATA* PCTRLDATA;
7
窗口的概念
窗口是屏幕上的一个矩形区域。在传统的 窗口系统模型中,应用程序的可视部分由一个 或多个窗口构成。每一个窗口代表屏幕上的一 块绘制区域,窗口系统控制该绘制区域到实际 屏幕的映射,也就是控制窗口的位置、大小以 及可见区域
8
9
MINIGUI 的窗口类型
主窗口 对话框窗口 控件窗口(子窗口)
MINIGUI简介
MiniGUI是由北京飞漫软件技术有限公司创办的 开源Linux图形用户界面支持系统,经过近些年的发
展,MiniGUI已经发展成为比较成熟的性能优良的、
功能丰富的跨操作系统的嵌入式图形界面支持系统。
“小”是MiniGUI的特色,它目前已经广泛应用于通
讯、医疗、工控、电子、Байду номын сангаас顶盒、多媒体等领域。目
10
主窗口的建立
每个MiniGUI 应用程序的初始界面一般都是一个主窗口, 可以通过调用 CreateMainWindow 函数来创建一个主窗口,其参数是一个指向 MAINWINCREATE 结构的指针。 MSG Msg; HWND hMainWnd; MAINWINCREATE CreateInfo; CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
4
MINIGUI-THREADS
运行在 MiniGUI-Threads 上的程序可以在 不同的线程中建立多个窗口,但所有的窗口 在一个进程或者地址空间中运行。这种运行 模式非常适合于大多数传统意义上的嵌入式 操作系统,比如 eCos、pSOS 、 uC/OS-II 等等。当然,在 Linux 和 uClinux 上, MiniGUI 也能以 MiniGUI-Threads 的模式运 行。
前,MiniGUI的最新版本为MiniGUI 3.0。
1
MINIGUI概述
MiniGUI 起初仅仅是为了能够在 Linux 上显示中文而开发的,但是目前, MiniGUI 已发展为一个跨操作系统的嵌 入式图形支持系统。目前MiniGUI 已经 一步步发展成为跨操作系统的嵌入式图 形中间件产品。
2
MINIGUI介绍
// dialog box
// dialog box icon // dialog box menu // number of // poiter to control
15
对话框的建立
结构 CTRLDATA 用来定义控件,DLGTEMPLATE 用 来定义对话框本身。
static void InitDialogBox (HWND hWnd) { /* 将对话框模板结构和控件结构数组关联起来 */ DlgInitProgress.controls = CtrlInitProgress; DialogBoxIndirectParam (&DlgInitProgress, hWnd, InitDialogBoxProc, 0L); }
色 //设置主窗口的背景色为白
CreateInfo.dwAddData = 0;

//设置主窗口的附加数据
CreateInfo.hHosting = HWND_DESKTOP; //设置主窗口的托管窗口为桌面窗
hMainWnd = CreateMainWindow (&CreateInfo);
// CreateMainWindow 函数根据MAINWINCREATE 结构类型的参数中指定的窗口 过程创建主窗口。
// control class // control style // control position in
// control identifier // control caption // additional data // control extended style
14
对话框的建立
的控件集合,它们是人机交互的主要元素。
MiniGUI 提供了常用的预定义控件类,
包括按钮(包单选钮、复选钮)、静态框、 列表框、进度条、滑块、编辑框等等。
18
控件消息的传送
控件内部发生某种事件时,会通过通知消息
通知其父窗口。其类型一般有:MSG_CHAR,
MSG_COMMAND,MSG_CLOSE,
16
主窗口与对话框的一些区别
这个是用对话框的模板建立主窗口 ,好处 就是简化了主窗口控件的建立步骤,一般主窗
口每建立一个控件就得调一次CreatWindow
一次,而且在消息处理函数中,(比较乱)
如果使用这个办法一次搞定 ,对话框多用于
存在数据输入输出的地方。
17
控件窗口
较为复杂的 GUI 系统中,都带有预定义
28
主要的API接口函数

GetDlgItem:根据控件标识符获得控件句柄。


GetWindowText:复制编辑框中的文本。
SetWindowText:重置编辑框中的文本。


SetWindowBkColor:设置窗口背景颜色。
SetWindowAdditionalData:保存对话框的附加数 据
12
主窗口的建立
if (hMainWnd == HWND_INVALID)
屏幕上
return -1;
ShowWindow(hMainWnd, SW_SHOWNORMAL); //把所创建的窗口显示在
while (GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg);
MiniGUI 是一个图形用户界面支持系统,
通常的GUI 编程概念均适用于MiniGUI 编程, 如窗口和事件驱动编程等。
3
MINIGUI的模式
我们可将 MiniGUI配置编译成三种架构上截
然不同的版本,我们称为运行模式:
MiniGUI-Threads
MiniGUI-Lite
MiniGUI-Standalone
23
系统中窗口的选择
在MiniGUI中主要利用各种窗口和控件进 行界面的显示。在进行项目的开发时,选择 合适的窗口是很有必要的。对于只是用于显 示的窗口界面,推荐使用主窗口界面。对于 有对话框机数据输入输出的见面建议使用对 话框窗口界面。
24
MINIGUI中的控件介绍
在MiniGUI中主要用到的控件有:按钮, 编辑框,静态框,列表框,进度条,菜单按 钮等。我们自己也可以注册所需功能的控件, 可以通过多种控件的组合来获得所需的界面。
typedef struct { DWORD dwStyle; DWORD dwExStyle; extended style int x, y, w, h; position const char* caption; caption HICON hIcon; HMENU hMenu; int controlnr; controls PCTRLDATA controls; array // dialog box style // dialog box // dialog box
22
选择所需的MINIGUI模式
在正常的项目中,如果为单进程的GUI项目,则
建议使用MiniGUI-Threads模式。主要是因为其可以在
应用程序的不同的线程中建立多个窗口,但所有的窗 口在一个进程或者地址空间中运行。这种运行模式非 常适合于大多数传统意义上的嵌入式操作系统,比如 我们使用的Linux操作系统。
//设置主窗口风格
CreateInfo.dwExStyle = WS_EX_NONE; CreateInfo.spCaption = “HelloWorld”; CreateInfo.hMenu = 0;
//设置主窗口的扩展风格 //设置主窗口的标题 //设置主窗口的主菜单
CreateInfo.hCursor = GetSystemCursor(0); //设置主窗口的光标为系统缺省 光标 CreateInfo.hIcon = 0; //设置主窗口的图标,该窗口 1
27
重要的消息类型
MSG_PAINT:需要重绘窗口时触发此消息。 MSG_CLOSE:关闭窗口时出发此消息。 MSG_INITDIALOG:该消息是在 MiniGUI 根 据对 话框模板建立对话框以及控件之后, 发送到对 话框回调函数的。 MSG_KEYDOWN:有按键按下时触发此消息。 MSG_TIMER:当定时器时间到时触发此消息。
相关文档
最新文档