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中要挂钩子,或子类化窗口,应该考虑到跨线程的问题。