嵌入式圖形用戶界面編程_第1頁
嵌入式圖形用戶界面編程_第2頁
嵌入式圖形用戶界面編程_第3頁
嵌入式圖形用戶界面編程_第4頁
嵌入式圖形用戶界面編程_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

嵌入式圖形用戶界面編程綜合課程設(shè)計(jì)2013.9.27嵌入式GUI概述GUI(GraphicsUserInterfase),圖形用戶界面,借助菜單、按鈕等標(biāo)準(zhǔn)界面元素和鼠標(biāo)進(jìn)行操作,幫助用戶方便地向計(jì)算機(jī)系統(tǒng)發(fā)出指令,并將系統(tǒng)運(yùn)行的結(jié)果同樣以圖形方式顯示給用戶。嵌入式GUI:輕型、占用資源少、高性能、高可靠性、可配置。常用嵌入式GUIMicroWindowsMiniGUI其他圖形平臺(tái):Qt/Embedded等IntroductionMiniGUI,是魏永明先生于1998年底主持和開發(fā)的一個(gè)自由軟件項(xiàng)目,現(xiàn)由北京飛漫軟件技術(shù)有限公司維護(hù)并開展后續(xù)開發(fā)。最后一個(gè)采用GPL授權(quán)的MiniGUI版本是1.6.10,從MiniGUI2.0.4開始MiniGUI被重寫并使用商業(yè)授權(quán)。Introduction歷經(jīng)十余年時(shí)間,MiniGui已經(jīng)成為性能優(yōu)良、功能豐富的嵌入式圖形用戶界面支持系統(tǒng),可支持任意一個(gè)多任務(wù)嵌入式操作系統(tǒng);實(shí)際已支持linux/uClinux、eCos、uC/OS-Ⅱ、VxWorks等嵌入式操作系統(tǒng)和數(shù)十種SOC芯片,已驗(yàn)證的硬件平臺(tái)包括ARM-basedSoCs、MIPSbasedSoCs、IA-basedSoCs、PowerPC、M68K(DragonBall/ColdFire)、Intelx86等等。廣泛應(yīng)用于通訊、醫(yī)療、工控、電力、機(jī)頂盒、多媒體終端等領(lǐng)域。使用MiniGUI成功開發(fā)產(chǎn)品的企業(yè)有華為、中興通訊、大唐移動(dòng)、長虹、TCL、聯(lián)想、邁瑞、南瑞、炬力、D2等。這些用戶廣泛分部在中國大陸、臺(tái)灣、新加坡、韓國、美國、德國、意大利、印度、以色列等國家和地區(qū)。Introduction值得一提的是,在中國自主開發(fā)的3G通訊標(biāo)準(zhǔn)TD-SCDMA中,約有60%獲得入網(wǎng)許可證的TD-SCDMA手機(jī)使用MiniGUI作為其嵌入式圖形平臺(tái),以支撐瀏覽器、可視電話等3G應(yīng)用軟件的運(yùn)行,其中有聯(lián)想TD30t、海信T68、中興通訊U85等大家熟悉的TD手機(jī)型號(hào)。MiniGUI典型應(yīng)用Wi-Fi手機(jī)界面MiniGUI典型應(yīng)用3G手機(jī)聯(lián)想TD30t,支持可視電話、CMMB手機(jī)電視、樂隨身聽、手機(jī)視頻等3G典型應(yīng)用。MiniGUI典型應(yīng)用下圖是飛漫軟件為某市政府開發(fā)的法律及政務(wù)查詢系統(tǒng)。MiniGUI典型應(yīng)用東大集成電路有限公司采用MiniGUI在Linux操作系統(tǒng)上開發(fā)的PDA產(chǎn)品界面MiniGUI典型應(yīng)用南京南瑞自動(dòng)控制有限公司采用MiniGUI開發(fā)的電力監(jiān)控設(shè)備特點(diǎn)優(yōu)勢(shì)

