MiniGUI(程序开发)

合集下载

教程系列十--使用mStudio开发MiniGUI应用程序

教程系列十--使用mStudio开发MiniGUI应用程序

天行健,君子以自强不息;地势坤,君子以厚德载物天 嵌 通 途 工 作 室教程系列<十>使用mStudio开发MiniGUI应用程序工作室网址/embedroadBBS/embedroad/bbs金 陵 科 技 学 院信息技术学院天嵌通途工作室教程系列/ EmbedRoad Studio Tutorials Series/embedroad jinwenjie2007@第 2 页 共 11 页天嵌通途工作室是由学生自发组织的半商业性质的团体, 主要由金陵科技学院嵌入式爱好者以及软件工程爱好者组成,使用mStudio开发MiniGUI应用程序mStudio 是飞漫软件推出的面向MiniGUI 开发的一款可视化集成开发环境,基于Eclipse CDT,为开发人员提供所见即所得(WYSIWYG)的界面设计环境,同时,自动生成代码,维护工程框架等。

运行于Windows 版本的mStudio 采用了MinGW 运行环境。

版本与运行环境:FMSoft mStudio 1.0 with MiniGUI-BE V3.0 for Windows 支持操作系统:Windows 2000 / XP / 7操作系统 支持硬件平台:x86一、软件安装1.1 安装C/C++运行环境如果您未安装VS2005的运行环境,请安装vcredist_x86.exe ,也可以在工作室网站上下载:/embedroad/down.asp 。

如果你已经装过VS2005集成开发环境,则这步可以省略。

1.2 安装JRE或者JDK如果您未按照JRE运行环境,请安装Windows版本JRE 。

(jre-6u19-windows-i586.exe)以上两个全部默认路径安装即可。

JRE 的安装目录是:C:\Program Files\Java。

1.3安装mStudio下载网址:/index.php?id=136&L=1。

运行mStudio-1.0-MiniGUI-BE-3.0-MinGW-en.msi ,这个软件免费,一路默认安装即可。

嵌入式Linux开发教程12(MiniGUI图形界面设计)

嵌入式Linux开发教程12(MiniGUI图形界面设计)
第12章 MiniGUI图形界面设计
课程安排
• • • • • • • • •
12.1 Minigui概述 12.2 Minigui的安装和使用 12.3 利用Eclipse编写MiniGUI程序 12.4 MiniGUI的编程基础 12.5 消息循环和窗口过程 12.6 对话框和控件编程 12.7 图形设备接口 12.8 实例--MiniQQ界面设计 12.9 小结
1-2
12.1 MiniGUI概述

MiniGUI最初是为了满足一个工业控制系统的需求而设计和开发 的。这个工业控制系统是清华大学为一台数控机床设计的计算机 数控系统(CNC)。在比较了DOS、Windows 98、Windows NT、Linux等系统之后,该项目组决定选择RT-Linux作为实时 操作系统,以便满足2ms甚至更高的实时性。但是图形用户界面 是一个问题,因为X Window不适合于实时控制系统,并且当时 X Window系统的本地化也不尽人意。因此,项目组决定自己开 发一套图形用户界面支持系统。
1-5
12.2 MiniGUI的安装和使用

现有的资料主要介绍了MiniGUI在RedHat9.0下的安装和配置, 而对其他Linux发行版下应用的资料还很少。本章将介绍 MiniGUI在Ubuntu下的安装和配置方法,以及如何使用eclipse 进行MiniGUI的嵌入式开发。

1-6
12.2.1 安装MiniGUI库
• •
1-11
12.2.6 交叉编译例程

• • • • •
以交叉编译mg-sample-3.0为例,所需的命令如下:
$tar zxvf mg-samples-3.0.12.tar.gz $cd mg-samples-3.0.12 $./configure $export PATH=”/usr/local/arm/3.4.1/bin”:$PATH $make CC=arm-linux-gcc

MiniGUI源码分析

MiniGUI源码分析

MiniGUI源码分析上一篇:MiniGUI源码分析--hellowworld(1) :MiniGUIMain中有什么奥秘上一篇讲到MiniGUI程序的启动过程。

当MiniGUI完成了初始化之后,就可以创建一个主窗口。

