MiniGUI

MiniGUI 是一款面向嵌入式系統的高階視窗系統（Windowing System）和圖形使用者介面（Graphical User Interface，GUI）支援系統，由魏永明先生於 1998 年底開始開發。2002 年，魏永明先生建立北京飛漫軟體技術有限公司，為 MiniGUI 提供商業技術支援，同時也繼續提供開源版本，飛漫軟體是中國地區為開源社群貢獻程式碼最多的軟體企業。最後一個採用 GPL 授權的 MiniGUI 版本是 1.6.10，從 MiniGUI 2.0.4 開始 MiniGUI 被重寫並增加商業授權。

經過十幾年的發展， MiniGUI 已經支援 Linux/uClinux、eCos、 uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等作業系統和數十種 SoC 晶片，已驗證的硬體平臺包括 ARM-based SoCs 、MIPS based SoCs 、IA-based SoCs 、PowerPC、M68K (DragonBall /ColdFire)、Intel x86 等，廣泛應用於通訊、醫療、工控、電力、機頂盒、多媒體終端等領域。

使用 MiniGUI 成功開發產品的企業有華為、中興通訊 等。這些使用者廣泛分部在中國大陸、臺灣、新加坡、韓國、美國、德國、義大利、印度、以色列等國家和地區。

在 MiniGUI 的基礎上，飛漫軟體研發了 mDolphin (基於開源的瀏覽器核心 WebKit 的嵌入式瀏覽器)、mPeer (為使用 Java 技術的嵌入式裝置提供高效的 J2SE AWT/Swing 實現支援)，並且開發了基於 Eclipse CDT 的視覺化整合開發環境，為開發人員提供所見即所得 (WYSIWYG) 的介面設計環境。

2010 年，飛漫軟體把最新版的 MiniGUI、mDolphin、mPeer、mStudio 等系統整合在一起，推出了合璧作業系統 (HybridOS) 解決方案。

截止 2010 年 9 月，MiniGUI 的最新版本是 3.0.10， MiniGUI 將作為合璧作業系統 (HybridOS) 的一個組成部分而不斷演進。

特點優勢

MiniGUI 為嵌入式 Linux 系統提供了完整的圖形系統支援，是全球針對嵌入式 Linux 僅有的兩個商用嵌入式 GUI 系統之一。MiniGUI 為嵌入式 Linux 系統提供了完整的多程序支援；可以 MiniGUI-Processes、MiniGUI-Threads 或者 MiniGUI-Standalone 三種執行模式執行。

MiniGUI 的主要技術特性描述如下：