MiniGUI為嵌入式Linux系統(tǒng)提供了完整的圖形系統(tǒng)支持,是全球針對(duì)嵌入式Linux僅有的兩個(gè)商用嵌入式GUI系統(tǒng)之一。MiniGUI為嵌入式Linux系統(tǒng)提供了完整的多進(jìn)程支持;可以MiniGUI-Processes、MiniGUI-Threads或者M(jìn)iniGUI-Standalone三種運(yùn)行模式運(yùn)行。MiniGui的三種運(yùn)行模式Minigui-Threads。運(yùn)行在Minigui-Threads上的程序可以在不同的線程中建立多個(gè)窗口,但所有的窗口在一個(gè)進(jìn)程或者地址空間中運(yùn)行,這種模式適合大多數(shù)傳統(tǒng)意義上的嵌入式操作系統(tǒng),如linux,uClinux;也是默認(rèn)模式。Minigui-Lite。和Minigui-Threads相反,它上的每個(gè)程序是單獨(dú)的進(jìn)程,每個(gè)進(jìn)程也可以建立多個(gè)窗口。它適合具有完整UNIX特性的嵌入式Linux;Minigui-Standalone。這種運(yùn)行模式下,MiniGUI可以以獨(dú)立進(jìn)程方式運(yùn)行,既不需要多線程也不需要多進(jìn)程的支持,這種模式適合功能單一的應(yīng)用場合。比如uClinux的嵌入式產(chǎn)品中。MiniGUI的主要技術(shù)特性1、硬件適配性:

可運(yùn)行于各種含有MMU(內(nèi)存管理單元)的32位處理器架構(gòu)之上,如ix386、ARM、MIPS、PowerPC等。支持低端顯示設(shè)備(比如單色LCD)和高端顯示設(shè)備(8位色及以上顯示設(shè)備)。對(duì)顯示設(shè)備分辨率無最大和最小限制。MiniGUI的主要技術(shù)特性

副屏支持。當(dāng)系統(tǒng)中有多個(gè)視頻設(shè)備時(shí),可將一個(gè)作為MiniGUI的主屏,實(shí)現(xiàn)完整的多窗口系統(tǒng);而其它設(shè)備作為副屏,在其上通過MiniGUI的圖形接口來實(shí)現(xiàn)文字渲染、圖形顯示等功能。

可支持各種輸入設(shè)備,如PC鍵盤、PC鼠標(biāo)、小鍵盤(Keypad)、觸摸屏、遙控器等等。

多種鍵盤布局的支持。MiniGUI除支持常見的美式PC鍵盤布局之外,還支持法語、德語等西歐語種的鍵盤布局。

