国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種消息處理方法及裝置的制作方法

      文檔序號(hào):6443885閱讀:151來(lái)源:國(guó)知局
      專利名稱:一種消息處理方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及Windows消息處理技術(shù)領(lǐng)域,特別是涉及一種消息處理方法及裝置。
      背景技術(shù)
      Windows操作系統(tǒng)是一個(gè)消息(Mess age)驅(qū)動(dòng)系統(tǒng)。Windows的消息提供了應(yīng)用程序之間、應(yīng)用程序與Windows操作系統(tǒng)之間進(jìn)行通信的手段,應(yīng)用程序想要實(shí)現(xiàn)的功能由消息來(lái)觸發(fā),并且靠對(duì)消息的響應(yīng)和處理來(lái)完成。計(jì)算機(jī)的所有輸入設(shè)備由Windows統(tǒng)一進(jìn)行監(jiān)控。當(dāng)一個(gè)事件發(fā)生時(shí),Windows先將輸入的消息放入系統(tǒng)消息隊(duì)列中,再將消息拷貝到應(yīng)用程序相應(yīng)的線程消息隊(duì)列中。應(yīng)用程序的消息處理程序?qū)⒎磸?fù)檢測(cè)消息隊(duì)列,并把檢測(cè)到的消息進(jìn)行轉(zhuǎn)換后,分發(fā)到相應(yīng)的窗口函數(shù)中,由相應(yīng)的窗口函數(shù)對(duì)消息進(jìn)行處理。這便是一個(gè)事件從發(fā)生至到達(dá)窗口函數(shù)進(jìn)行處理所必須經(jīng)歷的過(guò)程。然而,在Windows操作系統(tǒng)中,消息并非是搶占性的,也即,無(wú)論事件的緩急,總是按照到達(dá)的先后依次進(jìn)行處理(一些系統(tǒng)消息除外),這樣可能會(huì)造成一些不利的影響。例如,可能會(huì)使一些實(shí)時(shí)外部事件得不到及時(shí)處理,或者,有些在后到達(dá)的消息可能必須趕在另一些在先到達(dá)的消息之前處理才能達(dá)到預(yù)定的效果,顯然,如果仍然按照這種先到先處理的機(jī)制,則顯然使這種情況成為不可能。因此,迫切需要本領(lǐng)域技術(shù)人員解決的技術(shù)問(wèn)題就在于,如何能更加靈活地對(duì)消息隊(duì)列中的消息進(jìn)行處理
      發(fā)明內(nèi)容
      本發(fā)明提供了一種消息處理方法及裝置,能夠?qū)Σ僮飨到y(tǒng)創(chuàng)建的消息隊(duì)列中的消息的順序進(jìn)行調(diào)整,從而更加靈活地對(duì)消息隊(duì)列中的消息進(jìn)行處理。
      本發(fā)明提供了如下方案
      一種消息處理方法,包括
      應(yīng)用程序創(chuàng)建一消息隊(duì)列;
      從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;
      將所取出的消息進(jìn)行順序調(diào)整,并放入所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中;
      按照所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中各消息的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。
      優(yōu)選地,所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息之后,還包括
      將所述取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除。
      其中,所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息包括
      從操作系統(tǒng)為指定線程創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;
      所述對(duì)各個(gè)消息進(jìn)行分發(fā)處理包括
      將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口,以便由所述對(duì)應(yīng)的窗口對(duì)各個(gè)消息進(jìn)行處理。
      其中,所述指定線程為與界面相關(guān)的線程。
      其中,所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息包括從操作系統(tǒng)創(chuàng)建的系統(tǒng)消息隊(duì)列中取出當(dāng)前的所有消息;所述對(duì)各個(gè)消息進(jìn)行分發(fā)處理包括將各個(gè)消息分發(fā)到操作系統(tǒng)為對(duì)應(yīng)的線程創(chuàng)建的消息隊(duì)列,以便由所述對(duì)應(yīng)的線程將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口進(jìn)行處理。一種消息處理裝置,包括隊(duì)列創(chuàng)建單元,用于應(yīng)用程序創(chuàng)建一消息隊(duì)列;消息取出單元,用于從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息,并將所述取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除;順序調(diào)整單元,用于將所取出的消息進(jìn)行順序調(diào)整,并放入所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中;消息分發(fā)單元,用于按照所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中各消息的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。優(yōu)選地,還包括清除單元,用于所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息之后,將所述取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除。其中,所述消息取出單元包括第一取出子單元,用于從操作系統(tǒng)為指定線程創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;所述消息分發(fā)單元包括第一分發(fā)子單元,用于將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口,以便由所述對(duì)應(yīng)的窗口對(duì)各個(gè)消息進(jìn)行處理。其中,所述指定線程為與界面相關(guān)的線程。其中,所述消息取出單元包括第二取出子單元,用于從操作系統(tǒng)創(chuàng)建的系統(tǒng)消息隊(duì)列中取出當(dāng)前的所有消息;所述消息分發(fā)單元包括第二分發(fā)子單元,用于將各個(gè)消息分發(fā)到操作系統(tǒng)為對(duì)應(yīng)的線程創(chuàng)建的消息隊(duì)列,以便由所述對(duì)應(yīng)的線程將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口進(jìn)行處理。根據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明達(dá)到了以下技術(shù)效果通過(guò)本發(fā)明實(shí)施例,由于應(yīng)用程序可以自行創(chuàng)建消息隊(duì)列,并將操作系統(tǒng)創(chuàng)建的消息隊(duì)列中的當(dāng)前消息取出,放入該自行創(chuàng)建的消息隊(duì)列中,從而使得消息的先后執(zhí)行順序是可以調(diào)整的,而不是一律地按照操作系統(tǒng)中規(guī)定的先到先處理的原則,這樣,可以更加靈活地對(duì)消息隊(duì)列中的消息進(jìn)行處理。例如,可以使得一些實(shí)時(shí)外部事件得到及時(shí)處理,并且,如果出現(xiàn)有些在后到達(dá)的消息必須趕在另一些在先到達(dá)的消息之前處理才能達(dá)到預(yù)定效果的情況,則可以將在后到達(dá)的消息提到在先到達(dá)的消息之前,從而達(dá)到預(yù)定效果。


      為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明實(shí)施例提供的方法的流程圖;圖2是本發(fā)明實(shí)施例提供的裝置的示意圖。
      具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。參見(jiàn)圖1,本發(fā)明實(shí)施例首先提供了一種消息處理方法,該方法可以應(yīng)用于一應(yīng)用程序中(該應(yīng)用程序可以是為實(shí)現(xiàn)該消息處理功能開(kāi)發(fā)的一種應(yīng)用程序,也可以是在已有其他應(yīng)用程序基礎(chǔ)上增加該消息處理功能),具體實(shí)現(xiàn)時(shí),該方法可以包括以下步驟SlOl :應(yīng)用程序創(chuàng)建一消息隊(duì)列;該消息隊(duì)列是由應(yīng)用程序自己創(chuàng)建的,因此,應(yīng)用程序可以自行決定其中的消息以怎樣的順序進(jìn)行排列,還可以自行對(duì)順序進(jìn)行調(diào)整。S102 :從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;為了更好地理解該步驟,下面首先對(duì)操作系統(tǒng)中的消息處理過(guò)程進(jìn)行簡(jiǎn)單地介紹。一般而言,一個(gè)消息(以外部輸入消息為例)從產(chǎn)生到最后被處理會(huì)經(jīng)歷以下過(guò)程 (I)當(dāng)鼠標(biāo)或者鍵盤(pán)有動(dòng)作時(shí),設(shè)備驅(qū)動(dòng)將輸入操作轉(zhuǎn)換為消息并將它放入到系統(tǒng)消息隊(duì)列中;(2)操作系統(tǒng)每次從系統(tǒng)消息隊(duì)列中移出一個(gè)消息時(shí),會(huì)判斷這個(gè)消息屬于哪個(gè)目標(biāo)窗口,然后將其分發(fā)到創(chuàng)建目標(biāo)窗口的線程的消息隊(duì)列里,換言之,線程的消息隊(duì)列為其創(chuàng)建的窗口接收所有鼠標(biāo)和鍵盤(pán)消息;(3)線程從它的消息隊(duì)列中移出消息并指引系統(tǒng)將這些消息分發(fā)到正確的窗口來(lái)對(duì)消息進(jìn)行處理??梢?jiàn),操作系統(tǒng)會(huì)創(chuàng)建兩種消息隊(duì)列,一種是系統(tǒng)消息隊(duì)列,所有消息都會(huì)先放入這個(gè)系統(tǒng)消息隊(duì)列;另一種是線程的消息隊(duì)列,需要由某線程創(chuàng)建的窗口處理的所有消息會(huì)放入該線程的消息隊(duì)列中。在本發(fā)明實(shí)施例中,可以從前述系統(tǒng)消息隊(duì)列中取出當(dāng)前的所有消息,也可以是從具體線程的消息隊(duì)列中取出當(dāng)前的所有消息。不過(guò)在實(shí)際應(yīng)用中,可能并不是所有的消息都有調(diào)整順序的需求,而是通常只有那些與界面相關(guān)的線程中的消息才會(huì)有這種需求, 因此,在優(yōu)選的實(shí)施方式中,可以僅從指定的一些線程的消息隊(duì)列中取出當(dāng)前的所有消息, 或者,還可以首先判斷當(dāng)前各個(gè)線程是否與界面相關(guān),如果相關(guān),則將其消息隊(duì)列中的消息取出,否則,可以不對(duì)其消息隊(duì)列中的消息進(jìn)行順序調(diào)整處理。當(dāng)然,還可以根據(jù)實(shí)際的需要來(lái)確定從哪些線程消息隊(duì)列中的消息進(jìn)行調(diào)整。需要說(shuō)明的是,操作系統(tǒng)創(chuàng)建的消息隊(duì)列中的消息,除了包括上述外部輸入的消息(也即由鼠標(biāo)鍵盤(pán)等產(chǎn)生的消息)之外,還可能包括系統(tǒng)消息(也即由操作系統(tǒng)產(chǎn)生的消息),此外,還可能包括操作系統(tǒng)中運(yùn)行的各個(gè)程序產(chǎn)生的消息,例如,某操作可能并不是立即處理,此時(shí),可以通過(guò)產(chǎn)生消息的方式進(jìn)行延后處理,再或者有些操作可能是需要跨線程執(zhí)行的,此時(shí),也可以先放到消息隊(duì)列中,然后分發(fā)到對(duì)應(yīng)的線程消息隊(duì)列中,等等。本發(fā)明實(shí)施例中,從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前消息時(shí),可以包括上述所有類型的消息,也即,所有消息,無(wú)論其來(lái)自于外部輸入還是操作系統(tǒng)還是系統(tǒng)中運(yùn)行的程序,都可以將其取出,放入到自行創(chuàng)建的消息隊(duì)列中,以便對(duì)順序進(jìn)行調(diào)整。當(dāng)然,一些系統(tǒng)消息的執(zhí)行順序可能是不允許調(diào)整的,此時(shí),可以不對(duì)這種系統(tǒng)消息進(jìn)行順序調(diào)整。另外需要說(shuō)明的是,具體在從系統(tǒng)創(chuàng)建的消息隊(duì)列中取出消息時(shí),可以利用操作系統(tǒng)提供的API (Application Programming Interface,應(yīng)用程序編程接口)函數(shù)等方式來(lái)進(jìn)行。例如,如果是從指定線程的消息隊(duì)列中取出消息,則可以直接使用以下API函數(shù) PeekMessage ;如果是從系統(tǒng)消息隊(duì)列中取出消息,則可以通過(guò)消息鉤子技術(shù),或者在驅(qū)動(dòng)層直接獲取所有消息來(lái)實(shí)現(xiàn),這里不再贅述。當(dāng)然,為了避免程序運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤,在從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的消息之后,還可以將取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除。S103 :將所取出的消息進(jìn)行順序調(diào)整,并放入所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中;可以將從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出的消息放入到應(yīng)用程序的消息隊(duì)列中, 在放入到該消息隊(duì)列的同時(shí),就可以對(duì)消息的順序進(jìn)行調(diào)整,當(dāng)然,也可以在放入到消息隊(duì)列中之后再對(duì)各個(gè)消息的順序進(jìn)行調(diào)整。具體對(duì)消息進(jìn)行調(diào)整的依據(jù)可以根據(jù)實(shí)際應(yīng)用中的需要來(lái)確定,例如,可以認(rèn)為一些與用戶交互相關(guān)的操作產(chǎn)生的消息是需要優(yōu)先處理的, 此時(shí),就可以將這樣的消息放入到消息隊(duì)列中比較靠前的位置。又如,假如用戶在看視頻, 那么視頻相關(guān)的操作就可能需要優(yōu)先操作,此時(shí),就可以將這種操作對(duì)應(yīng)的消息放入到消息隊(duì)列中比較靠前的位置。再如,如果用戶在看視頻時(shí),又進(jìn)行了其他操作,于是就可以認(rèn)為用戶的這個(gè)操作對(duì)應(yīng)的消息需要插隊(duì)、提前處理,等等。需要說(shuō)明的是,操作系統(tǒng)會(huì)對(duì)每個(gè)消息進(jìn)行編號(hào),每個(gè)消息具有自己的ID,消息中可以包含窗口句柄、消息類型等信息,通過(guò)系統(tǒng)的API函數(shù)可以獲知這些信息(例如,通過(guò) GetInputState可以檢查是否有鍵盤(pán)或鼠標(biāo)消息在線程消息隊(duì)列中,通過(guò)GetQueueStatus 可以檢查消息隊(duì)列中某一類型的消息,等等)根據(jù)這些信息可以知悉每個(gè)消息分別需要由哪個(gè)窗口進(jìn)行處理以及消息對(duì)應(yīng)的操作等等,進(jìn)而就可以根據(jù)預(yù)先設(shè)定的規(guī)則,來(lái)確定各個(gè)消息在消息隊(duì)列中的順序。例如,發(fā)現(xiàn)取出的某消息對(duì)應(yīng)的操作是需要由某視頻播放窗口處理的,并且預(yù)先設(shè)置這類消息的優(yōu)先級(jí)比較高,因此,就可以將該消息放在消息隊(duì)列中比較靠前的位置,甚至可以放在首位,等等。S104:按照所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中各消息的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。由于在應(yīng)用程序自行創(chuàng)建的消息隊(duì)列中,各個(gè)消息已經(jīng)重新進(jìn)行了調(diào)整,因此, 就可以按照調(diào)整之后的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。具體的,如果在步驟S102中是從指定線程的消息隊(duì)列中取出的消息,則在分發(fā)處理時(shí),可以直接將消息分發(fā)到對(duì)應(yīng)的窗口,由對(duì)應(yīng)的窗口對(duì)消息進(jìn)行處理即可。也就是說(shuō),在這種情況下,相當(dāng)于是在操作系統(tǒng)將系統(tǒng)隊(duì)列中的消息分發(fā)到具體的線程消息隊(duì)列之后,并不是由線程將消息分發(fā)到具體的窗口,而是由具有本發(fā)明實(shí)施例所述的消息處理功能的應(yīng)用程序,代替各個(gè)具體的線程完成該分發(fā)工作。具體實(shí)現(xiàn)時(shí),在代替具體的線程完成消息分發(fā)的操作時(shí),同樣可以由該具有消息處理功能的應(yīng)用程序使用操作系統(tǒng)提供的API函數(shù)來(lái)實(shí)現(xiàn)(該API函數(shù)可以是 DispatchMessage0此外,如果步驟S102中是從系統(tǒng)消息隊(duì)列中取出的消息,則在分發(fā)處理時(shí),可以首先將消息分發(fā)到創(chuàng)建窗口的線程的消息隊(duì)列,后續(xù)的操作則可以繼續(xù)由線程自行完成, 也即,由線程將其自己的消息隊(duì)列中的消息分發(fā)到對(duì)應(yīng)的窗口,再由對(duì)應(yīng)的窗口對(duì)消息進(jìn)行處理。也就是說(shuō),在這種情況下,相當(dāng)于是在操作系統(tǒng)將系統(tǒng)隊(duì)列中的消息分發(fā)到具體的線程消息隊(duì)列之前,由具有本發(fā)明實(shí)施例所述消息處理功能的應(yīng)用程序?qū)ο⑦M(jìn)行排序處理,然后再由該應(yīng)用程序?qū)⑴判蚝蟮南?,分發(fā)到各個(gè)線程的消息隊(duì)列,這樣,仍然是由線程將消息分發(fā)到具體的窗口,但是,是由具有本發(fā)明實(shí)施例所述的消息處理功能的應(yīng)用程序,代替操作系統(tǒng)將各個(gè)消息分發(fā)到各個(gè)線程的消息隊(duì)列??傊ㄟ^(guò)本發(fā)明實(shí)施例提供的消息處理方法,由于應(yīng)用程序可以自行創(chuàng)建消息隊(duì)列,并將操作系統(tǒng)創(chuàng)建的消息隊(duì)列中的當(dāng)前消息取出,放入該自行創(chuàng)建的消息隊(duì)列中,從而使得消息的先后執(zhí)行順序是可以調(diào)整的,而不是一律地按照操作系統(tǒng)中規(guī)定的先到先處理的原則,這樣,可以更加靈活地對(duì)消息隊(duì)列中的消息進(jìn)行處理。例如,可以使得一些實(shí)時(shí)外部事件得到及時(shí)處理,并且,如果出現(xiàn)有些在后到達(dá)的消息必須趕在另一些在先到達(dá)的消息之前處理才能達(dá)到預(yù)定效果的情況,則可以將在后到達(dá)的消息提到在先到達(dá)的消息之前,從而達(dá)到預(yù)定效果,等等。與本發(fā)明實(shí)施例提供的消息處理方法相對(duì)應(yīng),本發(fā)明實(shí)施例還提供了一種消息處理裝置,同樣,該裝置應(yīng)用于一應(yīng)用程序中,參見(jiàn)圖2,該裝置包括以下單元隊(duì)列創(chuàng)建單元201,用于應(yīng)用程序創(chuàng)建一消息隊(duì)列;消息取出單元202,用于從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;順序調(diào)整單元203,用于將所取出的消息進(jìn)行順序調(diào)整,并放入所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中;消息分發(fā)單元204,用于按照所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中各消息的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。當(dāng)然,為了避免程序運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤,在從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的消息之后,還可以將取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除。在具體實(shí)現(xiàn)時(shí),該裝置還可以包括清除單元,用于所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息之后,將所述取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除。其中,具體實(shí)現(xiàn)時(shí),消息取出單元202可以包括第一取出子單元,用于從操作系統(tǒng)為指定線程創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;相應(yīng)的,消息分發(fā)單元204可以包括第一分發(fā)子單元,用于將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口,以便由所述對(duì)應(yīng)的窗口對(duì)各個(gè)消息進(jìn)行處理。在這種方式下,指定線程可以為與界面相關(guān)的線程,當(dāng)然也可以是實(shí)際應(yīng)用中需要的其他線程?;蛘?,在另一種實(shí)現(xiàn)方式下,消息取出單元202也可以包括第二取出子單元,用于從操作系統(tǒng)創(chuàng)建的系統(tǒng)消息隊(duì)列中取出當(dāng)前的所有消息;相應(yīng)的,消息分發(fā)單元204可以包括第二分發(fā)子單元,用于將各個(gè)消息分發(fā)到操作系統(tǒng)為對(duì)應(yīng)的線程創(chuàng)建的消息隊(duì)列,以便由所述對(duì)應(yīng)的線程將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口進(jìn)行處理。通過(guò)本發(fā)明實(shí)施例提供的消息處理裝置,由于應(yīng)用程序可以自行創(chuàng)建消息隊(duì)列, 并將操作系統(tǒng)創(chuàng)建的消息隊(duì)列中的當(dāng)前消息取出,放入該自行創(chuàng)建的消息隊(duì)列中,從而使得消息的先后執(zhí)行順序是可以調(diào)整的,而不是一律地按照操作系統(tǒng)中規(guī)定的先到先處理的原則,這樣,可以更加靈活地對(duì)消息隊(duì)列中的消息進(jìn)行處理。例如,可以使得一些實(shí)時(shí)外部事件得到及時(shí)處理,并且,如果出現(xiàn)有些在后到達(dá)的消息必須趕在另一些在先到達(dá)的消息之前處理才能達(dá)到預(yù)定效果的情況,則可以將在后到達(dá)的消息提到在先到達(dá)的消息之前, 從而達(dá)到預(yù)定效果,等等。通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備 (可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于裝置或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的裝置及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。以上對(duì)本發(fā)明所提供的一種消息處理方法及裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
      及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
      權(quán)利要求
      1.一種消息處理方法,其特征在于,包括應(yīng)用程序創(chuàng)建一消息隊(duì)列;從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;將所取出的消息進(jìn)行順序調(diào)整,并放入所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中;按照所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中各消息的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息之后,還包括將所述取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除。
      3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息包括從操作系統(tǒng)為指定線程創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;所述對(duì)各個(gè)消息進(jìn)行分發(fā)處理包括將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口,以便由所述對(duì)應(yīng)的窗口對(duì)各個(gè)消息進(jìn)行處理。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述指定線程為與界面相關(guān)的線程。
      5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息包括從操作系統(tǒng)創(chuàng)建的系統(tǒng)消息隊(duì)列中取出當(dāng)前的所有消息;所述對(duì)各個(gè)消息進(jìn)行分發(fā)處理包括將各個(gè)消息分發(fā)到操作系統(tǒng)為對(duì)應(yīng)的線程創(chuàng)建的消息隊(duì)列,以便由所述對(duì)應(yīng)的線程將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口進(jìn)行處理。
      6.一種消息處理裝置,其特征在于,包括隊(duì)列創(chuàng)建單元,用于應(yīng)用程序創(chuàng)建一消息隊(duì)列;消息取出單元,用于從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息,并將所述取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除;順序調(diào)整單元,用于將所取出的消息進(jìn)行順序調(diào)整,并放入所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中;消息分發(fā)單元,用于按照所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中各消息的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括清除單元,用于所述從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息之后,將所述取出的消息從所述操作系統(tǒng)創(chuàng)建的消息隊(duì)列中清除。
      8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述消息取出單元包括第一取出子單元,用于從操作系統(tǒng)為指定線程創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消所述消息分發(fā)單元包括第一分發(fā)子單元,用于將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口,以便由所述對(duì)應(yīng)的窗口對(duì)各個(gè)消息進(jìn)行處理。
      9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述指定線程為與界面相關(guān)的線程。
      10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述消息取出單元包括第二取出子單元,用于從操作系統(tǒng)創(chuàng)建的系統(tǒng)消息隊(duì)列中取出當(dāng)前的所有消息;所述消息分發(fā)單元包括第二分發(fā)子單元,用于將各個(gè)消息分發(fā)到操作系統(tǒng)為對(duì)應(yīng)的線程創(chuàng)建的消息隊(duì)列,以便由所述對(duì)應(yīng)的線程將各個(gè)消息分發(fā)到對(duì)應(yīng)的窗口進(jìn)行處理。
      全文摘要
      本發(fā)明公開(kāi)了一種消息處理方法及裝置,其中,所述方法包括應(yīng)用程序創(chuàng)建一消息隊(duì)列;從操作系統(tǒng)創(chuàng)建的消息隊(duì)列中取出當(dāng)前的所有消息;將所取出的消息進(jìn)行順序調(diào)整,并放入所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中;按照所述應(yīng)用程序創(chuàng)建的消息隊(duì)列中各消息的順序,對(duì)各個(gè)消息進(jìn)行分發(fā)處理。通過(guò)本發(fā)明,能夠更加靈活地對(duì)消息隊(duì)列中的消息進(jìn)行處理。
      文檔編號(hào)G06F9/44GK102591658SQ20111044884
      公開(kāi)日2012年7月18日 申請(qǐng)日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
      發(fā)明者劉鴻威, 唐曦 申請(qǐng)人:奇智軟件(北京)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1