亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法和裝置與流程

文檔序號(hào):12176049閱讀:1243來源:國(guó)知局
一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法和裝置與流程

本發(fā)明涉及Windows平臺(tái)下界面開發(fā)技術(shù)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法和裝置。



背景技術(shù):

在客戶端界面程序中,經(jīng)常需要處理多個(gè)彈出式窗口之間跟隨移動(dòng)的場(chǎng)景,比如鼠標(biāo)拖動(dòng)主界面窗口時(shí),主界面上彈出的一個(gè)氣泡提示窗口也需要跟著主界面窗口一起移動(dòng),保證氣泡總是指向主界面窗口上的同一位置。

目前實(shí)現(xiàn)窗口跟隨的一般有下面這兩種方式:

宿主窗口響應(yīng)位置改變事件:在宿主窗口中,響應(yīng)自己的位置改變、大小改變事件,修改跟隨窗口的位置和大小。這種實(shí)現(xiàn)方式不能通用,如果存在多個(gè)宿主窗口,則需要在每一個(gè)宿主窗口中添加相應(yīng)的代碼邏輯。該方法是在得到宿主窗口的移動(dòng)事件后,再讓跟隨窗口進(jìn)行跟隨移動(dòng)的。因此宿主窗口的移動(dòng)和跟隨窗口的移動(dòng)之間存在一些的時(shí)間差,導(dǎo)致兩者之間的移動(dòng)不同步。

使用Hook攔截宿主窗口的位置改變事件:通過Windows Hook技術(shù),攔截宿主窗口的位置改變事件,將這個(gè)事件通知給所有的跟隨窗口,由跟隨窗口完成自己的跟隨移動(dòng)邏輯。由于涉及到Hook,使得該方式比較復(fù)雜,容易出錯(cuò),性能上也比單獨(dú)處理宿主窗口消息的方式低,并且依然存在窗口之間的跟隨不同步的問題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供了一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法和裝置,以克服上述方法的不足,實(shí)現(xiàn)多個(gè)窗口沒有時(shí)間差的同步移動(dòng)。

依據(jù)本發(fā)明的一個(gè)方面,本發(fā)明提供了一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法,該方法包括:

在宿主窗口移動(dòng)或改變大小時(shí),宿主窗口收到窗口正在改變的消息,所述消息中包括宿主窗口的新位置參數(shù);

判斷所述宿主窗口的跟隨窗口列表中的跟隨窗口數(shù)量是否為0,所述跟隨列表中包括每個(gè)跟隨窗口對(duì)應(yīng)的跟隨參數(shù);

如果不為0,則改變所述窗口正在改變的消息的參數(shù),阻止所述宿主窗口本次的位置改變;

根據(jù)所述宿主窗口的新位置參數(shù)計(jì)算所述宿主窗口的新位置和根據(jù)所述跟隨窗口列表中每個(gè)跟隨窗口的跟隨參數(shù)計(jì)算所述每個(gè)跟隨窗口的新位置;

開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的所述宿主窗口的新位置和所述跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng)。

其中,所述方法還包括:判斷所述宿主窗口的跟隨窗口列表中的跟隨窗口數(shù)量如果為0,則進(jìn)行所述宿主窗口本次的位置改變。

其中,所述在宿主窗口移動(dòng)或改變大小之前,所述方法還包括:

所述宿主窗口接收跟隨窗口發(fā)送的注冊(cè)消息,所述注冊(cè)消息中攜帶所述跟隨窗口的跟隨參數(shù);

所述宿主窗口將所述跟隨窗口添加到跟隨窗口列表中,并保存該跟隨窗口的跟隨參數(shù)。

其中,所述改變所述窗口正在改變的消息的參數(shù),阻止所述宿主窗口本次的位置改變包括:

在所述窗口正在改變的消息中強(qiáng)制添加兩個(gè)參數(shù),一個(gè)為表示拒絕宿主窗口本次的位置修改的參數(shù),另一個(gè)為表示拒絕宿主窗口本次的大小修改的參數(shù),通過該兩個(gè)參數(shù)阻止所述宿主窗口本次的位置改變。

