zoukankan      html  css  js  c++  java
  • 关于RegisterClass和CreateWindow

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

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

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

  • 相关阅读:
    [luogu4053 JSOI2007] 建筑抢修 (贪心 优先队列)
    [luogu2272 ZJOI2007] 最大半连通子图 (tarjan缩点 拓扑排序 dp)
    20180705 考试记录
    [luogu4310] 绝世好题 (递推)
    [luogu2765 网络流24题] 魔术球问题 (dinic最大流)
    [luogu4151 WC2011] 最大XOR和路径 (线性基)
    [luogu3232 HNOI2013] 游走 (高斯消元 期望)
    [luogu3726 HNOI2017] 抛硬币 (拓展lucas)
    20180703 考试记录
    [spoj] HIGH
  • 原文地址:https://www.cnblogs.com/just-bg/p/3989233.html
Copyright © 2011-2022 走看看