硬體適配性：
可運行於各種含有 MMU (記憶體管理單元) 的 32 位處理器架構之上，如 ix386、ARM、MIPS、PowerPC 等。
支援低端顯示裝置 (比如單色 LCD) 和高階顯示裝置 (8 位色及以上顯示裝置)。透過 MiniGUI 的圖形抽象層及圖形引擎技術，還可以支援特殊的顯示裝置，比如 YUV 顯示裝置。對顯示裝置解析度無最大和最小限制。
副屏支援。當系統中有多個影片裝置時，可將一個作為 MiniGUI 的主屏，實現完整的多視窗系統；而其它裝置作為副屏，在其上透過 MiniGUI 的圖形介面來實現文字渲染、圖形顯示等功能。
可支援各種輸入裝置，如 PC 鍵盤、PC 滑鼠、小鍵盤 (Keypad)、觸控式螢幕、遙控器等等。
多種鍵盤佈局的支援。MiniGUI 除支援常見的美式 PC 鍵盤佈局之外，還支援法語、德語等西歐語種的鍵 盤佈局。
資源消耗:
MiniGUI 的靜態儲存隨配置選項的不同而不同，最少需佔用 1MB 靜態儲存空間。
MiniGUI 啟動後，初始佔用 1MB 動態儲存空間。建議系統記憶體為 8MB 以上。
作業系統適配性:
支援 Linux 作業系統 (非 uClinux 作業系統)，可以 MiniGUI-Processes、MiniGUI-Threads 或者 MiniGUI-Standalone 三種執行模式執行。
內建資源支援。可以將 MiniGUI 所使用的資源，諸如點陣圖、圖示和字型等編譯到函式庫中，該特性可提高 MiniGUI 的初始化速度，並且非常適合無檔案系統支援的即時嵌入式作業系統。
針對嵌入式系統的特殊支援，包括一般性的 I/O 流操作，位元組序相關函式等。
視窗子系統特性：
完備的多視窗機制和訊息傳遞機制。使用 MiniGUI-Threads 執行模式時，可在不同執行緒中建立主視窗，並支援執行緒間的訊息傳遞；使用 MiniGUI-Processes 執行模式時，支援完整的多程序視窗系統。
對話方塊和訊息框支援。
提供常用的控制元件類，包括靜態文字框、按鈕、單行和多行編輯框、列表框、組合框、選單按鈕、進度條、滑塊、屬性頁、工具欄、樹型控制元件、月曆控制元件、旋鈕控制元件、酷工具欄、網格控制元件、動畫控制元件等。
其它 GUI 元素，包括選單、加速鍵、插入符、定時器等。
圖形子系統特性：
提供有增強 GDI 函式，包括光柵操作、複雜區域處理、橢圓、圓弧、多邊形以及區域填充等函式。在提供有兼容於 C99 規範的數學庫平臺上，還提供有高階二維繪圖函式，可設定線寬、線型以及填充模式等。透過 MiniGUI 的圖形抽象層及圖形引擎技術，也可以讓上述高階 GDI 介面在低端顯示屏上實現。
各種流行影像檔案的支援，包括 Windows BMP、GIF、JPEG、PNG 等 (JPEG 及 PNG 的支援透過 libjpeg 及 libpng 函式庫提供)。
Windows 的資原始檔支援，如點陣圖、圖示、游標等。
多字元集和多字型支援，目前支援 ISO8859-1～ISO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KR、UNICODE (UTF-8、UTF-16 編碼) 等字元集，支援等寬點陣字型、變寬點陣字型、Qt/Embedded 使用的嵌入式字型 QPF、TrueType 向量字型 (對 TrueType 的支援透過 freetype 1.3 函式庫提供)。
輸入法支援，用於提供各種可能的輸入形式；內建有適合 PC 平臺的漢字 (GB2312) 輸入法支援，包括內碼、全拼、智慧拼音、五筆及自然碼等。

MiniGUI 的技術優勢 和其它針對嵌入式產品的圖形系統相比，MiniGUI 在對系統的需求上具有如下幾大優勢：