其中,所述宿主窗口開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的所述宿主窗口的新位置和所述跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng)包括:

所述宿主窗口計(jì)算出自己即將移動(dòng)到的新位置,并計(jì)算出所述跟隨窗口列表中的跟隨窗口數(shù)量,開啟多窗口同步移動(dòng)操作;

遍歷所述跟隨窗口列表,計(jì)算每個(gè)跟隨窗口的新位置,將每個(gè)跟隨窗口和所述宿主窗口加入到所述多窗口同步移動(dòng)操作中;

所述宿主窗口計(jì)算出自己最終移動(dòng)到的新位置,完成所有窗口的同步移動(dòng)操作。

依據(jù)本發(fā)明的另一方面,本發(fā)明提供了一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的裝置,該裝置包括:

消息接收單元,用于在宿主窗口移動(dòng)或改變大小時(shí),宿主窗口收到窗口正在改變的消息,所述消息中包括宿主窗口的新位置參數(shù);

跟隨窗口數(shù)量判斷單元,用于判斷所述宿主窗口的跟隨窗口列表中的跟隨窗口數(shù)量是否為0,所述跟隨列表中包括每個(gè)跟隨窗口對(duì)應(yīng)的跟隨參數(shù);;

移動(dòng)處理單元,用于在跟隨窗口數(shù)量不為0時(shí),則改變所述窗口正在改變的消息的參數(shù),阻止所述宿主窗口本次的位置改變;

多窗口同步移動(dòng)單元,用于根據(jù)所述宿主窗口的新位置參數(shù)計(jì)算所述宿主窗口的新位置和根據(jù)所述跟隨窗口列表中每個(gè)跟隨窗口的跟隨參數(shù)計(jì)算所述每個(gè)跟隨窗口的新位置;以及開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的所述宿主窗口的新位置和所述跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng)。

其中,所述移動(dòng)處理單元,還用于在跟隨窗口數(shù)量為0時(shí),進(jìn)行所述宿主窗口本次的位置改變。

其中,所述裝置還包括:

跟隨窗口注冊(cè)單元,用于所述宿主窗口接收跟隨窗口發(fā)送的注冊(cè)消息,所述注冊(cè)消息中攜帶所述跟隨窗口的跟隨參數(shù);所述宿主窗口將所述跟隨窗口添加到跟隨窗口列表中,并保存該跟隨窗口的跟隨參數(shù)。

其中,所述移動(dòng)處理單元具體用于,在所述窗口正在改變的消息中強(qiáng)制添加兩個(gè)參數(shù),一個(gè)為表示拒絕宿主窗口本次的位置修改的參數(shù),另一個(gè)為 表示拒絕宿主窗口本次的大小修改的參數(shù),通過該兩個(gè)參數(shù)阻止所述宿主窗口本次的位置改變。

其中,所述多窗口同步移動(dòng)單元包括:

同步移動(dòng)開啟模塊,用于所述宿主窗口計(jì)算出自己即將移動(dòng)到的新位置,并計(jì)算出所述跟隨窗口列表中的跟隨窗口數(shù)量,開啟多窗口同步移動(dòng)操作;

同步移動(dòng)操作模塊,用于遍歷所述跟隨窗口列表,計(jì)算每個(gè)跟隨窗口的新位置,將每個(gè)跟隨窗口和所述宿主窗口加入到所述多窗口同步移動(dòng)操作中;

同步移動(dòng)結(jié)束模塊,用于所述宿主窗口計(jì)算出自己最終移動(dòng)到的新位置,完成所有窗口的同步移動(dòng)操作。

