?
經(jīng)查資料得如下信息:
1)操作系統(tǒng)通過RIT(raw input thread,RIT)等待系統(tǒng)硬件輸入隊(duì)列(system hardware input queue,SHIQ)的消息,一旦鼠標(biāo)或鍵盤發(fā)生操作,系統(tǒng)就向SHIQ添加一條硬件事件,這時(shí)RIT將被喚醒,并從SHIQ中取出這個(gè)事件,轉(zhuǎn)換成適當(dāng)?shù)腤M_KEY***、WM_?BUTTON***、WM_MOUSEMOVE等消息添加到適當(dāng)線程消息隊(duì)列(VIQ)中,RIT判斷適當(dāng)線程的機(jī)制:
??1.對于鼠標(biāo)消息,RIT只是確定是哪一個(gè)窗口在鼠標(biāo)光標(biāo)之下。利用這個(gè)窗口,RIT調(diào)用GetWindowThreadProcessID來確定是哪一個(gè)線程建立了這個(gè)窗口,那么就把消息發(fā)送到這個(gè)線程的線程消息隊(duì)列(VIQ)中。
??2.對于按鍵消息,在 任何時(shí)刻只有一個(gè)線程與RIT“連接”,與之相連的這個(gè)線程稱為前景線程(foreground thread),也就是說RIT將把消息發(fā)送到建立當(dāng)前獲得焦點(diǎn)的窗口的線程的線程的線程消息隊(duì)列(VIQ)中。