可伸縮性強。MiniGUI 豐富的功能和可配置特性，使得它既可運行於 CPU 主頻只有 60MHz 的低端產品中，亦可運行於高階嵌入式裝置中，並使用 MiniGUI 的高階控制元件風格及皮膚介面等技術，建立華麗的使用者介面。MiniGUI 的跨作業系統特性，使得 MiniGUI 可執行在最簡單的嵌入式作業系統之上，如 uC/OS-II，也可以執行在具有現代作業系統特性的嵌入式作業系統之上，如 Linux，而且 MiniGUI 為嵌入式 Linux 系統提供了完整的多視窗圖形環境。這些特性，使得 MiniGUI 具有非常強的可伸縮性。可伸縮性是 MiniGUI 從設計之初就考慮且不斷完善而來的。這個特性使得 MiniGUI 可應用於簡單的行業終端，也可應用於複雜的消費類電子產品。
輕型、佔用資源少。MiniGUI 是一個定位於輕量級的嵌入式圖形庫，對系統資源的需求完全考慮到了嵌入式裝置的硬體情況，如 MiniGUI 庫所佔的空間最小可以裁剪到 500K 左右，對目前的嵌入式裝置來說，滿足這一條件是綽綽有餘的。此外，測試結果表明，MiniGUI 能夠在 CPU 主頻為 30 MHz，僅有 4M RAM 的系統上正常執行 (使用 uClinux 作業系統)，這是其它針對嵌入式產品的圖形系統所無法達到的。
高效能、高可靠性。MiniGUI 良好的體系結構及最佳化的圖形介面，可確保最快的圖形繪製速度。在設計之初，就充分考慮到了即時嵌入式系統的特點，針對多視窗環境下的圖形繪製開展了大量的研究及開發，優化了 MiniGUI 的圖形繪製效能及資源佔用。MiniGUI 在大量實際系統中的應用，尤其在工業控制系統的應用，證明 MiniGUI 具有非常好的效能。從 1999 年 MiniGUI 的第一個版本釋出以來，就有許多產品和專案使用 MiniGUI，MiniGUI 也不斷從這些產品或者專案當中獲得發展動力和新的技術需求，逐漸提高了自身的可靠性和健壯性。有關 MiniGUI 的最新成功案例，您可以訪問飛漫公司網站的典型案例部分：http://www.minigui.com/
可配置性。為滿足嵌入式系統各種各樣的需求，必須要求 GUI 系統是可配置的。和 Linux 核心類似，MiniGUI 也實現了大量的編譯配置選項，透過這些選項可指定 MiniGUI 庫中包括哪些功能而同時不包括哪些功能。大體說來，可以在如下幾個方面對 MiniGUI 進行定製配置：
指定 MiniGUI 要執行的硬體平臺。
指定 MiniGUI 要執行的作業系統。
指定生成基於執行緒的 MiniGUI-Threads 執行模式還是基於程序的 MiniGUI-Processes 執行模式，或者只是最簡單的 MiniGUI-Standalone 執行模式。
指定需要支援的 GAL 引擎和 IAL 引擎，以及引擎相關選項。
指定需要支援的字型型別。
指定需要支援的字元集。
指定需要支援的影像檔案格式。
指定需要支援的控制元件類。
指定控制元件和視窗的整體風格，可以透過指定不同的渲染器完成。這些配置選項大大增強了 MiniGUI 的靈活性，對使用者來講，可針對具體的應用需求量體裁衣，開發最適合產品需求的應用軟體。

總之，將現代視窗和圖形技術帶入到嵌入式裝置的 MiniGUI，是一個非常適合於即時嵌入式裝置的高效、可靠、可定製、小巧靈活的圖形使用者介面支援系統，其主要優點可以總結如下：

支援多種嵌入式作業系統，具備優秀的可移植性；
可伸縮的系統架構，易於擴充套件；
功能豐富，可靈活剪裁；
小體積高效能間的最佳平衡；
廣泛的應用領域。

MiniGUI V3.0 在以前版本的基礎上新增瞭如下新特性：