(主窗口是唯一可以作为根窗口的窗口对象。

这可能是MiniGUI在当初设计时为了方便而设立的。

但是个人认为,这实在是一个蹩脚的设计。

应该将主窗口与控件的接口完全统一了,就像windows API那样。

)创建主窗口函数,是CreateMainWindow ,这是一个内联函数:[cpp]view plaincopy1.static inline HWND GUIAPI CreateMainWindow (PMAINW INCREATE pCreateInfo)2.{3.return CreateMainWindowEx (pCreateInfo, NULL, NULL, N ULL, NULL);4.}而CreateMainWindowEx的定义如下:[cpp]view plaincopy1.MG_EXPORT HWND GUIAPI CreateMainWindowEx (PMAI NWINCREATE pCreateInfo,2.const char* werdr_name, const WINDOW_ELEMENT_ATTR * we_attrs,3.const char* window_name, const char* layer_name);该函数后面的参数都是和LF渲染器有关的,这一部分会在以后的章节专门叙述。

最后一个参数可以忽略。

最重要的参数就是PMAINWINCREATE,它描述了一个窗口的主要信息,它的定义是:[cpp]view plaincopy1./**2.* Structure defines a main window.3.*/4.typedef struct _MAINWINCREATE5.{6./** The style of the main window */7.DWORD dwStyle;8.9./** The extended style of the main window */10.DWORD dwExStyle;11.12./** The caption of the main window */13.const char* spCaption;14.15./** The handle to the menu of the main window */16.HMENU hMenu;17.18./** The handle to the cursor of the main window */19.HCURSOR hCursor;20.21./** The handle to the icon of the main window */22.HICON hIcon;23.24./** The hosting main window */25.HWND hHosting;26.27./** The window callback procedure */28.int (*MainWindowProc)(HWND, int, WPARAM, LPARA M);29.30./** The position of the main window in the screen coo rdinates */31.int lx, ty, rx, by;32.33./** The pixel value of background color of the main wi ndow */34.int iBkColor;35.36./** The first private data associated with the main win dow */37.DWORD dwAddData;38.39./** Reserved, do not use */40.DWORD dwReserved;41.}MAINWINCREATE;42.typedef MAINWINCREATE* PMAINWINCREATE;其中最重要的就是MainWindowProc了,这是窗口的过程回调。

实验八:MiniGUI应用程序设计实验

实验八:MiniGUI应用程序设计实验

实验八 MiniGUI应用程序设计实验一、实验目的1.了解MiniGUI的基本结构。

2.练习MiniGUI的系统配置和编译安装。

3.交叉编译、在目标板上运行MiniGUI。

4.分析并了解 MiniGUI应用程序hello world。

5.在目标板上运行hello world程序。

二、实验设备和仪器1.计算机2.FS2410P教学实验平台三、实验内容及要求1.MiniGUI的系统配置和编译安装2.分析并了解 MiniGUI应用程序hello world。

3.交叉编译MiniGUI应用程序hello world。

4.在开发板上运行hello world程序。

四、实验原理及步骤1. 实验原理MiniGUI是一种面向嵌入式系统和实时系统的图形用户界面支持系统。

它主要运行于Linux控制台,实际可以运行在任何一种具有线程支持的POSIX兼容系统上。

MiniGUI同时也是国内最早出现的几个自由软件项目之一。

与Microwindows相比,MiniGUI和MicroWindows均为自由软件,只是前者遵循LGPL条款,后者遵循MPL条款。

这两个系统的技术路线也有所不同。

MiniGUI的策略是首先建立在比较成熟的图形引擎之上,比如SVGALib和LibGGI,开发的重点在于窗口系统如图形接口; MicroWindows目前的开发重点则在底层的图形引擎,窗口系统和图形接口方面的功能还比较欠缺。

举个例子来说,MiniGUI 有一套用来支持多字符集和多编码的函数接口,可以支持各种常见的字符集,包括GB、Big5、Unicode等,而MicroWindows在多字符集的支持上尚没有统一接口。

-MiniGUI最初是为了满足一个工业控制系统的需求而设计和开发的。

这个工业控制系统是清华大学为一台数控机床设计的计算机数控系统(CNC)。

在比较了DOS、Windows 98、Windows NT、Linux等系统之后,该项目组决定选择RT-Linux作为实时操作系统,以便满足2ms甚至更高的实时性。

MiniGUI入门

MiniGUI入门
一、 minigui安装所需的资源 minigui安装所需的资源包括: minigui-res-1.6.10.tar.gz:
基本字体、图标、位图和鼠标光标
libminigui-1.6.10.tar.gz:库 mg-samples-2.0.4:示例程序 qvfb-1.0.tar.gz

