IE7的窗口结构的详细信息
IE7的窗口结构的详细信息
与IE6不同,IE7的窗口结构做了很大的改动。IEFrame (主窗口)
|
|-- WorkerW (导航栏,即地址栏部分,还包括IE7特有的搜索栏)
| |
| |-- ReBarWindow32
|
|-- CommandBarClass
| |
| |-- ReBarWindow32
|
|-- TabWindowClass (smaple:http://www.sina.com)
|
|-- Shell DocObject View
|
|-- Internet Explorer_Server (浏览器窗口)
为了支持多页面,IEFrame下可能会有多个TabWindowClass子窗口,每个TabWindowClass对应一个网页。
WorkerW-ReBarWindow32 (导航栏)下面还有三个子窗口,分别是:
TravelBand ,负责IE7左上角的前进、后退所在的工具栏部分
Address Band Root , 负责地址栏部分
UniversalSearchBand ,负责IE7特有的搜索栏部分
这三个子窗口其下还有1到3级的子窗口,不一一列出!
CommandBarClass-ReBarWindow32 负责IE窗口的第二行,包括收藏夹,TAB,常用工具栏等。
与以往版本还有一个很大的差别,就是窗口所在线程。
IE6之前, Internet Explorer_Server 和 工具栏等其它UI元素都处在同一线程。因此,使用BHO时,所在的线程和UI线程是相同的。
IE7中,每个 TabWindowClass/Internet Explorer_Server 都处在一个独立的线程,都和IE的其它UI线程分离。其它UI包括:
IEFrame 、WorkerW导航栏、CommandBarClass (TAB和常用工具栏), 都在同一个线程中。因此在IE7中,如果在BHO中要挂钩子,或子类化窗口,应该考虑到跨线程的问题。