主視窗雙緩衝區 (Double Buffering Main Window) 當 MiniGUI 3.0 的主視窗具有雙緩衝區時，可以在自定義緩衝區中獲得整個主視窗的渲染結果。在此基礎上，可以利用高階 2D 圖形介面或者 3D 圖形介面獲得主視窗的各種特殊顯示效果，如推拉切換、翻頁切換、捲曲效果等等。
外觀渲染器 (Look and Feel Renderer) 支援。MiniGUI V3.0 改變了以往只支援三種控制元件風格的方式，引入了渲染器 (Look and Feel) 這一全新的模式。渲染器是定義如何繪製視窗元素的渲染器，是在 MiniGUI V2.0.X 的基礎上繼續完善的。視窗元素包括邊框、標題欄、標題欄按鈕、捲軸、選定專案、無效專案、高亮專案、突出專案、三維物件等；視窗元素的外觀屬性，包括視窗元素的顏色、尺寸、字型等資訊；視窗元素渲染器是對視窗元素進行定製大小、顏色、圖形、字型，便於使用者設計個性化的外觀顯示風格。使用者可以指定某個主視窗或某個控制元件使用特定的渲染器，也可定製非客戶區渲染器、視窗元素的尺寸、顏色、字型、圖示，同時增強資源管理功能，從而獲得更加華麗的圖形介面。MiniGUI 實現了幾種預設整體顯示風格：Classic 、Flat、Fashion 和 Skin。使用者可以在配置 MiniGUI 時指定相應的選項來將 MiniGUI 編譯成特定的一種顯示風格。
Classic: 這種風格的介面是標準的 Window 95 風格介面，也是最廣泛使用的風格了。
Fashion: 此種風格的介面，採用 MiniGUI 3.0 元件 mGPlus 提供的顏色漸變填充技術，因此，可獲得非常炫麗的介面效果；
Flat: 此種風格的視窗介面，線條清晰，簡潔，因此適用於單色或者灰度顯示屏。因為繪製簡單，因此該渲染器佔用資源最少，執行速度最快；
Skin: 上面三種外觀渲染器基本上都是由程式碼繪製出來的，具有小巧靈活的特點。但是，在嵌入式應用領域，裝置的差別非常大。有些裝置，已經具備了非常高的運算效能。在這種情況下，可以考慮使用皮膚外觀渲染器來美化介面。皮膚外觀渲染器需要一整套和介面相關的圖片，因此需要佔用一些儲存資源。皮膚外觀渲染器的最大的特點是允許使用者定製介面，使用者可以使用自己設計的圖片替換系統原有的圖片，展現在使用者面前的就將是你自己設計的介面效果。
雙向文字 (BIDI Text) 的顯示與輸入。大家知道，除了大家熟知的從左向右書寫的文字 (如英語、漢語等) 之外，還有許多語言採用從右向左的書寫習慣，如阿拉伯文和希伯來文等。為了支援這些語言，MiniGUI 3.0 中增加了對這兩種語言所屬字元集的處理，並增加了阿拉伯和希伯來鍵盤佈局的支援，從而實現了對雙向文字的輸入輸出處理。阿拉伯文以及希伯來文的顯示。
不規則視窗。MiniGUI V3.0 實現了不規則視窗與控制元件，可滿足使用者對視窗外觀各種不同的需求。不規則視窗透過一個 Region 資料結構來表示可見區域，或者透過 8 位 MYBITMAP 中的透明值形成不可見區域。
字型。在 MiniGUI 3.0 中，飛漫軟體發明了一種新的 UNICODE 字型檔案格式，稱為 “UPF” 字型。這種字型的最大特點，是便於在多程序環境下使用，從而極大地節約了記憶體的使用。同時，飛漫軟體增強了 VBF 字型格式，將 VBF 字型升級到了 3.0，擴大了其能適用的字元集範圍，以便支援阿拉伯文等語言文字的顯示。
其他增強。MiniGUI 3.0 實現了桌面的可定製。透過桌面的外部程式設計介面，使用者可以在桌面放置圖示並響應桌面事件，實現類似 Windows 桌面的介面效果。除此之外，MiniGUI 3.0 還增強了透明控制元件的實現，使之效率更高，且不依賴於控制元件的內部實現程式碼。MiniGUI 3.0 還提供獨立的捲軸控制元件，提供統一的虛擬幀緩衝區程式支援等等。 另外最新的 MiniGUI V3.0 新增加了兩個新的元件：mGUtils 和 mGPlus，把字型、點陣圖、圖示、游標等資源進行統一管理，資源的內嵌和非內嵌方式並不影響模組的組成，由此抽象出系統資源管理模組。

軟體架構

MiniGUI 由如下幾個模組組成：

MiniGUI 軟體架構圖

