也没错。
子视窗控制项在对话方块中最常用。在第十一章中您将会看到,子视窗控制项的位置和尺寸,是在范例程式的资源描述叙述中的对话方块模板里定义的。但是,您也可以使用预先定义的,在普通视窗显示区域里的子视窗控制项。您可以呼叫一次CreateWindow来建立一个子视窗,并通过呼叫MoveWindow来调整子视窗的位置和尺寸。父视窗讯息处理程式向子视窗控制项发送讯息,子视窗控制项向父视窗讯息处理程式传回讯息。
在建立普通视窗时,首先定义视窗类别,并使用RegisterClass将其注册到Windows中,然後用CreateWindow命令依据该视窗类别建立一个普通视窗,从第三章开始,我们就是这么做的。但是,当您使用预先定义的某个控制项时,不必为子视窗注册视窗类别,视窗类别已经存在於Windows之中,并且有一个预先定义的名字。您只需在CreateWindow中把它们用作视窗类别参数。CreateWindow中的视窗样式参数准确地定义了子视窗控制项的外形和功能。Windows内建了处理发送给依据这些视窗类别建立的子视窗讯息的视窗讯息处理程式。
直接在您的视窗上使用子视窗控制项完成某些任务,这些任务的层次低於在对话方块中使用子视窗控制项所要求的层次。这里,对话方块管理器在您的程式和控制项之间增加一个隔离层。值得一提的,您可能会发现在您的视窗上建立的子视窗控制项,没有利用Tab键或方向键将输入焦点从一个控制项移动到另一个控制项的内部功能。子视窗控制项能够获得输入焦点,但是获得後,它将不能把输入焦点传回给父视窗。这就是本章要解决的问题。
Windows程式设计的文件在两个地方讨论了子视窗控制项:首先是,简单的常用控制项,我们可以在/Platform SDK/User
Interface
Services/Controls的文件所描述的无数对话方块中看到。这些子视窗包括按钮(其中包括核取方块的单选按钮)、静态控制项(例如文字标签)、编辑方块(您可以在此编辑一行或多行文字)、卷动列、清单方块和下拉式清单方块。除下拉式清单方块以外,在Windows
1.0中就包括了这些控制项。这部分的Windows文件还包括Rich
Text文字编辑控制项,它与编辑方块相似,但还允许编辑不同字体与样式的格式化文字,以及桌面应用工具列。
相对於「常用控制项」,还有一些神秘的特殊控制项。这 |