控件与子窗口是什么关系呢?答案是多数控件为子窗口,个别除外.
依据嘛,看下面从某本书里摘抄的:
在建立普通窗口时,首先定义窗口类别,并使用RegisterClass将其注册到Windows中,然后用CreateWindow命令依据该窗口类别建立一个普通窗口,从第三章开始,我们就是这么做的。但是,当您使用预先定义的某个控件时,不必为子窗口注册窗口类别,窗口类别已经存在于Windows之中,并且有一个预先定义的名字。您只需在CreateWindow中把它们用作窗口类别参数。CreateWindow中的窗口样式参数准确地定义了子窗口控件的外形和功能。Windows内建了处理发送给依据这些窗口类别建立的子窗口消息的窗口消息处理程序。
从中可以看出,使用控件要注册窗口 然后用CreateWindow产生窗口 以及编写窗口消息处理程序,所以大部分控制其实就是子窗口.尽管注册窗口和编写窗口消息处理程序已经都事先做好了。
当然也有例外,比如滚动条,在使用滚动条的时候程序写作者只需要在CreateWindow的第三个参数中包括窗口样式(WS)标识符WS_VSCROLL(垂直卷动)和/或WS_HSCROLL(水平卷动)即可。可见滚条并不需要额外的注册窗口 产生窗口,它就随着主窗口一起产生,所以说滚动条不是子窗口。
以上为个人看法,有不对的地方欢迎提出来。