圖形抽象層 (Graphics Abstraction Layer，GAL)。圖形抽象層將來自不同作業系統或裝置的圖形介面進行抽象，為 MiniGUI 上層提供統一的圖形介面。在圖形抽象層內，包含有針對 Linux FB 裝置、eCos LCD 裝置等的軟體組成部分。這些軟體組成部分透過呼叫底層裝置的介面來實現具體的圖形抽象層操作，如開啟裝置、設定解析度及顯示模式、關閉裝置等。將這些用於適配圖形抽象層介面的軟體組成部分稱為 “引擎 (engine)”，其概念和作業系統中的裝置驅動程式類似。
輸入抽象層 (Input Abstraction Layer，IAL)。和 GAL 類似，輸入抽象層將 MiniGUI 涉及的所有輸入裝置，如鍵盤 (keyboard)、小鍵盤 (keypad)、滑鼠 (mouse)、觸控式螢幕 (touch screen) 等抽象了出來，為上層提供一致的介面。要支援不同的鍵盤、觸控式螢幕或者滑鼠介面，則透過為 IAL 編寫不同的輸入引擎實現。MiniGUI 透過 IAL 及其輸入引擎，提供對 Linux 控制檯 (鍵盤及滑鼠)、觸控式螢幕、遙控器、小鍵盤等輸入裝置的支援。
圖形裝置介面 (Graphics Device Interfaces，GDI)。該模組基於圖形抽象層為上層應用程式提供圖形相關的介面，如繪製曲線、輸出文字、填充矩形等等。圖形裝置介面中含包含其他比較獨立的子模組，如字型字元集 (font and charset) 支援、影像 (image) 支援等。
訊息處理模組 (Messaging Module)。該模組在輸入抽象層基礎上，實現了 MiniGUI 的訊息處理機制，為上層提供了完備的訊息管理介面。眾所周知，幾乎所有的 GUI 系統本質上都是事件驅動的，系統自身的執行，以及 GUI 應用程式的執行，都依賴於訊息處理模組。
多視窗處理模組 (Windowing Module) 和控制元件 (Control 或 Widget)。基於圖形裝置介面和訊息處理模組，MiniGUI 實現了多視窗處理模組。該模組為上層應用程式提供了建立主視窗和控制元件的基本介面，並負責維護控制元件類。控制元件類是用來實現控制元件程式碼重用的重要概念，利用控制元件類 (control class)，可以建立屬於某個控制元件類的多個控制元件例項 (instance)，從而讓這些控制元件例項使用同一個控制元件類的程式碼，這樣，就實現了類似 C++ 那樣的類和例項概念，從而可以最大程度上重複利用已有程式碼，並提高軟體的可維護性。MiniGUI 的控制元件模組實現了常見的 GUI 控制元件，如靜態框、按鈕、編輯框、列表框、下拉框等等。
外觀支援 (Look and Feel)。這個模組是 MiniGUI V3.0 提供給上層應用程式的介面，可用來定製 MiniGUI 視窗、控制元件的繪製。在 MiniGUI V3.0 之前的版本中，對主視窗和控制元件的定製能力，還沒有被抽離出來形成獨立的模組，但仍然可以透過配置選項讓 MiniGUI 的主視窗、控制元件具有三種顯示風格，分別是：類似 PC 的三維風格 (PC3D)、平板風格 (FLAT)、流行風格 (FASHION)。在 MiniGUI 3.0 中，主視窗和控制元件的外觀可完全由應用程式自行定製，在建立主視窗或者控制元件時，指定外觀渲染器 (renderer) 的名稱，就可以讓主視窗或者控制元件具有各自不同的外觀。

在 MiniGUI 核心 (Core) 介面之上，還為應用程式提供若干元件，這些元件分別為應用程式提供某些特殊的功能特性：

mGi 是 MiniGUI 的輸入法元件，該元件目前提供了軟鍵盤輸入法和手寫輸入法框架，並提供給使用者管理輸入法的容器，透過這個容器，使用者還可以新增自定義的輸入法。
mGp 是針對 MiniGUI 應用程式的一個列印元件，該元件使使用者的 MiniGUI 程式具有列印輸出功能，可以將 MiniGUI 程式中的點陣圖或文字輸出到印表機。
mG3d 是一個為 MiniGUI 的應用程式提供 3D 介面的元件，透過這些介面，使用者可以給自己的應用程式新增三維影像、文字渲染、場景渲染等效果，從而可以具有三維效果的人機介面。
mGUtils 元件為使用者提供了一些常用的對話方塊模板，有了這些模板，使用者就不用為一些常用的功能編寫重複程式碼了。本元件提供的功能模板有：普通檔案對話方塊、顏色設定對話方塊、字型設定對話方塊、資訊設定對話方塊等。
mGPlus 元件是對 MiniGUI 圖形繪製介面的一個擴充和增強，主要提供對二維向量圖形和高階圖形演算法的支援，如路徑、漸變填充和顏色組合等。
mGEff 元件提供通常的頁面特效支援。

執行模式