MiniGUI的主要技術(shù)特性2、資源消耗:MiniGUI的靜態(tài)存儲(chǔ)隨配置選項(xiàng)的不同而不同,最少需占用1MB靜態(tài)存儲(chǔ)空間。MiniGUI啟動(dòng)后,初始占用1MB動(dòng)態(tài)存儲(chǔ)空間。建議系統(tǒng)內(nèi)存為8MB以上。MiniGUI的主要技術(shù)特性3、操作系統(tǒng)適配性:支持Linux操作系統(tǒng)(非uClinux操作系統(tǒng))。內(nèi)建資源支持??梢詫iniGUI所使用的資源,諸如位圖、圖標(biāo)和字體等編譯到函數(shù)庫中,該特性可提高M(jìn)iniGUI的初始化速度,并且非常適合無文件系統(tǒng)支持的實(shí)時(shí)嵌入式操作系統(tǒng)。針對(duì)嵌入式系統(tǒng)的特殊支持,包括一般性的I/O流操作,字節(jié)序相關(guān)函數(shù)等。MiniGUI的主要技術(shù)特性4、窗口子系統(tǒng)特性:完備的多窗口機(jī)制和消息傳遞機(jī)制。使用MiniGUI-Threads運(yùn)行模式時(shí),可在不同線程中創(chuàng)建主窗口,并支持線程間的消息傳遞;使用MiniGUI-Processes運(yùn)行模式時(shí),支持完整的多進(jìn)程窗口系統(tǒng)。對(duì)話框和消息框支持。MiniGUI的主要技術(shù)特性提供常用的控件類,包括靜態(tài)文本框、按鈕、單行和多行編輯框、列表框、組合框、菜單按鈕、進(jìn)度條、滑塊、屬性頁、工具欄、樹型控件、月歷控件、旋鈕控件、酷工具欄、網(wǎng)格控件、動(dòng)畫控件等。其它GUI元素,包括菜單、加速鍵、插入符、定時(shí)器等。MiniGUI的主要技術(shù)特性5、圖形子系統(tǒng)特性:提供有增強(qiáng)GDI函數(shù),包括光柵操作、復(fù)雜區(qū)域處理、橢圓、圓弧、多邊形以及區(qū)域填充等函數(shù)。在提供有兼容于C99規(guī)范的數(shù)學(xué)庫平臺(tái)上,還提供有高級(jí)二維繪圖函數(shù),可設(shè)置線寬、線型以及填充模式等。通過MiniGUI的圖形抽象層及圖形引擎技術(shù),也可以讓上述高級(jí)GDI接口在低端顯示屏上實(shí)現(xiàn)。各種流行圖像文件的支持,包括WindowsBMP、GIF、JPEG、PNG等(JPEG及PNG的支持通過libjpeg及l(fā)ibpng函數(shù)庫提供)。MiniGUI的主要技術(shù)特性Windows的資源文件支持,如位圖、圖標(biāo)、光標(biāo)等。多字符集和多字體支持,目前支持ISO8859-1~I(xiàn)SO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KR、UNICODE(UTF-8、UTF-16編碼)等字符集,支持等寬點(diǎn)陣字體、變寬點(diǎn)陣字體、Qt/Embedded使用的嵌入式字體QPF、TrueType矢量字體(對(duì)TrueType的支持通過freetype1.3函數(shù)庫提供)。

輸入法支持,用于提供各種可能的輸入形式;內(nèi)建有適合PC平臺(tái)的漢字(GB2312)輸入法支持,包括內(nèi)碼、全拼、智能拼音、五筆及自然碼等。MiniGUI的技術(shù)優(yōu)勢(shì)可伸縮性強(qiáng)。對(duì)CPU主頻要求不高,可以運(yùn)行在CPU主頻只有60MHz的低端產(chǎn)品中。輕型、占用資源少。MiniGUI是一個(gè)定位于輕量級(jí)的嵌入式圖形庫,MiniGUI庫所占的空間最小可以裁剪到500K左右,對(duì)目前的嵌入式設(shè)備來說,滿足這一條件是綽綽有余的。此外,測試結(jié)果表明,MiniGUI能夠在CPU主頻為30MHz,僅有4MRAM的系統(tǒng)上正常運(yùn)行(使用uClinux操作系統(tǒng)),這是其它針對(duì)嵌入式產(chǎn)品的圖形系統(tǒng)所無法達(dá)到的。MiniGUI的技術(shù)優(yōu)勢(shì)高性能、高可靠性。MiniGUI良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,可確保最快的圖形繪制速度。可配置性。MiniGUI可對(duì)硬件平臺(tái),操作系統(tǒng),運(yùn)行模式,需要支持的GAL引擎和IAL引擎,以及引擎相關(guān)選項(xiàng)。需要支持的字體類型,字符集,圖像文件格式,控件類等進(jìn)行定制配置。

