关于windows程序的学习及思考系列之一

时间:2023-01-07 10:33:02

1.窗口类的注册

  a.windows程序中最简单的就是创建一个简单的窗口,而窗口程序的创建是基于窗口类的,窗口类决定了处理窗口消息的过程函数。

  b.一个窗口类可以用于创建多个窗口,也就是说窗口是窗口类的实例对象。

  c.所有的按钮窗口——包括下按按钮,复选框,单选框——都是基于窗口类来创建的。窗口类为这些窗口定义了窗口过程和一些其他的特性。

  d.当定义一个窗口的时候,我们还需要定义一些该窗口的特有的附加属性。

  创建窗口(也就是创建一个类的实例),首先得先注册一个类,Windows中有RegisterClass来注册窗口类,这个函数只需要一个指向WNDCLASS(窗口类)的结构体指针做参数。该结构中包含两个指向字符串的指针。(注意:因为这个WNDCLASS的字段中有两个字符串指针,所以在不同的编码方式的时候有不同的定义,分别是宽字节Unicode,窄字节Ascill,在头文件WINUSER.H中有两种不同的定义方式,分别是WNDCLASSA和WNDCLASSW,在定义了这两种方式之后根据不同的编码方式将WNDCLASSA和WNDCLASSW定义成WNDCLASS)。

  在程序中先定义WNDCALSS wndclass,然后读wndclass的各个字段初始化,最后调用RegisterClass()注册之。

  在WNDCLASS的所有字段中组重要的是第二个字段和最后一个字段,第二个字段(lpfnWndProc)是基于该窗口类的所有窗口的窗口过程函数的地址。最后一个字段是这个窗口类的名字,还有就是风格字段可以用按位或(|)操作结合两个风格的标识符。