二、具体安装步骤 1、 首先把需要的文件拷贝到要安装minigui的

配置好后输入“make”命令编译库文件,如下图所示: (此过程需要一段时间)

编译好库文件后输入“make install”命令,安装库文 件,如下图所示:

默认情况下,minigui的函数库将安装在 “/usr/local/lib”目录中,应确保该目录已经列在 “/etc/ld.so.conf”文件中。修改“/etc/ld.so.conf”文 件,命令为: vi /etc/ld.so.conf,如下图所示:
common.h 包括MiniGUI常用的宏以及数据类型的定 义。 minigui.h 包含了全局的和通用的接口函数以及某些 杂项函数的定义。 gdi.h 包含了 MiniGUI 绘图函数的接口定义。 window.h 包含了窗口有关的宏、数据类型、数据结
构定义以及函数接口声明。
Main函数

int MiniGUIMain (int argc, const char* argv[]) MiniGUI主函数名,相当于C语言的main函数 argc:命令行参数个数 argv:参数字符串数组指针

while (GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); }

MiniGUI

MiniGUI

消息的队列(2)
系统向应用程序消息队列投递消息是通过填充一个MSG 消息结构,再把它复制到消息队列中,MSG结构中的信 息如上所述,包括接收消息的句柄、消息标识、两个消息 参数以及消息时间。 应用程序可以通过GetMessage函数从它的消息队列中取 出一条消息,该函数用所取出消息的信息填充一个MSG 消息结构。应用程序还可以调用HavePendingMessage 函数来检查消息队列中是否有消息而不取出消息。 int GUIAPI GetMessage(PMSG pMsg,HWND hWnd); BOOL GUIAPI HavePendingMessage(HWND hMainWnd); 非排队消息不通过消息队列而直接发送到目标窗口的窗口 过程。系统一般通过发送非排队消息通知窗口完成一些需 要立即处理的事件,比如MSG_ERASEBKGND消息。
MiniGUI
MiniGUI的工作流程和体系架构的分析 基于GUI的应用程序设计 MiniGUI在嵌入式Linux下的移植
MiniGUI的工作流程和体系架构的分析
的概念(1) MiniGUI的历史 MiniGUI的体系架构 MiniGUI的事件驱动和消息机制 MiniGUI的三种运行模式
GUI概念(2)
Gui Framework提供给应用的接口主要包括窗口的建立, 事件的注册,还会提供更加底层的接口让应用创建自己特 色的窗口。Framework内部实现主要分为四块: 1. 图形引擎 2. 事件系统 3. 窗口系统 4. 用户接口层 图形引擎提供最底层的图形函数,如点、线、矩形、椭圆 形、图片等,及最底层的图形区域的计算,颜色的计算等。 事件系统提供对最原始的硬件源事件的管理,如鼠标的点 击,键盘的输入,触摸屏的操作等,将这些事件发送到指 定的模块,以及提供内部自定义的事件管理和转发。 窗口系统实际上是对图形引擎和事件系统的封装,给本来 屏幕上每一块的区域都添加了”生命“,使得这些区域可 以响应事件,显示特定的图像。 用户接口层主要是为应用程序服务的,让应用程序不关心 图形引擎和事件系统的情况下来建立自己的窗口。

第05章 MiniGUI菜单编程

第05章 MiniGUI菜单编程
HMENU hmnu; MENUITEMINFO mii; hmnu = CreateMenu(); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_ABOUT_THIS; (DWORD)"文件 文件..."; mii.typedata= (DWORD)"文件..."; InsertMenuItem(hmnu, 0, TRUE, &mii);
int GUIAPI GetMenuItemInfo (HMENU hmnu, int item, BOOL flag, PMENUITEMINFO pmii); int GUIAPI SetMenuItemInfo (HMENU hmnu, int item, BOOL flag, PMENUITEMINFO pmii);
哈尔滨工业大学华德应用技术学院—计算机应用技术系— 哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
5.1 菜单的创建和操作
5.1.3 操作菜单项属性
应用程序可以通过 GetMenuItemInfo 函数获得 感兴趣的菜单项属性, 感兴趣的菜单项属性,也可以通过 SetMenuItemInfo 函数设置 感兴趣的菜单项属性。原型如下: 感兴趣的菜单项属性。原型如下:
哈尔滨工业大学华德应用技术学院—计算机应用技术系— 哈尔滨工业大学华德应用技术学院—计算机应用技术系—嵌入式系统方向
5.1 菜单的创建和操作
如果这个菜单项有子菜单, 如果这个菜单项有子菜单,则可通过 设置菜单项的 hsubmenu 变量来指 定菜单项的子菜单句柄( 定菜单项的子菜单句柄(由函数 来创建子菜单句柄) CreatePopupMenu 来创建子菜单句柄)

