类风格(class style)

来源:互联网 发布:js 分享到qq空间 编辑:程序博客网 时间:2024/05/02 00:02
类风格(class style)
    类的风格定义了窗口类额外的元素。两种或两种以上的风格可以用位操作符或“|”组合起来。为了为窗口类指定一种风格,可以把风格类型赋给WNDCLASS或WNDCLASSEX结构的style成员。类的风格类型如下


    CS_BYTEALIGNXLIENT
    在字符边界(x轴方向)上对齐窗口客户区域。这个风格影响窗口客户区域的宽度和它显示时的水平位置。


    CS_BYTEALIGNWINDOW
    在字符边界(x轴方向)上对齐窗口。这个风格影响窗口的宽度和它显示时的水平位置。
    
    CS_CLASSDC
    为类中所有的窗口分配一个DC。由于窗口类的处理特性,它可能为一个应用程序的多个线程创建一个相同类的窗口。它也可能为线程同时使用DC。当这种情况发生时,系统只允许一个线程成功结束绘画操作。
  
    CS_DBLCLKS
    光标在属于类的窗口中时,当用户双击鼠标,则为窗口处理过程发送一条双击消息。


    CS_GLOBALCLASS
    指定这个窗口类为应用程序的全局类。更多信息参见应用程序全局类(Application Global Class)。


    CS_HREDRAW
    如果窗口客户区尺寸改变或位置移动时,重绘整个窗口。


    CS_NOCLOSE
    禁止窗口菜单上的Close命令
 
    CS_OWNDC
    为类中的每个窗口分配唯一的DC。


    CS_PARENTDC
    设置子窗口的裁剪矩形适应父窗口,以便子窗口可以在父窗口上作图。一个拥有CS_PARENTDC风格的窗口会定期的从系统DC缓存中获取DC。这个风格不会把父窗口的DC和DC设置传递给子窗口。指定CS_PARENTDC这个风格是为了应用程序的性能。


    CS_SAVEBITS
    以位图的形式保存被这个类的窗口遮盖的屏幕图像部分,当窗口移走时,系统用之前保存的位图恢复屏幕图像,也包括被其它窗口所遮盖的部分。如果内存没有丢弃之前保存的位图,或其它屏幕行为没有使存储的位图失效,那么系统不会给被遮盖窗口发送WM_PAINT消息。
    这个风格对那些暂时显示的,并且在其它屏幕活动发生时消失的小窗口很有用,例如菜单和对话框。因为系统必须首先为位图分配内存,所以这个风格会增加显示窗口的时间开销。


    CS_VREDRAW
    如果移动或尺寸调整改变了客户区的高度,则重绘整个窗口。


类和设备上下文(DC)
    设备上下文(DC)是一个特殊的值集,应用程序利用这个值集可以在它的窗口客户区域内作图。在显示窗口时,系统需要为每个窗口申请一个设备上下文,但是系统在如何存储和对待这些DC时是有一定灵活性的。
    如果DC的风格没有明确的给出,那么系统假定每个窗口使用的是从系统维护的DC中获取的一个DC。在这种情况下,每个窗口必须在绘画之前获取和初始化DC句柄,然后绘画完成后释放DC句柄。
    为了避免每次在窗口内作图时都要获取DC句柄,应用程序可以为窗口类指定CS_OWNDC风格。这个类风格知道系统创建一个私有的DC句柄,为类中的每个窗口分配唯一的DC句柄。应用程序只需要获取DC句柄一次,然后可以一直使用。