和 Linux 這樣的類 UNIX 作業系統相比，一般意義上的傳統嵌入式作業系統具有一些特殊性。舉例而言，諸如 uClinux、uC/OS-II、eCos 等作業系統，通常執行在沒有 MMU (記憶體管理單元，用於提供虛擬記憶體支援) 的 CPU 上；這時，往往就沒有程序的概念，而只有執行緒或者任務的概念，這樣，MiniGUI 的執行環境也就大相徑庭。因此，為了適合不同的作業系統環境，可將 MiniGUI 配置成三種不同的執行模式：

MiniGUI-Threads。執行在 MiniGUI-Threads 上的程式可以在不同的執行緒中建立多個視窗，但所有的視窗在一個程序或者地址空間中執行。這種執行模式主要用來支援大多數傳統意義上的嵌入式作業系統，比如 VxWorks、ThreadX、Nucleus、OSE、pSOS、uC/OS-II、eCos 等等。當然，在 Linux 和 uClinux 上，MiniGUI 也能以 MiniGUI-Threads 的模式執行。
MiniGUI-Processes。和 MiniGUI-Threads 相反，MiniGUI-Processes 上的每個程式是單獨的程序，每個程序也可以建立多個視窗，並且實現了多程序視窗系統。MiniGUI-Processes 適合於具有完整 UNIX 特性的嵌入式作業系統，比如嵌入式 Linux。該執行模式在 MiniGUI V2.0 中提供。
MiniGUI-Standalone。這種執行模式下，MiniGUI 可以以獨立任務的方式執行，既不需要多執行緒也不需要多程序的支援，這種執行模式適合功能單一的應用場合。比如在一些使用 uClinux 的嵌入式產品中，因為各種原因而缺少執行緒支援，這時，就可以使用 MiniGUI-Standalone 來開發應用軟體。

一般而言，MiniGUI-Standalone 模式的適應面最廣，可以支援幾乎所有的作業系統 (目前只用來提供對 Linux/uClinux 作業系統的支援)；MiniGUI-Threads 模式的適用面次之，可執行在支援多工的即時嵌入式作業系統，或者具備完整 UNIX 特性的普通作業系統；MiniGUI-Processes 模式的適用面較小，它僅適合於具備完整 UNIX 特性的嵌入式作業系統，比如 Linux。但不論採用哪種執行模式，MiniGUI 為上層應用軟體提供了最大程度上的一致性；只有少數幾個涉及初始化的介面在不同執行模式上有所不同。

使用

使用 MiniGUI 的部分專案案例

大唐移動（現聯芯科技）推出採用 MiniGUI 和 Fhas 應用開發平臺作為圖形顯示系統和終端應用開發平臺的 TD-SCDMA 3G 手機終端軟體標準平臺 Arena；
臺灣英華達電子技術有限公司選用 MiniGUI 開發出了支援 Skype 功能的可視 IP 電話；
作為美國風河系統公司全球合作伙伴為 VxWorks 提供全面的圖形解決方案；
AMD 公司在其新發布的 Argon PMP 參考設計方案中採用了 MiniGUI 和 Fhas 作為圖形環境；
長虹電器股份有限公司採用 MiniGUI 和嵌入式瀏覽器 mSpider 進行 DTV 和 IPTV 產品的開發；
Intel 採用 MiniGUI 開發家庭數字多媒體閘道器產品；
聯芯科技（大唐移動）採用 MiniGUI 作為商用 TD-SCDMA 手機的 MMI 方案；
華為選擇 MiniGUI 作為平臺產品，用於機頂盒、手持終端等產品領域；
HappyLinux 聯想 HappyLinux 1.0 發行版採用 MiniGUI 開發其安裝程式。

4.1 MiniGUI 相關元件及產品