minigui代码分析

minigui代码分析

minigui代码分析目录一、minigui运行模式 (1)1、线程模式:MiniGui-Threads (1)2、进程模式:MiniGui-Processes (1)3、独立应用模式:MiniGui-Standalone (2)二、数据结构 (2)1、CreateMainWindow函数参数:PMAINWINCREATE pCreateInfo (2)2、MAINWIN结构体:主窗口的详细信息由该结构体给出 (2)3、MSGQUEUE消息队列 (4)三、CreateMainWindow函数流程 (4)1、判断传入的参数pCreateInfo是否为空 (4)2、为PMAINWIN类型的pWin分配内存空间,并判断pWin是否为空 (4)3、是否定义_LITE_VERSION: (4)4、设置pWin的成员: (4)5、SendMessage ((HWND)pWin, MSG_NCCREATE, 0, (LPARAM)pCreateInfo) (6)6、SendMessage ((HWND)pWin, MSG_SIZECHANGING,(WPARAM)&pCreateInfo->lx,(LPARAM)&pWin->left); (7)7、SendMessage ((HWND)pWin, MSG_CHANGESIZE, (WPARAM)&pWin->left, 0) (7)8、SendMessage (HWND_DESKTOP, MSG_ADDNEWMAINWIN, (WPARAM) pWin,(LPARAM) pWin->pZOrderNode); (7)9、SendMessage ((HWND)pWin, MSG_CREATE, 0, (LPARAM)pCreateInfo) (8)四、ShowWindow函数流程 (8)1、MG_CHECK_RET (MG_IS_NORMAL_WINDOW(hWnd), FALSE) (8)2、根据窗口类型和窗口的显示类型对窗口的显示状态进行调整 (8)如果hWnd指示的窗口是主窗口: (9)如果hWnd指示的窗口是控件窗口: (9)3、根据iCmdShow等信息确定当前窗口是否失去输入焦点 (10)4、向消息队列发送消息MSG_SHOWWINDOW根据iCmdShow 指示当前窗口的显示状态 (10)一、minigui运行模式1、线程模式:MiniGui-Threads定义:_MGRM_THREADS运行在MiniGui-Threads上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或地址空间中运行,传统意义上的嵌入式操作系统。

  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:鼠标点击左键时出 发此消息。
28
主要的API接口函数

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


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


SetWindowBkColor:设置窗口背景颜色。
SetWindowAdditionalData:保存对话框的附加数 据
// control class // control style // control position in
// control identifier // control caption // additional data // control extended style
14
对话框的建立
//设置主窗口风格
CreateInfo.dwExStyle = WS_EX_NONE; CreateInfo.spCaption = “HelloWorld”; CreateInfo.hMenu = 0;
//设置主窗口的扩展风格 //设置主窗口的标题 //设置主窗口的主菜单
CreateInfo.hCursor = GetSystemCursor(0); //设置主窗口的光标为系统缺省 光标 CreateInfo.hIcon = 0; //设置主窗口的图标,该窗口 1
5
MINIGUI版本 我们现在使用的为 GPL 发布的 MiniGUI V1.3.3 版本。现在我们使用的
案例都是基于Threads模式之下。
6
事件驱动
程序的流程不再是只有一个入口和若干个 出口的串行执行线路;相反,程序会一直处于 一个循环状态,在这个循环当中,程序不断从 外部或内部获取某些事件,比如用户的按键或 者鼠标的移动,然后根据这些事件作出某种响 应,并完成一定的功能,这个循环直到程序接 收到某个消息为止。
的控件集合,它们是人机交互的主要元素。
MiniGUI 提供了常用的预定义控件类,
包括按钮(包单选钮、复选钮)、静态框、 列表框、进部发生某种事件时,会通过通知消息
通知其父窗口。其类型一般有:MSG_CHAR,
MSG_COMMAND,MSG_CLOSE,
7
窗口的概念
窗口是屏幕上的一个矩形区域。在传统的 窗口系统模型中,应用程序的可视部分由一个 或多个窗口构成。每一个窗口代表屏幕上的一 块绘制区域,窗口系统控制该绘制区域到实际 屏幕的映射,也就是控制窗口的位置、大小以 及可见区域
8
9
MINIGUI 的窗口类型
主窗口 对话框窗口 控件窗口(子窗口)
主窗口的建立
CreateInfo.MainWindowProc = HelloWinProc;//设置主窗口的窗口过程函数
CreateInfo.lx = 0;
CreateInfo.ty = 0; CreateInfo.rx = 320;
//窗口坐标
CreateInfo.by = 240;
CreateInfo.iBkColor = COLOR_lightwhite;
23
系统中窗口的选择
在MiniGUI中主要利用各种窗口和控件进 行界面的显示。在进行项目的开发时,选择 合适的窗口是很有必要的。对于只是用于显 示的窗口界面,推荐使用主窗口界面。对于 有对话框机数据输入输出的见面建议使用对 话框窗口界面。
24
MINIGUI中的控件介绍
在MiniGUI中主要用到的控件有:按钮, 编辑框,静态框,列表框,进度条,菜单按 钮等。我们自己也可以注册所需功能的控件, 可以通过多种控件的组合来获得所需的界面。
22
选择所需的MINIGUI模式
在正常的项目中,如果为单进程的GUI项目,则
建议使用MiniGUI-Threads模式。主要是因为其可以在
应用程序的不同的线程中建立多个窗口,但所有的窗 口在一个进程或者地址空间中运行。这种运行模式非 常适合于大多数传统意义上的嵌入式操作系统,比如 我们使用的Linux操作系统。
20
配置编译环境
在PC上配置MiniGUI的编译环境
配置MiniGUI的交叉编译环境
在PC上配置SQLite数据库
配置SQLite的交叉编译环境
21
系统需求分析
通过对系统的分析来决定采用MiniGUI的
具体实现方式。通过PC模拟环境来进行项目的 初始开发,通过修改输入引擎来实现在目标板
上的键盘和鼠标操作。

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

