VC----Class Style类风格和窗口风格

CS_BYTEALIGNCLIENT:以字节边界来对齐窗口客户区,这个风格会影响 窗口 的宽度和水平位置。实际上没有看到效果。

CS_BYTEALIGNWINDOW:以字节边界来对齐窗口,这个风格会影响窗口的宽度和水平位置。实际上没有看到效果。

CS_CLASSDC:分配一个DC,凡是用这个类的窗口都能共享这个DC。因为窗口类是具体的,所以一个程序的多个线程可以创建同一个类下的多个窗口,也有可能多个线程同时使用同一个DC,在这种情况 下,系统只会让其中一个线程来完成绘画操作。

CS_DBLCLKS:当光标在一个窗口内,并且这个窗口属于这个类的话,鼠标的双击消息会发送到此窗口。

CS_DROPSHADOW:使阴影影响一个窗口,这个影响会被SPI_SETDROPSHADOW打开或者关闭。一般小的、生存期短的窗口比如菜单等为了显示它和其他窗口的Z次序关系。窗口所在的类有这个风格的话,这个窗口一必须是顶级窗口,但不一定是子窗口。使用时,Win7下用具体的数字表示此风格为0x00020000;测试时因为不是菜单窗口,所以也没有看出什么效果。

CS_GLOBALCLASS:指定这个窗口类是个全局类。

CS_HREDRAW:当窗口宽度发生变化时,会引起窗口重画。

CS_VREDRAW:当窗口高度发生变化时,会引起窗口重画。这两个和窗口的风格WS_HREDRAW,WS_VREDRAW好像很像。

CS_NOCLOSE:在窗口的菜单上禁用关闭。使用此风格时,有窗口风格WS_OVERLAPPEDWINDOW的窗口也禁用了关闭按钮。系统菜单上也没有了关闭。

CS_OWNDC:分配一个唯一的DC为每个使用此类的窗口。和CS_CLASSDC相反吗?

CS_PARENTDC:设置子窗口的剪切矩形,以便于子窗体能在父窗口上绘画,有CS_PARENTDC风格的窗口从系统DC的缓冲区里得到一个DC,这不会把父窗体的DC或者DC设置给子窗体,设置此风格会提高程序的表现。没有尝试过,可能是子窗体自绘吗?

CS_SAVEBITS保存一个位图,有这个类型的窗口会掩盖屏幕的一个区域,当一个窗口移动的时候,系统会用保存的位图(这个位图是空的?)来存储屏幕图像或者其他被掩盖的窗体,因此,如果位图占用的内存没有释放,或者屏幕(被掩盖窗体)活动没有使这个位图失效的话,就不会向被掩盖的窗体或者屏幕发送WM_PAINT消息。这种风格适用于小窗体(菜单,对话框),这些窗体的特点是在其他窗口活动发生前就会被移动走,这个风格会增加显示窗体的次数,因为系统在内存中保存了一个位图 。又是和菜单有关的,可能是为 了增加右键菜单快速显示吗?有可能是想在右键菜单掩盖一个区域后,在消失后不会引起窗体重画,这样不会让下面的窗体闪烁。

下面是窗口风格:

WS_BORDER:有一个细小边框的窗体。(会呈现一个窗体,但在Win7下单独使用此风格和不使用没有区别)

WS_CAPTION:窗体有一个标题 栏。(Basic主题 下,有和没有此风格看不出效果)

WS_CHILD:此风格说明窗体是子窗体。不能和WS_POPUP风格同时使用。

WS_CHILDWINDOW:同WS_CHILD。

WS_CLIPCHILDREN:当绘画发生时,排除掉子窗体占据的区域,不再绘画,这发生在父窗体创建时。

WS_CLIPSIBLINGS:当一个子窗体发生绘画时接收到WM_PAINT消息,这个风格会从这个子窗体剪切掉其他子窗体的重叠区域。如果这个风格没有指定,刚在客户区绘制一个子窗体时,其他子窗体与这个子窗体的重叠区域也会被画。

WS_DISABLED:使窗体无效,当无效时不能接收用户的输入。可以用函数EnableWindow使窗体有效。(窗体显示出来,不会移动等效果)

WS_DLGFRAME:窗体有一个对话框的边框风格。有此风格时,不能有标题栏。(没看出效果)

WS_GROUP:有此风格的窗体是一组控件中的第一个窗体。包含第一个控件的这个组中的其他控件会在第一个控件创建后再依次创建。只到有一个控件定义了WS_GROUP风格才会结束,中间的控件不用此风格,都属于此组中。通常每个组的第一个控件有WS_TABSTOP风格,以使用户能从一个组移动到另一个组(这是用TAB键来实现的吧?)。在一个组中,用户能用方向键从第一个控件移动到下一个控件。为了改变这个风格,创建窗体后用SetWindowLong函数。

WS_HSCROLL:窗口有一个水平滚动条。

WS_ICONIC:此风格使窗体最小化。显示时是最小化的。和WS_MINIMIZE一样。(实际使用时不会出现时最小化,难道是ShowWindow时的结果吗)

WS_MAXIMIZE:窗口初始化最大。(测试时没有作用,和ShowWindow有关吗?)

WS_MAXIMIZEBOX:窗口有最大化按钮,不能和风格WS_EX_CONTEXTHELP同用,这时一定要有WS_SYSMENU风格。如果没有WS_SYSMENU风格时,就无效。

WS_MINIMIZE:和WS_ICONIC一样。

WS_MINIMIZEBOX:窗口有最小化按钮,也要指定WS_SYSMENU风格,如果没有WS_SYSMENU风格,此风格无效。

WS_OVERLAPPED:窗口有一个标题栏和边框风格。

WS_OVERLAPPEDWINDOW:集合各个风格,有(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)

WS_POPUP:弹出风格。不和WS_CHILD风格同用。(单独使用时不显示)。

WS_POPUPWINDOW:混合的风格。(WS_POPUP | WS_BORDER | WS_SYSMENU);有此风格的窗口是一个弹出窗口,和风格WS_CAPTION同时使用,才能让窗口菜单显示。(同时 使用也没有显示呀,只有在任务栏有窗体的最小化)

WS_SIZEBOX:窗口有一个可调大小的风格,和WS_THICKFRAME一样。(窗口的边框果然可以调动大小了)

WS_SYSMENU:窗口有一个系统菜单 ,一定要和WS_CAPTION同用,系统菜单 在标题栏上右键击出。(存在时会显示窗口左上角图标)

WS_TABSTOP:说明窗口是一个控件,能接收焦点当用户按TAB键时,按TAB键时可把焦点转移到有WS_TABSTOP风格的下一个窗体上。为了改变这个窗口风格,可使用SetWindowLong风格。对于用户创建的窗体和非模态对话框,通过调用函数IsDialogMessage来改变消息循环。

WS_THICKFRAMEWS_SIZEBOX一样。

WS_TILED:和WS_OVERLAPPED一样。

WS_TILEDWINDOWWS_OVERLAPPEDWINDOW风格一样。集合风格,包括:(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)。

WS_VISIBLE使窗口可见,可以通过函数ShowWindow和SetWindowPos来改变 。

WS_VSCROLL:窗口有一个竖直滚动条。



原文地址:https://www.cnblogs.com/ddx-deng/p/3755825.html