支持多種嵌入式操作系統(tǒng),具備優(yōu)秀的可移植性;MiniGui的體系結(jié)構(gòu)FrameWork、MMI、KeyAPPs等應(yīng)用程序接口MiniGuiPortableLayerANSICDevicesuC/OS-Ⅱ、Linux、uClinux、Linux、VxWorks、pSOSARM、MIPS、PowerPC、ix86MiniGui的體系結(jié)構(gòu)MiniGui有良好軟件架構(gòu),通過抽象層將MiniGui上層和底層操作系統(tǒng)隔離開來,在不同的的操作系統(tǒng)上,MiniGui提供完全兼容的API接口?;贛iniGui的應(yīng)用程序一般通過ANSIC庫以及MiniGui自身提供的API來實(shí)現(xiàn)自己的功能;MiniGui中的“可移植層”可將特定操作系統(tǒng)及底層硬件的細(xì)節(jié)隱藏起來,而上層應(yīng)用程序則無需關(guān)心底層的硬件平臺(tái)輸出和輸入設(shè)備。MiniGui特有的運(yùn)行模式也給跨操作系統(tǒng)的支持提供了便利。MiniGui提供的軟件包libminigui-1.6.10.tar.gz:MiniGui函數(shù)庫源代碼,其中包括下面三個(gè)函數(shù)庫:libminigui:提供窗口管理和圖形接口的核心函數(shù)庫,和大量標(biāo)準(zhǔn)控件。libmgext:libminigui的一個(gè)擴(kuò)展庫,提供一些高級(jí)控件以及文件打開對(duì)話框等。libvcongui:一個(gè)應(yīng)用程序可用的虛擬控制臺(tái)窗口,可以方便在minigui環(huán)境中運(yùn)行字符界面的應(yīng)用程序。MiniGui提供的軟件包minigui-res-1.6.10.tar.gz:MiniGui所使用的資源文件,包括基本字體,圖標(biāo)、位圖和鼠標(biāo)等等。mg-samples-1.6.10.tar.gz:MiniGui應(yīng)用示列程序。mde-1.6.10.tar.gz:MiniGui的綜合演示程序包,包含了MiniGui的控件演示程序、字體演示程序、對(duì)話框演示程序、記事本演示程序,還有推箱子、掃雷、俄羅斯方塊等游戲。MiniGui的安裝1、硬件環(huán)境x86PC2、軟件環(huán)境Linux操作系統(tǒng)----Ubuntu9.10準(zhǔn)備源代碼包庫文件:libminigui-1.6.10.tar.gz資源文件:minigui-res-1.6.10.tar.gz示例文件:mg-samples-1.6.10.tar.gz綜合演示文件:mde-1.6.10.tar.gzJPEG圖形支持庫:jpegsrc.v6b.tar.gzPNG圖形支持庫:libpng_src.tgzQBFB,模擬幀緩沖支持庫參考文獻(xiàn)MiniGUI技術(shù)白皮書forV2.0.4/1.6.10[PDF]:該文檔描述了MiniGUIV2.0.4/1.6.10的技術(shù)特性。DatasheetforMiniGUIV2.0.4/1.6.10[PDF]:該文檔對(duì)MiniGUIV2.0.4/1.6.10產(chǎn)品功能特性進(jìn)行了詳盡的介紹。《MiniGUI用戶手冊(cè)》V2.0.4/1.6.10[PDF]:主要描述MiniGUI的編譯時(shí)配置選項(xiàng)和運(yùn)行時(shí)配置選項(xiàng)。參考文獻(xiàn)《MiniGUI編程指南》V2.0.4/1.6.10[PDF]:該文檔是一本關(guān)于MiniGUI編程的完整指南,講述了MiniGUI編程的基礎(chǔ)知識(shí)和各種編程方法及技巧,并詳細(xì)地描述了主要的API函數(shù)?!禡iniGUIAPI參考手冊(cè)》V1.6.10:本文檔是MiniGUIV2.0.4最詳盡的應(yīng)用程序編程接口參考手冊(cè)。其中描述了MiniGUI所有的函數(shù)、結(jié)構(gòu)、消息以及控件的接口定義和使用方法,是進(jìn)行MiniGUI編程不可缺少的手冊(cè)。安裝minigui資源文件將所下載的源代碼包拷貝到工作目錄/home/missxx/minigui/下。打開一個(gè)終端窗口,切換為超級(jí)用戶:missxx@missxx-desktop:~/minigui$su密碼:root@missxx-desktop:/home/missxx/minigui/#tar-xvzfminigui-res-1.6.10.tar.gz(解壓縮)root@missxx-desktop:/home/missxx/minigui/#cdminigui-res-1.6.10(進(jìn)入到所加壓的目錄下)root@missxx-desktop:/home/missxx/minigui/minigui-res-1.6.10#makeinstall(安裝)root@missxx-desktop:/home/missxx/minigui/minigui-res-1.6.10#ls/usr/local/lib/minigui/res/(在配置文件中有默認(rèn)的安裝路徑)查看被安裝好的文件如下:bmpcursorfonticonimetabcd..退出文件夾安裝minigui庫文件root@missxx-desktop:/home/missxx/minigui/#tar-zxvflibminigui-1.6.10.tar.gzroot@missxx-desktop:/home/missxx/minigui/#lsroot@missxx-desktop:/home/missxx/minigui/#cdlibminigui-1.6.10root@missxx-desktop:/home/missxx/minigui/libminigui-1.6.10#lsroot@missxx-desktop:/home/missxx/minigui/libminigui-1.6.10#./configureroot@missxx-desktop:/home/missxx/minigui/libminigui-1.6.10#makeroot@missxx-desktop:/home/missxx/minigui/libminigui-1.6.10#makeinstallroot@missxx-desktop:/home/missxx/minigui/libminigui-1.6.10#ls/usr/local/lib(以配置文件中的默認(rèn)安裝路徑查看安裝結(jié)果)root@missxx-desktop:/home/missxx/minigui/libminigui-1.6.10#cd..說明一般來說,安裝軟件庫后需要將庫的路徑更新到配置文件/etc/ld.so.conf中。由于配置文件已存在/usr/local/lib路徑,因此可不用添加。在安裝過程中,使用的是默認(rèn)配置選項(xiàng)。--target選項(xiàng)用于指定目標(biāo)平臺(tái)--prefix選項(xiàng)用于指定minigui函數(shù)庫的安裝路徑--host選項(xiàng)用語指明宿主機(jī)的類型--enable–lite用于指出生成基于進(jìn)程的lite版本,而不生成基于線性的thread版本安裝minigui支持庫libpngroot@missxx-desktop:/home/missxx/minigui#tar–zxvflibpng_src.tgzroot@missxx-desktop:/home/missxx/minigui#cdlibpngroot@missxx-desktop:/home/missxx/minigui/libpng#lsroot@missxx-desktop:/home/missxx/minigui/libpng#makeinstall出現(xiàn)錯(cuò)誤提示沒有zlib.h,安裝apt-getinstallzlib1g-devroot@missxx-desktop:/home/missxx/minigui/libpng#cd..安裝minigui支持庫libjpegroot@missxx-desktop:/home/missxx/minigui#tar–zxvfjpegsrc.v6b.tar.gzroot@missxx-desktop:/home/missxx/minigui#cdjpeg-6b/root@missxx-desktop:/home/missxx/minigui/jpeg-6b#lsroot@missxx-desktop:/home/missxx/minigui/jpeg-6b#makeinstall安裝過程中提示錯(cuò)誤:無法創(chuàng)建普通文件“/usr/local/man/man1/cjpeg.1”:沒有那個(gè)文件或目錄make:***[install]錯(cuò)誤1。經(jīng)過查看發(fā)現(xiàn)/usr/local/man/下沒有man1這個(gè)文件夾,建立此文件夾,再安裝。root@missxx-desktop:/home/missxx/minigui/jpeg-6b#mkdir/usr/local/man/man1root@missxx-desktop:/home/missxx/minigui/jpeg-6b#makeinstallroot@missxx-desktop:/home/missxx/minigui/jpeg-6b#cd..查看庫文件安裝是否成功庫文件分為動(dòng)態(tài)鏈接庫和靜態(tài)鏈接庫,查看所安裝的庫文件:root@missxx-desktop:/home/missxx/minigui/#ls/usr/local/liblibmgext-1.6.so.10libminigui.alibvcongui-1.6.so.10libmgext-1.6.so.10.0.0libminigui.lalibvcongui-1.6.so.10.0.0libmgext.alibminigui.solibvcongui.alibmgext.lalibpng.alibvcongui.lalibmgext.solibpng.solibvcongui.solibminigui-1.6.so.10libpng.so.2miniguilibminigui-1.6.so.10.0.0libpng.so.2.1.0.12python2安裝QvfbminiGUI是基于幀緩存的,而不是我們平時(shí)PC平臺(tái)上X窗口,所以需要qvfb模擬幀緩存來運(yùn)行顯示效果。qvfb是基于qt的工具安裝的時(shí)候要指定qt庫,直接下載最新的qt安裝。//root@missxx-desktop:/home/missxx/minigui#sudoapt-getinstallqt3-dev-tools-embedded//apt-getinstalllibqt3-headerslibqt3-mt-devroot@missxx-desktop:/home/missxx/minigui#apt-getinstallqt4-dev-tools在提示“解壓縮后會(huì)消耗掉51.4MB的額外空間。您希望繼續(xù)執(zhí)行嗎?[Y/n]”后,鍵入y,回車Qvfb配置先運(yùn)行下列指令:exportgal_engine=qvfbexportdefaultmode=640x480-16bpp(在這里是640x480不是640*480)exportial_engine=qvfb注意在運(yùn)行例程的時(shí)候先運(yùn)行qvfb&,打開qvfb后,在FILE—>configure下選擇640x48016位色測試:root@missxx-desktop:/home/missxx/minigui#qvfb&編譯測試示例程序mg-samples-1.6.10.tar.gz是《MiniGUI編程指南》的示例代碼?!禡iniGUI編程指南》可從官方網(wǎng)上下載,編譯過程如下:root@missxx-desktop:/home/missxx/minigui/#tar–zxvfmg-samples-1.6.10root@missxx-desktop:/home/missxx/minigui/#cdmg-samples-1.6.10root@missxx-desktop:/home/missxx/minigui/mg-samples-1.6.10#lsroot@missxx-desktop:/home/missxx/minigui/mg-samples-1.6.10#./configureroot@missxx-desktop:/home/missxx/minigui/mg-samples-1.6.10#makeinstall運(yùn)行程序./hellowordroot@missxx-desktop:/home/missxx/minigui/mg-samples-1.6.10#cdsrcroot@missxx-desktop:/home/missxx/minigui/mg-samples-1.6.10/src#./helloworld作業(yè)1請(qǐng)大家自己學(xué)習(xí)安裝MiniGui的綜合演示程序包:mde-1.6.10.tar.gz以Helloworld程序?yàn)槔f明程序架構(gòu)1、頭文件#include<minigui/common.h>#include<minigui/minigui.h>#include<minigui/gdi.h>#include<minigui/window.h>#include<minigui/control.h>#include<stdio.h>common.h包括MiniGui常用的宏及數(shù)據(jù)類型的定義。minigui.h包含了全局的和通用的接口函數(shù)以及某些復(fù)雜項(xiàng)函數(shù)的定義。gdi.h包含了繪圖函數(shù)的接口的定義。window.h包含了窗口有關(guān)的宏、數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)的定義以及函數(shù)接口聲明。control.h包含了所有內(nèi)建控件的接口定義。程序架構(gòu)2)MiniGUIMain函數(shù)入口點(diǎn)函數(shù)原型:intMiniGUIMain(intargc,constchar*argv[])