mStudio 的中文全稱為 “飛漫視覺化軟體整合開發平臺”，是面向 MiniGUI 3.0 的一款整合開發環境。mStudio 基於 Eclipse 整合開發環境開發，併為使用者提供了所見即所得的介面設計工具，可自動生成和維護 MiniGUI 3.0 的應用程式框架，進行程式碼的編輯、編譯、執行、除錯，從而加快 MiniGUI 3.0 應用程式的開發，降低使用 MiniGUI 的門檻。
mDolphin 是飛漫軟體基於開源的瀏覽器核心 WebKit 開發的嵌入式瀏覽器產品，並使用 MiniGUI 作為其底層圖形系統。mDolphin 的最新版本為 3.0。
mGi 是飛漫軟體為 MiniGUI 1.6/2.0/3.0 使用者提供的一個輸入法元件，該元件目前提供了軟鍵盤輸入法和手寫輸入法框架，並提供給使用者管理輸入法的容器，透過這個容器，使用者還可以新增自定義的輸入法。此外，對於軟鍵盤輸入法，使用者可以自定義顯示的鍵盤點陣圖，並可新增不同的輸入翻譯方式（自帶中文全拼輸入法）。
mGp 是飛漫軟體針對 MiniGUI 1.6/2.0/3.0 應用程式的一個列印元件，該元件使使用者的 MiniGUI 程式具有列印輸出功能，可以將 MiniGUI 程式中的點陣圖或文字輸出到印表機去。mGp 現已提供對愛普生和惠普等多種印表機的支援。
mG3d 是一個為 MiniGUI 1.6/2.0/3.0 應用程式提供簡單三維（3D）介面的元件，透過這些介面，使用者可以給自己的應用程式新增三維影像、場景渲染等效果。
mGUtils 元件是在原 MiniGUI 2.0/1.6 的 MiniGUI 擴充套件庫基礎上發展而來。這個元件為應用程式提供了一些常見的視窗及對話方塊框實現，以簡化應用程式程式碼。
mGPlus 元件是對 MiniGUI 3.0 圖形繪製介面的一個擴充和增強，主要提供對二維向量圖形和高階圖形演算法的支援，如路徑、漸變填充和顏色組合等。mGPlus 用來實現 MiniGUI 的 Fashion 外觀渲染器，也用於 mDolphin 瀏覽器實現高階的圖形功能，如 HTML 5 中的 Canvas 標記、SVG 支援等。
mGEff 元件提供常規的特效支援。

版本歷史

MiniGUI 3.0 是最新 MiniGUI 版本，該版本提供了眾多高階功能特性，將幫助您開發具有更好使用者體驗的嵌入式產品。
MiniGUI 2.0 為嵌入式 Linux 系統提供了完整的圖形系統支援，是全球針對嵌入式 Linux 僅有的兩個商用嵌入式 GUI 系統之一。
MiniGUI 1.6 是為各種流行的嵌入式即時作業系統（如 VxWorks、eCos、Nucleus、ThreadX、OSE 等）提供嵌入式圖形系統支援的 MiniGUI 版本。

發展

MiniGUI 4.0 正在設計開發當中。

MiniGUI hello world

MiniGUI hello world 以 C 撰寫，這支程式含有視窗，標題為 "Hello, World".

include

int MiniGUIMain (int argc, const char* argv)

{

MSG Msg;

HWND hMainWnd;

MAINWINCREATE CreateInfo;

ifdef MGRMPROCESSES

JoinLayer (NAMEDEFLAYER , "helloworld" , 0 , 0);

endif

CreateInfo.dwStyle =

WSVISIBLE | WSBORDER | WS_CAPTION;

CreateInfo.dwExStyle = WSEXAUTOSECONDARYDC;

CreateInfo.spCaption = "Hello, World";

CreateInfo.hMenu = 0;

CreateInfo.hCursor = GetSystemCursor (0);

CreateInfo.hIcon = 0;

CreateInfo.MainWindowProc = DefaultMainWinProc;

CreateInfo.lx = 0;

CreateInfo.ty = 0;

CreateInfo.rx = g_rcScr.right;

CreateInfo.by = g_rcScr.bottom;

CreateInfo.iBkColor = COLOR_lightwhite;

CreateInfo.dwAddData = 0;

CreateInfo.hHosting = HWND_DESKTOP;

hMainWnd = CreateMainWindow (&CreateInfo);

if (hMainWnd == HWND_INVALID)

return -1;

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

DispatchMessage (&Msg);

}

MainWindowThreadCleanup (hMainWnd);

return 0;

}

外部資料

MiniGUI 開源版本主頁
MiniGUI 商業版本主頁