一種基于windows的窗口繪制方法及繪制裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種基于windows的窗口繪制方法及繪制
目.ο
【背景技術(shù)】
[0002]傳統(tǒng)的windows窗口設(shè)計(jì)采用創(chuàng)建一個(gè)主窗口作為父窗口,并為該窗口設(shè)置屬性,搭載相應(yīng)功能的子控件,子控件由句柄進(jìn)行操作,其中Windows為開(kāi)發(fā)者封裝了許多帶有基礎(chǔ)功能的子控件,創(chuàng)建子控件,用于實(shí)現(xiàn)不同的功能,但是該種形式的子控件的信息容易被截獲,使得整個(gè)窗口的安全性得不到保障?,F(xiàn)出現(xiàn)無(wú)窗口繪制(DirectUI),其原理為在父窗口上繪圖,即子窗口不以窗口句柄的方式創(chuàng)建,只是邏輯上的窗口,繪制在父窗口上,并封裝響應(yīng)功能的子控件,賦予子控件相應(yīng)的功能屬性,然而現(xiàn)有封裝需要對(duì)每一個(gè)響應(yīng)功能的子控件進(jìn)行封裝,對(duì)于中小型用戶來(lái)說(shuō),時(shí)間、物質(zhì)成本過(guò)于高昂。
【發(fā)明內(nèi)容】
[0003]有鑒于此,實(shí)有必要提供一種可統(tǒng)一封裝所有的子控件的窗口繪制方法。
[0004]本發(fā)明實(shí)施例提供的一種基于windows的窗口繪制方法,包括步驟:定義與窗口和子控件特征相關(guān)的數(shù)據(jù);基于所述與窗口和子控件特征相關(guān)的數(shù)據(jù),在所述窗口的界面上進(jìn)行布局以及組織數(shù)據(jù)結(jié)構(gòu)并形成包含界面布局的組織結(jié)構(gòu)的數(shù)據(jù)鏈表;對(duì)所述與窗口和子控件特征相關(guān)的數(shù)據(jù)進(jìn)行統(tǒng)一封裝,用于定義所述子控件的基本功能和數(shù)據(jù)屬性集而使其子控件能夠?qū)崿F(xiàn)具體功能;以及讀取所述數(shù)據(jù)鏈表,獲取所述窗口界面布局的所述組織結(jié)構(gòu),并將所述組織結(jié)構(gòu)繪制在所述窗口上。
[0005]本發(fā)明實(shí)施例提供的一種基于windows的窗口繪制裝置,包括:數(shù)據(jù)定義模塊,用于與窗口和子控件特征相關(guān)的數(shù)據(jù);數(shù)據(jù)鏈表組織模塊,用于基于所述與窗口和子控件特征相關(guān)的數(shù)據(jù),在所述窗口的界面上進(jìn)行布局以及組織數(shù)據(jù)結(jié)構(gòu)并形成包含界面布局的組織結(jié)構(gòu)的數(shù)據(jù)鏈表;數(shù)據(jù)封裝模塊,用于對(duì)所述與窗口和子控件特征相關(guān)的數(shù)據(jù)進(jìn)行統(tǒng)一封裝,來(lái)定義所述子控件的基本功能和數(shù)據(jù)屬性集而使其子控件能夠?qū)崿F(xiàn)具體功能;以及窗口界面繪制模塊,用于讀取所述數(shù)據(jù)鏈表,獲取所述窗口界面布局的所述組織結(jié)構(gòu),并將所述組織結(jié)構(gòu)繪制在所述窗口上。
[0006]基于上述的窗口繪制方法和繪制裝置,定義了窗口和子控件特征的數(shù)據(jù)后,在窗口上進(jìn)行布局而形成數(shù)據(jù)鏈表,根據(jù)數(shù)據(jù)鏈表的信息而將子控件直接繪制在窗口上,此外,通過(guò)統(tǒng)一封裝所有與窗口和子控件特征相關(guān)的數(shù)據(jù)來(lái)賦予子控件相應(yīng)的功能屬性,而不需要針對(duì)每一個(gè)響應(yīng)功能的子控件單獨(dú)進(jìn)行封裝,可節(jié)省資源和成本。
【附圖說(shuō)明】
[0007]圖1為基于windows的窗口繪制方法的一個(gè)實(shí)施例的流程圖。
[0008]圖2為基于windows的窗口繪制方法的另一個(gè)實(shí)施例的流程圖。
[0009]圖3為基于windows的窗口繪制裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
[0010]圖4為基于windows的窗口繪制裝置的另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0011]下面將結(jié)合本發(fā)明實(shí)施方式中的附圖,對(duì)實(shí)施方式中的技術(shù)方案進(jìn)行清楚、完整的描述。
[0012]無(wú)窗口繪制中子窗口不以窗口句柄的方式創(chuàng)建,只是邏輯上的窗口,繪制在父窗口上。例如,按鈕、圖片控件、文本控件、滾動(dòng)條、列表控件等邏輯子控件是不帶句柄的,只需描述了該子控件的功能和屬性信息,最后由父窗口繪制并響應(yīng)功能。其中,封裝是對(duì)邏輯上的子控件,且響應(yīng)功能的子控件,賦予子控件具有相應(yīng)的功能屬性。本實(shí)施例提供了一種基于windows的窗口繪制方法,其統(tǒng)一封裝子控件來(lái)定義其基本功能和屬性信息,使其具有了能夠?qū)崿F(xiàn)的具體功能,該窗口繪制方法包括基本步驟:
[0013]步驟S1,定義與窗口和子控件特征相關(guān)的數(shù)據(jù)。具體地,首先需要定義窗口和子控件的特征,其包括了窗口和子控件的位置特征、參數(shù)類(lèi)型結(jié)構(gòu)以及子控件的屬性特征。
[0014]步驟S2,基于與窗口和子控件特征相關(guān)的數(shù)據(jù),在所述窗口的界面上進(jìn)行布局以及組織數(shù)據(jù)結(jié)構(gòu)并形成包含界面布局的組織結(jié)構(gòu)的數(shù)據(jù)鏈表。具體地,無(wú)窗口繪制中子窗口不以窗口句柄的方式創(chuàng)建,只是邏輯上的窗口,繪制在父窗口上,本實(shí)施方式中,所述窗口即為父窗口,因此需要在窗口的界面上對(duì)子控件進(jìn)行布局,并組織成一個(gè)數(shù)據(jù)鏈表。該數(shù)據(jù)鏈表的結(jié)構(gòu)是一個(gè)物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),當(dāng)中的數(shù)據(jù)的邏輯順序是通過(guò)鏈表中的指針連接秩序?qū)崿F(xiàn)的。其中,該數(shù)據(jù)鏈表由一系列節(jié)點(diǎn)組成,節(jié)點(diǎn)包括兩個(gè)部分,一個(gè)是存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)的指針域。其中所在窗口上的界面布局的組織結(jié)構(gòu)中包含了窗口和子控件的位置特征、參數(shù)類(lèi)型、子控件的屬性特征的內(nèi)容,例如位置坐標(biāo)、子控件類(lèi)型、響應(yīng)空間ID等。
[0015]步驟S3,對(duì)與窗口和子控件特征相關(guān)的數(shù)據(jù)進(jìn)行統(tǒng)一封裝,用于定義所述子控件的基本功能和數(shù)據(jù)屬性集而使其子控件能夠?qū)崿F(xiàn)具體功能。具體地,封裝是針對(duì)響應(yīng)功能的子控件,賦予子控件具有相應(yīng)的功能屬性,將與窗口和子控件特征相關(guān)的數(shù)據(jù)統(tǒng)一封裝來(lái)定義子控件的功能,該基本功能包括點(diǎn)擊、雙擊事件、設(shè)置文本、圖片等;數(shù)據(jù)屬性集包括圖片、文本內(nèi)容、坐標(biāo)信息、子控件類(lèi)型、子控件ID等參數(shù)。
[0016]步驟S4,讀取該數(shù)據(jù)鏈表,獲取所述窗口界面布局的組織結(jié)構(gòu),并將所述組織結(jié)構(gòu)繪制在所述窗口上。具體地,根據(jù)所讀取的數(shù)據(jù)鏈表中的界面布局的組織結(jié)構(gòu)而繪制,以便將邏輯上的子控件繪制在窗口上。
[0017]上述步驟S2和步驟S3的之間執(zhí)行的先后順序不受限定,可先形成數(shù)據(jù)鏈表再統(tǒng)一封裝,由于數(shù)據(jù)鏈表包含所有與窗口和子控件特征相關(guān)的數(shù)據(jù),此時(shí)可直接封裝數(shù)據(jù)鏈表來(lái)定義子控件的基本功能和數(shù)據(jù)屬性集,也可以先統(tǒng)一封裝所有與窗口和子控件特征相關(guān)的數(shù)據(jù),再在窗口上布局形成數(shù)據(jù)鏈表,本實(shí)施例中優(yōu)選先在窗口上布局而形成數(shù)據(jù)鏈表再直接封裝該數(shù)據(jù)鏈表。
[0018]本實(shí)施例中,定義了窗口和子控件特征的數(shù)據(jù)后,在窗口上進(jìn)行布局而形成數(shù)據(jù)鏈表,根據(jù)數(shù)據(jù)鏈表的信息而將子控件直接繪制在窗口上,此外,通過(guò)統(tǒng)一封裝所有與窗口和子控件特征相關(guān)的數(shù)據(jù)來(lái)賦予子控件相應(yīng)的功能屬性,而不需要針對(duì)每一個(gè)響應(yīng)功能的子控件單獨(dú)進(jìn)行封裝,可節(jié)省資源和成本。
[0019]上述是基于windows的窗口繪制方法的基本步驟,下面將基于上述基本步驟對(duì)子控件在窗口上繪制以及響應(yīng)進(jìn)行詳細(xì)描述,請(qǐng)參看圖2,基于windows的窗口繪制方法的另一個(gè)實(shí)施例。
[0020]步驟S11,定義窗口和子控件的坐標(biāo)體系。具體地,首先需要定義窗口和子控件的坐標(biāo)特征,其包括了窗口和子控件的位置特征、參數(shù)類(lèi)型結(jié)構(gòu),例如窗口的界面坐標(biāo)、子控件類(lèi)型、子控件ID。
[0021]步驟S12,設(shè)計(jì)子控件的屬性體系。例如設(shè)計(jì)按鈕、編輯框、列表控件、滾動(dòng)條、文本框之類(lèi)子控件的屬性,該屬性包括文本、圖片、ID等。
[0022]需要說(shuō)明的是,窗口和子控件的坐標(biāo)體系和子控件的屬性體系均為與窗口和子控件特征相關(guān)的數(shù)據(jù),用于來(lái)表示窗口和子控件的特征。
[0023]步驟S13,基于坐標(biāo)體系和屬性體系的數(shù)據(jù),在所述窗口的界面上進(jìn)行布局以及組織數(shù)據(jù)結(jié)構(gòu)并形成包含界面布局的組織結(jié)構(gòu)的數(shù)據(jù)鏈表。具體地,基于坐標(biāo)體系和屬性體系的數(shù)據(jù),在窗口的界面上對(duì)子控件進(jìn)行布局,完成數(shù)據(jù)的組織結(jié)構(gòu)并形成一個(gè)數(shù)據(jù)鏈表。該與窗口上的界面布局相關(guān)的數(shù)據(jù)組織結(jié)構(gòu)中包含了子控件在窗口布局的位置特征、參數(shù)類(lèi)型、子控件的屬性特征的內(nèi)容,例如在窗口界面上,子控件的相應(yīng)的位置坐標(biāo)、子控件類(lèi)型、響應(yīng)子控件ID等。
[0024]步驟S14,對(duì)坐標(biāo)體系和屬性體系的數(shù)據(jù)進(jìn)行統(tǒng)一封裝,用于定義所述子控件的基本功能和數(shù)據(jù)屬性集而使其子控件能夠?qū)崿F(xiàn)具體功能。具體地,封裝是響應(yīng)功能的子控件,賦予子控件具有相應(yīng)的功能屬性,而具有可實(shí)現(xiàn)的具體功能前需要定義其子控件的基本功能和數(shù)據(jù)屬性集。基于窗口和子控件的坐標(biāo)、屬性體系中的數(shù)據(jù),通過(guò)統(tǒng)一封裝該數(shù)據(jù)來(lái)定賦予子控件可實(shí)現(xiàn)的具體功能。其中,基本功能包括點(diǎn)擊、雙擊事件、設(shè)置文本、圖片等;數(shù)據(jù)屬性集包括圖片、文本內(nèi)容、坐標(biāo)信息、子控件類(lèi)型、子控件ID等參數(shù)。本實(shí)施例中,數(shù)據(jù)鏈表中包含了坐標(biāo)體系和屬性體系的數(shù)據(jù),優(yōu)選直接封裝所有子控件的數(shù)據(jù)鏈表來(lái)完成封裝。
[0025]步驟S15,讀取所述數(shù)據(jù)鏈表,獲取所述窗口界面上的布局的組織結(jié)構(gòu),并將所述組織結(jié)構(gòu)繪制在所述窗口上。具體地,根據(jù)所讀取的數(shù)據(jù)鏈表中的布局的組織結(jié)構(gòu)而繪制來(lái)實(shí)現(xiàn)將邏輯上的子控件繪制在窗口上的功能。
[0026]步驟S16,讀取用戶單擊子控件的坐標(biāo)。具體地,當(dāng)用戶單擊案件子控件后,底層操作通過(guò)單擊的坐標(biāo),獲取數(shù)據(jù)鏈表中的組織結(jié)構(gòu)來(lái)獲取到相應(yīng)子控件,然后作出反應(yīng),例如,單擊打開(kāi)文本。
[0027]步驟S17,根據(jù)所述子控件的坐標(biāo)檢索所述數(shù)據(jù)鏈表獲取到響應(yīng)子控件數(shù)據(jù)信息而響應(yīng)。由于數(shù)據(jù)鏈表中的組織結(jié)構(gòu)包括了如在窗口界面上,子控件的相應(yīng)的位置坐標(biāo)、子控件類(lèi)型、響應(yīng)子控件ID等,當(dāng)根據(jù)用戶單擊的坐標(biāo)獲取到鏈表組織結(jié)構(gòu)而獲取到相應(yīng)的子控件來(lái)響應(yīng)。
[0028]需要說(shuō)明的是,步驟S16和步驟S17為針對(duì)用戶對(duì)子控件的操作進(jìn)行消息響應(yīng)處理的基本步驟,通過(guò)