{

}

參數(shù)argc和argv與C程序main函數(shù)的參數(shù)argc和argv的含義是一樣的,分別為命令行參數(shù)個(gè)數(shù)和參數(shù)字符串?dāng)?shù)組指針。Main函數(shù)已經(jīng)在MiniGUI的函數(shù)庫中定義了,該函數(shù)在進(jìn)行MiniGUI初始化工作之后調(diào)用了MiniGUIMain函數(shù)。程序架構(gòu)3、設(shè)置主窗口屬性—MAINWINCREATE結(jié)構(gòu)描述

CreateInfo.dwstyle=WS_VISIBLE|WS_BORDER|WS_CAPTION;//設(shè)置主窗口風(fēng)格為初始可見的,并具有邊框和標(biāo)題欄CreateInfo.dwExstyle=WS_EX_NONE;//設(shè)置該主窗口沒有擴(kuò)展風(fēng)格

CreateInfo.spCaption=“Hello,MiniGui!”;//設(shè)置主窗口的標(biāo)題名

CreateInfo.hMenu=0;//設(shè)置主窗口沒有主菜單

CreateInfo.hCursor=GetSystemCursor(0);//設(shè)置主窗口光標(biāo)為缺省光標(biāo)

CreateInfo.hIcon=0;//設(shè)置主窗口沒有圖標(biāo)