27
重要的消息类型
MSG_PAINT:需要重绘窗口时触发此消息。 MSG_CLOSE:关闭窗口时出发此消息。 MSG_INITDIALOG:该消息是在 MiniGUI 根 据对 话框模板建立对话框以及控件之后, 发送到对 话框回调函数的。 MSG_KEYDOWN:有按键按下时触发此消息。 MSG_TIMER:当定时器时间到时触发此消息。
MINIGUI简介
MiniGUI是由北京飞漫软件技术有限公司创办的 开源Linux图形用户界面支持系统,经过近些年的发
展,MiniGUI已经发展成为比较成熟的性能优良的、
功能丰富的跨操作系统的嵌入式图形界面支持系统。
“小”是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); }
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
MiniGUI 是一个图形用户界面支持系统,
通常的GUI 编程概念均适用于MiniGUI 编程, 如窗口和事件驱动编程等。
3
MINIGUI的模式
我们可将 MiniGUI配置编译成三种架构上截
然不同的版本,我们称为运行模式:
MiniGUI-Threads
MiniGUI-Lite
MiniGUI-Standalone
色 //设置主窗口的背景色为白
CreateInfo.dwAddData = 0;

//设置主窗口的附加数据
CreateInfo.hHosting = HWND_DESKTOP; //设置主窗口的托管窗口为桌面窗
hMainWnd = CreateMainWindow (&CreateInfo);
// CreateMainWindow 函数根据MAINWINCREATE 结构类型的参数中指定的窗口 过程创建主窗口。
4
MINIGUI-THREADS
运行在 MiniGUI-Threads 上的程序可以在 不同的线程中建立多个窗口,但所有的窗口 在一个进程或者地址空间中运行。这种运行 模式非常适合于大多数传统意义上的嵌入式 操作系统,比如 eCos、pSOS 、 uC/OS-II 等等。当然,在 Linux 和 uClinux 上, MiniGUI 也能以 MiniGUI-Threads 的模式运 行。
10
主窗口的建立
每个MiniGUI 应用程序的初始界面一般都是一个主窗口, 可以通过调用 CreateMainWindow 函数来创建一个主窗口,其参数是一个指向 MAINWINCREATE 结构的指针。 MSG Msg; HWND hMainWnd; MAINWINCREATE CreateInfo; CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
MainWindowThreadCleanup (hMainWnd);//程序最后调用
MainWindowThread Cleanup 清除主窗口所使用的消息队列等系统资源并最终由MiniGUIMain 返回
13
对话框的建立
对话框本质上就是主窗口,应用程序一般通过对 话框提示用户进行输入操作。
相关文档
最新文档