MiniGUI

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
MiniGUI
開發者Beijing Feynman Software Technology Co., Ltd.
作業系統跨平台
類型Widget toolkit
許可協定GNU通用公共許可證 OR Business authorize
網站http://www.minigui.com/

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 開發其安裝程式。

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 <stdio.h>
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>

int MiniGUIMain (int argc, const char* argv[])
{
    MSG Msg;
    HWND hMainWnd;
    MAINWINCREATE CreateInfo;

#ifdef _MGRM_PROCESSES
    JoinLayer(NAME_DEF_LAYER , "helloworld" , 0 , 0);
#endif
    CreateInfo.dwStyle = 
        WS_VISIBLE | WS_BORDER | WS_CAPTION;
    CreateInfo.dwExStyle = WS_EX_AUTOSECONDARYDC;
    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;
}


參見[編輯]

參考來源[編輯]

  1. 魏永明. 《嵌入式软件开发及C语言实现: MiniGUI剖析》. 電子工業出版社. 2008. ISBN 7-12106-309-3. 
  2. 超韓. 《嵌入式GUI开发设计: 基于MiniGUI》. 電子工業出版社. 2009. ISBN 7-89464-218-5. 
  3. 周立功. 《ARM嵌入式 MiniGUI 初步与应用开发范例》. 北京航空航天大學出版社. 2006. ISBN 7-81077-742-4. 

外部資料[編輯]