CreateInfo.MainWindowProc=HelloWinProc;//設(shè)置主窗口的消息處理過程函數(shù),所有發(fā)往該窗口的消息由該函數(shù)來處理

CreateInfo.lx=0;

CreateInfo.ty=0;

CreateInfo.rx=320;

CreateInfo.by=240;//設(shè)置窗口的左上角坐標(biāo)(0,0),右下角坐標(biāo)(320,240)

CreateInfo.iBkColor=COLOR_lightwhite;//設(shè)置主窗口的背景色為白色,COLOR_lightwhite為預(yù)定義像素值

CreateInfo.dwAddData=0;//設(shè)置主窗口的附加值為無

CreateInfo.hHosting=HWND_DESKTOP;//設(shè)置主窗口的托管窗口為桌面

程序架構(gòu)4、創(chuàng)建和顯示主窗口//創(chuàng)建主窗口

hMainWnd=CreateMainWindow(&CreateInfo);

CreateMainWindow創(chuàng)建主窗口,參數(shù)是指向MAINWINCREATE結(jié)構(gòu)的指針CreateInfo,返回值為所創(chuàng)建的主窗口的句柄。MAINWINCREATE結(jié)構(gòu)描述一個(gè)主窗口的屬性。//顯示主窗口

ShowWindow(hMainWnd,SW_SHOWNORMAL);顯示主窗口到屏幕上。程序架構(gòu)5、進(jìn)入消息循環(huán)事件發(fā)生后,

