• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于嵌入式MINIGUI控件子類化技術(shù)的深入研究與應(yīng)用

    2011-01-23 09:57:58
    中國新技術(shù)新產(chǎn)品 2011年3期
    關(guān)鍵詞:控件實例嵌入式

    王 丹

    (安徽理工大學(xué)計算機學(xué)院,安徽 淮南 232001)

    基于嵌入式MINIGUI控件子類化技術(shù)的深入研究與應(yīng)用

    王 丹

    (安徽理工大學(xué)計算機學(xué)院,安徽 淮南 232001)

    文章討論一種MINIGUI控件子類化過程中的新方法。MINIGUI是一種有效的圖形用戶界面,子類化是對控件類的擴展。文章中提出了一種新的對于MINIGUI中控件子類化設(shè)計過程中數(shù)據(jù)保存的方法,該方法能有效的應(yīng)用到MINIGUI的軟件開發(fā)中,從而提高MINIGUI系統(tǒng)在嵌入式應(yīng)用當(dāng)中的競爭力。

    MINIGUI;控件;子類化;嵌入式

    1 MINIGUI圖形系統(tǒng)

    MINIGUI是GUI圖形界面系統(tǒng)中的一種,其開發(fā)的目的是為基于LINUX的實時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。它為應(yīng)用程序定義了一組輕量級的窗口和圖形設(shè)備接口。利用這些接口,每個應(yīng)用程序可以建立多個窗口,而且可以在這些窗口中繪制圖形互不影響。用戶還可以利用MINIGUI建立菜單、按鈕、列表框等常見的GUI元素。利用MINIGUI足可以實現(xiàn)任何絢麗多姿的界面效果及交互應(yīng)用。

    2 控件類與控件的子類化

    在MINIGUI中子類化的方法有三種:1)對已經(jīng)建立的控件實例進行子類化,子類化的結(jié)果只會影響一個控件實例。2)對某個控件類進行子類化,將影響其后創(chuàng)建的所有該控件累的控件實例;3)在某個控件類的基礎(chǔ)上新注冊一個子類化的控件類,不會影響原有控件類。

    3 傳統(tǒng)子類化設(shè)計的不足與改進

    3.1 傳統(tǒng)設(shè)計

    在MINIGUI庫中的struct_MAINWIN結(jié)構(gòu)中有一些兩成員,如下:

    MINIGUI中,dwAddData2是供控件實現(xiàn)中保存數(shù)據(jù)使用的,dwAddData則提供給用戶再次使用。由此可以肯定我們設(shè)計子類化控件的時候,子類化控件的數(shù)據(jù)不應(yīng)該保存在dwAddData2中,如果保存在dwAddData2中,預(yù)定義控件中的數(shù)據(jù)就會丟失,而我們的子類化控件是基于預(yù)定義控件類或者控件實例基礎(chǔ)上的。為此,傳統(tǒng)設(shè)計方法中變量dwAddData則會成為我們的選擇。

    3.2 傳統(tǒng)方式的應(yīng)用。

    子類化控件設(shè)計的應(yīng)用非常廣泛,圖1即通過重載已有編輯框而實現(xiàn)的子類化控件的應(yīng)用,在該應(yīng)用中傳統(tǒng)方式設(shè)計的子類化控件得到了很好的應(yīng)用,而且設(shè)計設(shè)計方法簡單。

    圖 1

    3.3 子類化設(shè)計過程中的不足與改進

    3.3.1 不足。傳統(tǒng)子類化設(shè)計滿足了簡單常規(guī)的應(yīng)用,但是在復(fù)雜設(shè)計中,我們會遇到這樣的問題,當(dāng)這樣的子類化控件與預(yù)定義控件進行內(nèi)嵌使用時,往往會出現(xiàn)問題,原因就在于我們前面?zhèn)鹘y(tǒng)方式設(shè)計中采用了用dwAddData保存子類化中的數(shù)據(jù)。

    MINIGUI在設(shè)計時采用了在struct_MAINWIN結(jié)構(gòu)中定義兩個附加數(shù)據(jù)變量來保存數(shù)據(jù),其目的就是為了保證控件數(shù)據(jù)不被丟失,保證用戶不會使用內(nèi)部數(shù)據(jù),從而為用戶專門定義了一個變量來保存他們用到的數(shù)據(jù)。而二次開發(fā)者與應(yīng)用開發(fā)者同樣是MINIGUI庫的使用者,從而導(dǎo)致了兩者之間對dwAdd-Data的重復(fù)使用。

    3.3.2 改進與應(yīng)用。在這里我們提出一種更加有效合理的方法:在內(nèi)部控件中增加一個獲取內(nèi)部保存在adddation2中的結(jié)構(gòu)體變量大小的消息,供編寫外部擴展控件時使用,另外還得再window.h中增加這個消息的定義。該消息這里定義為MSG_GETPRIVATEDATASIZE。在編寫擴展控件時,MSG_CREATE消息中malloc一個指針內(nèi)存,該內(nèi)存大小為內(nèi)部獲得的結(jié)構(gòu)體變量大小與擴展控件的結(jié)構(gòu)體變量大小之和,將這兩個結(jié)構(gòu)體保存在p中,內(nèi)部的在前,擴展的在后,并將p的內(nèi)容保存在adddation2中,注意的是在取出原結(jié)構(gòu)體變量內(nèi)容后應(yīng)free adddation2,再保存p的內(nèi)容。當(dāng)消息不是MSG_CREATE時,adddation2中取出的數(shù)據(jù)為p的內(nèi)容,所以擴展控件要使用,p必須加上獲取的內(nèi)部結(jié)構(gòu)體大小,才是擴展控件中定義的結(jié)構(gòu)體的地址。

    以下代碼是基于spinbox子類化控件中的應(yīng)用實現(xiàn)方法(部分代碼):

    結(jié)論

    文章中提出的設(shè)計方法,有效的解決了多控件內(nèi)嵌的問題,使開發(fā)人員可以方便的設(shè)計出令人滿意的,并且完美的子類化控件。

    [1]北京飛漫軟件有限公司.MiniGUI編程指南[M].2006.

    [2]北京飛漫軟件有限公司.MINIGUI用戶手冊[S].2006.

    [3]北京飛漫軟件有限公司.MINIGUI技術(shù)白皮書[M].2006.

    [4]楊宗德,鄧玉春.Linux高級程序設(shè)計(第2版).北京.人民郵電出版社,2009.

    TP7

    A

    猜你喜歡
    控件實例嵌入式
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    搭建基于Qt的嵌入式開發(fā)平臺
    嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
    完形填空Ⅱ
    完形填空Ⅰ
    Altera加入嵌入式視覺聯(lián)盟
    倍福 CX8091嵌入式控制器
    自動化博覽(2014年4期)2014-02-28 22:31:15
    就這樣玩會VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    在PowerBuUder中利用WinSock控件制作簡單的Web服務(wù)器
    VB.NET中ListBox控件實現(xiàn)流程跟蹤
    朝阳县| 三亚市| 德安县| 营口市| 双流县| 渑池县| 维西| 武宣县| 六枝特区| 蓬溪县| 长治市| 上蔡县| 凉城县| 交口县| 湖北省| 呼玛县| 美姑县| 韩城市| 城步| 南川市| 福海县| 祁东县| 东兰县| 深州市| 武乡县| 喀什市| 镇沅| 三穗县| 屯昌县| 尉犁县| 昌平区| 原平市| 富平县| 昌江| 霍林郭勒市| 房山区| 万山特区| 甘洛县| 凉城县| 报价| 邵阳市|