本發(fā)明實(shí)施例的有益效果是:本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法和裝置,當(dāng)宿主窗口收到窗口正在改變的消息時(shí),通過判斷其跟隨窗口列表中的跟隨窗口數(shù)量是否為0判定本次是單個(gè)窗口的移動(dòng)還是多個(gè)窗口的移動(dòng),若是多個(gè)窗口的移動(dòng),因?yàn)樾枰獙?shí)現(xiàn)多個(gè)窗口的同步移動(dòng),所以不能讓宿主窗口單獨(dú)先完成或后完成自己的移動(dòng),則通過修改該窗口正在改變的消息的參數(shù)來阻止宿主窗口本次的位置改變;之后由宿主窗口開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的宿主窗口的新位置和跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng),由于該同步移動(dòng)是將所有的窗口統(tǒng)一同時(shí)更新位置,所以不存在時(shí)間差,由此解決了現(xiàn)有技術(shù)中窗口之間的跟隨不同步的問題。

附圖說明

圖1為本發(fā)明提供的一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法流程圖;

圖2是本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法的一個(gè)具體流程圖;

圖3是本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的裝置的結(jié)構(gòu)示意圖;

圖4是本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的裝置中所述多窗口同步移動(dòng)單元的結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。

本發(fā)明提供了一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法和裝置,以克服現(xiàn)有多窗口移動(dòng)方案中各窗口之間移動(dòng)存在時(shí)間差的問題,能夠?qū)崿F(xiàn)所有窗口的同步移動(dòng)。

本發(fā)明的整體思路是:要實(shí)現(xiàn)多個(gè)窗口的同步移動(dòng),則應(yīng)該將這些窗口作為一個(gè)整體進(jìn)行移動(dòng),而不能在宿主窗口移動(dòng)后,再依次移動(dòng)各個(gè)跟隨窗口。在Windows操作系統(tǒng)中,一個(gè)窗口位置改變的過程會(huì)觸發(fā)以下一些消息:

WM_MOVING窗口正在移動(dòng)

WM_SIZING窗口正在改變大小

WM_WINDOWPOSCHANGING窗口正在移動(dòng)/改變大小

WM_WINDOWPOSCHANGED窗口已移動(dòng)/改變大小

WM_MOVE窗口已移動(dòng)

WM_SIZE窗口已改變大小。

其中,WM_MOVING消息在窗口移動(dòng)時(shí)觸發(fā),WM_SIZING消息在窗口改變大小時(shí)觸發(fā),WM_MOVE消息與WM_SIZE消息在窗口已經(jīng)移動(dòng)/改變大小后觸發(fā),而WM_WINDOWPOSCHANGED消息是在窗口移動(dòng)/改變大小后觸發(fā),因此WM_WINDOWPOSCHANGING消息最適合用于窗口同步移動(dòng)。

在窗口正在移動(dòng)/改變大小WM_WINDOWPOSCHANGING消息中,通過修改其參數(shù)可以阻止窗口的本次調(diào)整。暫時(shí)阻止宿主窗口的本次改變之后,再由宿主窗口調(diào)用DeferWindowPos系列API的方法實(shí)現(xiàn)拖動(dòng)一個(gè)窗口,多個(gè)窗口同步移動(dòng),完成宿主窗口和跟隨窗口的同步移動(dòng)。

圖1為本發(fā)明提供的一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法流程圖。

步驟S10:在宿主窗口移動(dòng)或改變大小時(shí),宿主窗口收到窗口正在改變的消息,所述消息中包括宿主窗口的新位置參數(shù);

步驟S20:判斷所述宿主窗口的跟隨窗口列表中的跟隨窗口數(shù)量是否為 0,所述跟隨列表中包括每個(gè)跟隨窗口對(duì)應(yīng)的跟隨參數(shù);

步驟S30:如果不為0,則改變所述窗口正在改變的消息的參數(shù),阻止所述宿主窗口本次的位置改變;

步驟S40:根據(jù)所述宿主窗口的新位置參數(shù)計(jì)算所述宿主窗口的新位置和根據(jù)所述跟隨窗口列表中每個(gè)跟隨窗口的跟隨參數(shù)計(jì)算所述每個(gè)跟隨窗口的新位置;