MiniGUI將事件轉(zhuǎn)換為一個(gè)消息,并將消息放入目標(biāo)程序的消息隊(duì)列之中。應(yīng)用程序現(xiàn)在的任務(wù)就是執(zhí)行消息循環(huán)代碼,不斷地從消息隊(duì)列中取出消息,進(jìn)行處理。//消息循環(huán)while(GetMessage(&Msg,hMainWnd)){

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}程序架構(gòu)6、窗口過程函數(shù)staticintHelloWinProc(HWNDhWnd,intmessage,WPARAMwParam,LPARAMlParam)

{

HDChdc;

switch(message){

//創(chuàng)建時(shí)發(fā)送的消息,用來做初始化處理

caseMSG_PAINT:

hdc=BeginPaint(hWnd);

TextOut(hdc,100,100,“Hello,MiniGui!”);//屏幕輸出

EndPaint(hWnd,hdc);

return0;//表明不需要進(jìn)入默認(rèn)處理函數(shù)中//結(jié)束時(shí)一些處理函數(shù),單擊窗口右上角關(guān)閉按鈕,發(fā)送MSG_CLOSE消息,主要銷毀主窗口和發(fā)送quit消息以退出消息循環(huán)

caseMSG_CLOSE:

DestroyMainWindow(hWnd);

PostQ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論