深入解析C++的WNDCLASS结构体及其在Windows中的应用

2020-01-06 14:17:53丽君

  •   CS_BYTEALIGNCLIENT: 在字节边界上(在x方向上)定位窗口的用户区域的位置
  •   CS_BYTEALIGNWINDOW: 在字节边界上(在x方向上)定位窗口的位置
  •   CS_CLASSDC: 该窗口类的所有窗口实例都共享一个窗口类DC
  •   CS_DBLCLKS: 允许向窗口发送双击鼠标键的消息
  •   CS_GLOBALCLASS: 当调用CreateWindow 或 CreateWindowEx 函数来创建窗口时允许它的hInstance参数和注册窗口类时传递给RegisterClass 的 hInstance参数不同。如果不指定该风格,则这两个 hInstance 必须相同。
  •   CS_HREDRAW: 当水平长度改变或移动窗口时,重画整个窗口
  •   CS_NOCLOSE: 禁止系统菜单的关闭选项
  •   CS_OWNDC: 给予每个窗口实例它本身的DC。注意,尽管这样是很方便,但它必须慎重使用,因为每个DC大约要占800个字节的内存。
  •   CS_PARENTDC: 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。注意,这是子窗口还是从系统缓存中获取DC,而不是使用父窗口的DC。使用该风格可以提高系统性能。
  •   CS_SAVEBITS: 以位图形式保存被该窗口遮挡的屏幕部分,这样当给窗口移动以后,系统便可以用该保存的位图恢复屏幕移动的相应部分,从而系统不用向被该窗口遮挡的窗口发送 WM_PAINT 消息。该特性对于菜单类型的窗口比较合适,因为它通常是简短的显示一下之后便消失。设置该特性将增加显示该窗口的时间,因为它通常要先分配保存位图的内存。
  •   CS_VREDRAW: 当垂直长度改变或移动窗口时,重画整个窗口
  • lpfnWndProc: 指向窗口过程

    cbClsExtra: 指定紧随在 WNDCLASS 数据结构后分配的字节数。系统将其初始化为零。
    cbWndExtra: 指定紧随在窗口实例之后分配的字节数,系统将其初始化为零。如果应用程序正在用WNDCLASS结构注册一个在RC资源描述文件中用CLASS指令创建的对话框时,它必须设置这个字段为 DLGWINDOWEXTRA。
    hInstance: 标识了该窗口类的窗口过程所在的模块实例的句柄,不能为NULL。