当没有窗口供寄宿时,比如应用程序视图;
当需要备份窗口时,稍后将回过头来讲解该内容;
当需要以任意方式重叠对等控件时,这不符合寄宿控件的更严格的嵌套规则;
当需要后台备份属性时,该属性被对话框和菜单窗格用来保存位于它们后面的窗口的位图。
拥有窗口是控件的一个相当基本的属性。编写一个控件既是寄宿控件又是拥有窗口控件没有太多意义。决定它应该是哪一种控件,然后遵循它。只有小部分控件代码受到这个决定的影响。因此,如果在后来发现先前是独立应用程序视图的控件有窗口可以寄宿,那么应该能够相当容易地修改控件。
比如,在第17.9节的例子中,CExampleHelloControl类改编CHelloWorldAppView,使它变成一个寄宿控件。类声明从以下代码:
这里的本质变化是,必须向控件的 ConstructL()函数传递一个 CCoeControl&参数,告诉它寄宿到哪个CCoeControl。构造代码从:
改成:
不是调用 CreateWindowL()来创建一个大小合适的窗口,而是调用 SetContainerWindowL()将控件注册为另一个拥有窗口控件的寄宿者。
【责任编辑:
董书 TEL:(010)68476606】