关于RegisterClass和CreateWindow

      RegisterClass就函数名字和其参数来解释,中文意思是注册窗口类别,顾名思义就是注册一个窗口类,而CreateWindow字面上意思就是创建一个窗口。可能刚做windows开发的对着两个函数及其之间关联有点疑问。

  RegisterClass函数的作用是通知系统,你要定义一个新的窗体类型,然后把这个类型记录到系统里面,以后你就可以使用CreateWindow来创建一个基于此类型的窗体。基于此类型的窗体都具有相同的属性,比如,背景色,光标,图标等等。在MFC中,对于对话框而言,系统已经注册了对话框自己的类型,因此你无需调用RegisterClass就可以使用自带的对话框类创建模态或者非模态窗口。

  对于控件而言,系统已经注册了对话框自己的类型,因此你也无需调用RegisterClass就可以使用CreateWindow来创建控件,而CreateWindow中的第一个参数,正是RegisterClass函数使用的WNDCLASS结构中的成员lpszClassName。
  windows控件与对话框的区别在于,对话框的窗体过程由调用程序提供,而控件的窗体过程是定义在系统中的,你必须对窗体进行子类化(所谓的子类化可以参考我前面《子类化和超类化区别》那篇文章),才能定制控件的处理消息逻辑。
  其实,说白了,早在C语言的Window编程时代,就已经支持了继承,这为以后的C++语言的实现奠定了基础。RegisterClass函数的作用是定义一个窗体类,相对于C++中的class概念,而CreateWindow这个函数是定义基于这个类型的对象,相对于C++中的对象概念。

 

posted @ 2014-09-23 20:27  菊花也是花  阅读(3711)  评论(1编辑  收藏  举报