步驟S50:開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的所述宿主窗口的新位置和所述跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng)。

本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法,當(dāng)宿主窗口收到窗口正在改變的消息時(shí),通過判斷其跟隨窗口列表中的跟隨窗口數(shù)量是否為0判定本次是單個(gè)窗口的移動(dòng)還是多個(gè)窗口的移動(dòng),若是多個(gè)窗口的移動(dòng),因?yàn)樾枰獙?shí)現(xiàn)多個(gè)窗口的同步移動(dòng),所以不能讓宿主窗口單獨(dú)先完成或后完成自己的移動(dòng),則通過修改該窗口正在改變的消息的參數(shù)來阻止宿主窗口本次的位置改變;之后由宿主窗口開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的宿主窗口的新位置和跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng),由于該同步移動(dòng)是將所有的窗口統(tǒng)一同時(shí)更新位置,所以不存在時(shí)間差,由此解決了現(xiàn)有技術(shù)中窗口之間的跟隨不同步的問題。

圖2是本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法的一個(gè)具體流程圖。參見圖2,該方法包括:

步驟S101:宿主窗口初始化。

步驟S102:跟隨窗口計(jì)算出自己的跟隨參數(shù)之后,向所述宿主窗口發(fā)送注冊(cè)消息進(jìn)行注冊(cè),所述宿主窗口將所述跟隨窗口添加到跟隨列表中,保存其跟隨參數(shù),并根據(jù)這些參數(shù)來調(diào)整該跟隨窗口的位置與大小。

跟隨參數(shù)主要用于標(biāo)識(shí)跟隨窗口在宿主窗口上的位置,包括:左對(duì)齊、右對(duì)齊、上對(duì)齊、下對(duì)齊、跟隨窗口的寬度、跟隨窗口的高度等。例如一個(gè)窗口上的氣泡跟隨參數(shù)可以設(shè)置為:(右對(duì)齊20px,上對(duì)齊20px,寬度200px, 高度50px),表示該氣泡的位置總是位于距離窗口右側(cè)20像素,距離窗口頂部20像素的地方,并且該氣泡的大小固定為200像素寬,50像素高。

步驟S103:用鼠標(biāo)拖動(dòng)窗口,移動(dòng)所述宿主窗口或改變所述宿主窗口大小。

步驟S104:所述宿主窗口收到窗口正在改變的消息:窗口正在改變的消息為WM_WINDOWPOSCHANGING,在該消息中包括宿主窗口的新位置參數(shù)。

步驟S105:判斷跟隨窗口列表數(shù)量,如果為0,判斷沒有跟隨窗口則轉(zhuǎn)到步驟S100,對(duì)WM_WINDOWPOSCHANGING消息不處理,交由系統(tǒng)繼續(xù)完成本次宿主窗口的位置改變,之后結(jié)束操作;如果不為0,判斷有跟隨窗口則執(zhí)行步驟S106。

步驟S106:所述宿主窗口從收到的WM_WINDOWPOSCHANGING消息中計(jì)算出自己即將移動(dòng)到的新位置。

步驟S107:所述宿主窗口為所述WM_WINDOWPOSCHANGING消息強(qiáng)制添加兩個(gè)參數(shù):SWP_NOMOVE、SWP_NOSIZE,其中SWP_NOMOVE表示拒絕窗口本次的位置修改,SWP_NOSIZE表示拒絕窗口本次的大小修改,以阻止所述宿主窗口本次的位置改變。之后執(zhí)行步驟S108。

在Windows操作系統(tǒng)中,修改窗口位置或大小的方法主要包含:

MoveWndow、SetWindowPos、BeginDeferWindowPos/DeferWindowPos/EndDefWindowPos等。

