Commit 5f1e2c68 authored by Vincent Wei's avatar Vincent Wei

user manual

parent 9658b608
Pipeline #78 canceled with stages
# MiniGUI Docs
# MiniGUI Documents
We maintains the documents for MiniGUI Core and MiniGUI Components in this project.
## Contents
- [MiniGUI User Manual](um/
- [MiniGUI Programming Guide](pg/
## Current Status
We are summarizing and rearranging them from various historical documents:
- Convert the format from TWiki, PDF, or DOC to Markdown.
- Adjust the description according to the latest MiniGUI version.
- Fix spelling or grammar errors.
- Use the latest screenshots.
- Cleanup the document format.
This diff is collapsed.
1 Introduction to MiniGUI
1.1 A Brief Introduction
MiniGUI, developed by Beijing FMSoft Technologies Co. Ltd.[^1],
originates from a world famous free software project, which is initiated
by Wei Yongming. MiniGUI aims to provide a fast, stable and lightweight
graphics user interface (GUI) support system for real-time embedded
systems. MiniGUI is “a cross-operating-system graphics user interface
support system for embedded devices”, and “an embedded graphics
middleware”. After over nine years of development since the end of 1998,
MiniGUI has become a stable and reliable one for widespread application
in a variety of products and programs; it can run on Linux/uClinux,
eCos, VxWorks, pSOS, ThreadX, Nucleus, OSE, and even uC/OS-II, also on
the Win32 platform.
MiniGUI defines a set of lightweight windowing and graphics interfaces
for applications. Using these interfaces, an application can create
multiple main windows and controls in them, such as buttons and edit
boxes. MiniGUI provides powerful graphics functions for developers,
helping to display all kinds of bitmaps and draw complicated graphics in
However, the versions that you download freely from our site would be
only used to develop GPL applications. If you are using MiniGUI for
developing commercial applications or other software that are not
covered by the terms listed in GPL, you should have a commercial license
for MiniGUI from Feynman Software.
Currently, MiniGUI V3.0.x provides support for multi-process-based
operating systems, like Linux; and provides support for traditional
real-time embedded operating systems, which are multi-thread- or
multi-task- based. The former provides support for the runtime modes
MiniGUI-Processes and MiniGUI-Threads, and the later provides support
for the runtime mode MiniGUI-Threads.
The official release of MiniGUI and its components source code package,
sample package, etc., can be downloaded from the MiniGUI official
In addition, the complete source code of MiniGUI and its components is
now hosted on GitHub, which contains the source code repository for the
under development (yet to be released) MiniGUI and its components[^3].
MiniGUI 3.0 is divided into a series of products according to the
operating systems, please see Table 1.1. Table 1.1 also illustrates the
runtime mode(s) provided by the products.
Table 1.1 MiniGUI os and runtime modes supported
**Products and versions** **Runtime mode(s) supported**
---------------------------- -------------------------------
MiniGUI 3.0.x for Linux MiniGUI-Processes
MiniGUI 3.0.x for uClinux MiniGUI-Threads
MiniGUI 3.0.x for VxWorks MiniGUI-Threads
MiniGUI 3.0.x for ThreadX MiniGUI-Threads
MiniGUI 3.0.x for uC/OS-II MiniGUI-Threads
Except for the difference of runtime modes supported, these two versions
have the almost same features.
For the detailed description about runtime modes and MiniGUI features,
please refer to *MiniGUI Technology White paper for V3.0* and *Datasheet
for MiniGUI V3.0*.
1.2 Documents for MiniGUI
Except for this manual, Feynman Software have provided the following
documents available through the official website of MiniGUI download or
*MiniGUI Programming Guide* Version 3.0-5. This guide describes in
detail the foundation knowledge of MiniGUI on developing embedded
application software, technical documents and development skills, the
content of which involves various aspects of MiniGUI programming,
include message looping, window procedure, dialog box, controls,
graphics interfaces, and so on.
Datasheet for MiniGUI V3.0.x. MiniGUI feature table.
*MiniGUI API Reference Manual* for MiniGUI Version 3.0. This manual
describes the APIs of MiniGUI V3.0.x (MiniGUI-Processes runtime mode) in
*MiniGUI Technology White paper* *for V3.0.*
MiniGUI developers also maintain a wiki[^6] site to maintain the latest
version of the above documents, please visit.
1.3 MiniGUI Source Code and Samples
In the download area of MiniGUI official website, the following MiniGUI
source code package and sample package are listed:
MiniGUI Core Lib: libminigui-3.0.x-<os>.tar.gz, MiniGUI V3.0.x
library source code for <os> (such as linux) operating system.
MiniGUI Resources: minigui-res-3.0.x.tar.gz, the resources used by
MiniGUI, including basic fonts, icons, bitmaps and mouse cursors.
MiniGUI Samples: mg-samples-3.0.x.tar.gz, a sample program of "MiniGUI
Programming Guide".
Also provide the following source code package:
MiniGUI component.
Tools and dependencies, virtual buffer program GVFB and freetype,
libjpeg, libpng, zlib and other libraries.
1.4 Optional Components of MiniGUI
Except for the MiniGUI product, Feynman Software also provides some
MiniGUI component products and other MiniGUI applications such as
mSpider. Figure 1.1 shows the product line of Feynman Software.
Figure 1.1 Product line of Feynman Software
mGUtils provides users with several functional templates that allow
users to write code for commonly used functions.
mGPlus component is an extension and enhancement of the MiniGUI graphics
rendering interface. It mainly provides support for 2D vector graphics
and advanced graphics algorithms such as paths, gradient fills and color
mGEff provides an animation framework for MiniGUI applications. mGEff
provides a large number of stable and efficient effects for developers
to quickly flip, enlarge, scroll, pages and other commonly used
animation has facilitated. In addition, mGEff can be combined with
MiniGUI to develop an animation interface for the main window animation
based on double buffering.
mGNCS - In the development of miniStudio, in order to the WYSWYG design
of visual graphical interface, Feynman Software has developed a new set
of controls based on the existing interface of MiniGUI. The new control
set introduced by miniStudio is based on the original MiniGUI control
set. It is distinguished from MiniGUI Intrinsic Control Set and is
called "New Control Set". As a new MiniGUI Component mGNCS is released.
mGNCS is mainly used with miniStudio. It can also be directly used as a
component of MiniGUI 3.0 and can be mixed with the control of the
centralized control. We strongly recommend that the new MiniGUI
application be developed using mGNCS instead of the MiniGUI built-in
mGi provides input method framework for applications based on MiniGUI.
mGi now provides the framework for soft-keyboard and hand writing input
methods. mGi also provides an IME container for user to add self-defined
IME to it. On the other hand, you can use self-defined keyboard bitmap
for the soft-keyboard and add your self-defined translation method to
mGp provides a printing engine for applications based on MiniGUI so that
applications using mGp will have the printing function. At present, mGp
provides printing support for Epson, HP and some other printers. Note
that mGp only provides the support for Linux operating system.
mG3d is a 3D rendering library for applications based on MiniGUI. By
using this library, you can render 3D objects in your applications.
Except for these three component products above, Feynman Software also
provides MiniGUI SDK for Win32. By using MiniGUI SDK for Win32, you can
run MiniGUI and its applications on Win32 platform. You can even write
and debug MiniGUI applications by using Visual Studio IDE tool. However,
there are some limitations:
MiniGUI SDK for Win32 only provides the support for the runtime
When you use MiniGUI SDK for Win32 to develop MiniGUI application,
please do not invoke any function specific to Win32, because the
function may not exist on your target operating system.
For the complete Feynman products, please visit the following web page:
1.5 miniStudio development tools
MiniStudio is an integrated development environment for MiniGUI,
providing users with WYSWYG interface design, automatic generation and
maintenance of MiniGUI program framework, code editing, compiling,
running and debugging based on Eclipse, speeding up the development of
MiniGUI applications and reducing Use the threshold of MiniGUI. When
using MiniGUI, users can focus more on the specific applications related
to the business and greatly reduce the R & D costs of MiniGUI related
applications and provide better products.
miniStudio is a non-open source commercial software product developed by
Feynman Software. It provides two versions of Windows and Ubuntu Linux.
You can visit MiniGUI's official website to download the product for
evaluation or trial license.
1.6 About this Manual
This manual mainly describes the compile-time configuration options and
the runtime configuration options of MiniGUI.
This diff is collapsed.
This diff is collapsed.
4 Developing MiniGUI Application in Windows
Feynman provides two methods for developer, which is accustomed to
develop application in Window platform.
Using the package of MiniGUI for Win32. It is pre-compiled standard
development package in Win32. It contains wvfb, MiniGUI function library
(libminigui and libmgext) and header files.
Using MiniGUI SDK for Win32. This is an optional component in MiniGUI.
It contains the whole source codes and provides users the convenience
for customizing the package of MiniGUI for Win32.
By using the package of MiniGUI for Win32 or the component product of
MiniGUI SDK for Win32, developer can compile and debug MiniGUI
application in Windows.
This chapter describes how to use the package of MiniGUI for Win32. User
can contact Feynman to purchase the component product of MiniGUI SDK for
To develop MiniGUI application in Windows, you must install MS Visual
Studio 98. First, you decompress arbitrary directory in windows.
Secondly you open the helloworld project file in VC according to README.
Figure 4.1 shows it.
After compiling successfully, you should run wvfb first and run
helloworld. Note that you need copy **helloworld.ext** to directory dll.
Fig 4.2 shows running result.
Fig 4.1 open MiniGUI helloworld project
Fig 4.2 Compiling and Running MiniGUI Application in Windows
Refer to above helloworld, you can create, develop and compile new
MiniGUI application in VC. But give your attention to the following:
Because the package of MiniGUI for Win32 is pre-compiled library, the
function, compiling configuration options, and running configuration
options are fixed, and only support MiniGUI-Threads runtime mode.
Using the package of MiniGUI for Win32 to develop applications, please
don’t call Windows special API, which isn’t supported possibility by
target OS.
MiniGUI User Manual
Version 3.0 (revised edition 5)
For MiniGUI Version 3.0.
Beijing FMSoft Technologies Co. Ltd.
Feb, 2018
Copyright Claim
MiniGUI User Manual Version 3.0 (revised edition 5) for MiniGUI Ver
Copyright © 2003\~2018, Beijing FMSoft Technologies Co., Ltd.\
All rights reserved.
By whatever means you get the entire or partial text or photograph data
in this guide, no matter mechanical or electronic, you are only
authorized by Beijing FMSoft Technologies Co., Ltd. the reading right.
Any format conversion, redistribution, dissemination, and copying its
entire or partial content, or using text or photograph there in for
commercial purpose without written permission will be regarded as
tortuous, and may result in severe civil or criminal punishment.
Copyright Claim 1
1 Introduction to MiniGUI 1
1.1 A Brief Introduction 1
1.2 Documents for MiniGUI 2
1.3 MiniGUI Source Code and Samples 2
1.4 Optional Components of MiniGUI 3
1.5 miniStudio development tools 4
1.6 About this Manual 5
2 Configuring, Compiling, and Installing MiniGUI 6
2.1 Customization of Compiling Configuration Options 6
2.1.1 Configuration in GNU Development Environment by Configure Script 7
2.1.2 Configuration under Non-GNU environment 11
2.2 Detailed Description on Compiling, Configuration Options of MiniGUI
2.2.1 Operating System Options and Macros 11
2.2.2 Target Board Related Options and Macros 12
2.2.3 Runtime Mode Related Options and Macros 13
2.2.4 Graphics Engine Related Options and Macros 14
2.2.5 Input Engine Related Options and Macros 16
2.2.6 Keyboard Layout Related Options and Macros 17
2.2.7 System Global Configuration Options and Macros 18
2.2.8 Character Set and Font Related Options and Macros 19
2.2.9 Image File Format Related Options and Macros 23
2.2.10 Appearance Style Related Options and Macros 24
2.2.11 Control Related Options and Macros 24
2.2.12 Other Options and Macros 25
2.3 Minimum Configuration Options 26
2.3.1 Using GNU Configure Script 26
2.3.2 Corresponding mgconfig.h 27
2.4 Compiling and Installing MiniGUI 37
2.4.1 compile and install the dependent library 37
2.4.2 compile and install the virtual framebuffer program 38
2.4.3 Compiling and Installing MiniGUI in the GNU Development
Environment 39
2.4.4 Install MiniGUI Resource Package 40
2.4.5 compile and run MiniGUI sample 40
2.5 Compiling and Installing MiniGUI in Non-GNU Development Environment
2.6 Use Ubuntu on Windows to configure and compile MiniGUI 43
3 MiniGUI runtime configuration options 44
3.1 Configuration File 45
3.1.1 Section system 45
3.1.2 Section fbcon 46
3.1.3 Section qvfb 46
3.1.4 Section pc\_xvfb 46
3.1.5 Section rawbitmapfonts, varbitmapfonts, qpf, truetypefonts, and
type1fonts 47
3.1.5 Section systemfont 48
3.1.6 Section mouse 49
3.1.7 Section event 49
3.1.8 Section classic 50
3.1.9 Default Configuration File 52
3.2 Incore Configuration Options 60
3.2.1 Structure ETCSETCTION 60
3.2.2 ETC\_S Structure 62
3.2.3 Listing of mgetc.c 62
3.3 Sample of Configuration 76
3.3.1 Runtime Configuration when only Support for ISO8859-1 Charset 76
3.3.2 Specifying Different Graphic Engine and Input Engine 76
4 Developing MiniGUI Application in Windows 78
Appendix A Frequent Ask Questions (FAQs) 80
A.1 Questions Relevant to GPL Versions 80
A.2 Questions Relevant to MiniGUI Application Fields 80
A.3 Questions Relevant to Portability 81
A.4 Questions Relevant to Compilation 81
A.5 Questions Relevant to Input Engines 82
A.6 Runtime Questions 83
A.7 Common Error Messages 83
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment