摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P50
由于窗口类知识定义了窗口的一般特征,因此基于同一窗口类可以创建许多不同的窗口。在调用 CreateWindow 函数来创建窗口时,可以指定许多与窗口有关的细节信息。
Windows 编程的新手有时容易对窗口类和窗口之间的区别以及为什么窗口的特征不能一次性指定完毕而感到疑惑。实际上,按照这种方式对信息进行划分会带来许多便利。例如,所有的下压按钮窗口都基于相同的窗口类。与该窗口类关联的窗口过程位于 Windows 内部,并负责处理鼠标和键盘对按钮的输入,以及定义按钮在屏幕上的视觉外观。从这个方面看,所有下压按钮的工作方式都是一样的。但所有的下压按钮又都是不同的。它们尺寸各异,在屏幕上的位置也不尽相同,而且所带的文本字符串也有差别。后面的这几种特征都是窗口定义的一部分,而非属于窗口类定义。
与传给 RegisterClass 函数的信息是通过一个数据结构指定的不同,传给 CreateWindow 的信息则是通过独立参数的形式指定的。在 HELLOWIN.C 中,对 CreateWindow 的调用如下:
需要说明的是,事实上还有另外两个用于创建窗口的函数,即 CreateWindowA 和 CreateWindowW,这两个函数将头两个参数分别当作 ASCII 和 UNICODE 字符来处理。
注释为“窗口类名称”的参数是 szAppName,该参数中包含字符串“HelloWin”,即程序刚刚注册的窗口类的名称。我们所要创建的窗口正是通过这种方式与窗口类建立了关联。