MoveWindow和SetWindowPos主要是針對(duì)單個(gè)窗口的調(diào)整,而DeferWindowPos系列函數(shù)則是針對(duì)一組窗口的調(diào)整,即批量調(diào)整。本發(fā)明使用的就是DeferWindowPos系列函數(shù)來達(dá)到宿主窗口和所有跟隨窗口同步移動(dòng)。

步驟S108:所述宿主窗口開啟多窗口同步移動(dòng)操作,計(jì)算出所述跟隨窗口列表中的跟隨窗口數(shù)量,記為count,調(diào)用BeginDeferWindowPos(count+1),表明將有count+1個(gè)窗口將要調(diào)整位置,+1表示宿主窗口也同步移動(dòng)。之后 執(zhí)行步驟S109。

步驟S109:所述宿主窗口遍歷跟隨窗口列表,判斷所述跟隨窗口列表中是否有未被讀取的跟隨窗口記錄,若是,則讀取該條記錄,并執(zhí)行步驟S110;否則,執(zhí)行步驟S112。

步驟S110:根據(jù)所述宿主窗口的新位置和該跟隨窗口的跟隨參數(shù),計(jì)算出該跟隨窗口的新位置。

步驟S111:為該跟隨窗口調(diào)用DeferWindowPos,將該跟隨窗口加入到所述多窗口同步移動(dòng)操作中;并返回步驟S109繼續(xù)讀取下一條跟隨窗口記錄。

步驟S112:所述宿主窗口調(diào)用DeferWindowPos,將自己也加入到所述多窗口同步移動(dòng)操作中。

步驟S113:所述宿主窗口從收到的WM_WINDOWPOSCHANGED消息計(jì)算出自己最終移動(dòng)到的新位置,調(diào)用EndDeferWindowPos,完成所有窗口的同步移動(dòng)操作。

至此就完成了所有跟隨窗口對(duì)宿主窗口的同步移動(dòng)。

圖3是本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的裝置的結(jié)構(gòu)示意圖;圖4是本發(fā)明提供的實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的裝置中所述多窗口同步移動(dòng)單元的結(jié)構(gòu)示意圖。參見圖3、圖4,該裝置包括:

消息接收單元200,用于在宿主窗口移動(dòng)或改變大小時(shí),宿主窗口收到窗口正在改變的消息,所述消息中包括宿主窗口的新位置參數(shù);

跟隨窗口數(shù)量判斷單元210,用于判斷所述宿主窗口的跟隨窗口列表中跟隨窗口數(shù)量是否為0,所述跟隨列表中包括每個(gè)跟隨窗口對(duì)應(yīng)的跟隨參數(shù);

移動(dòng)處理單元220,用于在在跟隨窗口數(shù)量不為0時(shí),改變所述窗口正在改變的消息的參數(shù),以阻止所述宿主窗口本次的位置改變;

多窗口同步移動(dòng)單元230,用于根據(jù)所述宿主窗口的新位置參數(shù)計(jì)算所述宿主窗口的新位置和根據(jù)所述跟隨窗口列表中每個(gè)跟隨窗口的跟隨參數(shù)計(jì) 算所述每個(gè)跟隨窗口的新位置;以及開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的所述宿主窗口的新位置和所述跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng)。

其中,所述移動(dòng)處理單元220,還用于在跟隨窗口數(shù)量為0時(shí),進(jìn)行所述宿主窗口本次的位置改變。

其中,所述裝置還包括:

跟隨窗口注冊(cè)單元240,用于所述宿主窗口接收跟隨窗口發(fā)送的注冊(cè)消息,所述注冊(cè)消息中攜帶所述跟隨窗口的跟隨參數(shù);所述宿主窗口將所述跟隨窗口添加到跟隨窗口列表中,并保存該跟隨窗口的跟隨參數(shù)。

所述宿主窗口根據(jù)跟隨窗口的跟隨參數(shù)調(diào)整該跟隨窗口的位置與大小。

其中,所述移動(dòng)處理單元220具體用于,所述窗口正在改變的消息為WM_WINDOWPOSCHANGING消息,在跟隨窗口數(shù)量不為0時(shí),所述宿主窗口為所述WM_WINDOWPOSCHANGING消息強(qiáng)制添加兩個(gè)標(biāo)記:

SWP_NOMOVE、SWP_NOSIZE,其中SWP_NOMOVE表示拒絕宿主窗口本次的位置修改,SWP_NOSIZE表示拒絕宿主窗口本次的大小修改,以阻止所述宿主窗口本次的位置改變。

其中,參見圖4,所述多窗口同步移動(dòng)單元230包括:

同步移動(dòng)開啟模塊310,用于所述宿主窗口計(jì)算出自己即將移動(dòng)到的新位置,并計(jì)算出所述跟隨窗口列表中的跟隨窗口數(shù)量,記為count,調(diào)用BeginDeferWindowPos(count+1),開啟多窗口同步移動(dòng)操作;

同步移動(dòng)操作模塊320,用于所述宿主窗口遍歷所述跟隨窗口列表,根據(jù)所述宿主窗口的新位置和每個(gè)跟隨窗口的跟隨參數(shù),計(jì)算出該跟隨窗口的新位置,為該跟隨窗口調(diào)用DeferWindowPos,將該跟隨窗口加入到所述多窗口同步移動(dòng)操作中;所述宿主窗口調(diào)用DeferWindowPos,將自己也加入到所述多窗口同步移動(dòng)操作中;

同步移動(dòng)結(jié)束模塊330,用于所述宿主窗口計(jì)算出自己最終移動(dòng)到的新位置,調(diào)用EndDeferWindowPos,完成所有窗口的同步移動(dòng)操作。

其中,所述宿主窗口從收到的WM_WINDOWPOSCHANGING消息中計(jì)算出自己即將移動(dòng)到的新位置,從收到的WM_WINDOWPOSCHANGED消息計(jì)算出自己最終移動(dòng)到的新位置。

綜上所述,本發(fā)明提供的一種實(shí)現(xiàn)多個(gè)窗口同步移動(dòng)的方法和裝置,當(dāng)宿主窗口收到窗口正在改變的消息時(shí),通過判斷跟隨窗口列表中的跟隨窗口數(shù)量是否為0判定本次是單個(gè)窗口的移動(dòng)還是多個(gè)窗口的移動(dòng),若是多個(gè)窗口的移動(dòng),因?yàn)樾枰獙?shí)現(xiàn)多個(gè)窗口的同步移動(dòng),所以不能讓宿主窗口單獨(dú)先完成或后完成自己的移動(dòng),則通過修改該窗口正在改變的消息的參數(shù)來阻止宿主窗口本次的位置改變;之后由宿主窗口開啟多窗口同步移動(dòng)操作,根據(jù)計(jì)算出的宿主窗口的新位置和跟隨窗口列表中每個(gè)跟隨窗口的新位置,完成所有窗口的同步移動(dòng),由于該同步移動(dòng)是將所有的窗口統(tǒng)一同時(shí)更新位置,所以不存在時(shí)間差,由此解決了現(xiàn)有技術(shù)中窗口之間的跟隨不同步的問題。

本發(fā)明實(shí)施例首先通過修改WM_WINDOWPOSCHANGING的參數(shù),阻止宿主窗口的位置改變,之后通過DeferWindowPos系列API實(shí)現(xiàn)拖動(dòng)一個(gè)窗口,多個(gè)窗口的同步移動(dòng)的效果,解決了時(shí)間差的問題,實(shí)現(xiàn)了所有窗口同時(shí)更新位置??梢灶A(yù)期的是,通過擴(kuò)展跟隨參數(shù)、監(jiān)聽宿主窗口或跟隨窗口的位置移動(dòng)范圍可以實(shí)現(xiàn)更復(fù)雜的跟隨邏輯,例如跟隨窗口在某些情況下禁止跟隨、窗口磁性吸附、磁性分離等。

以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1