Win32编程:窗口类样式+窗口外观样式+窗口显示样式

时间:2023-03-09 09:18:16
Win32编程:窗口类样式+窗口外观样式+窗口显示样式

1.窗口类样式WNDCLASS.style

CS_VREDRAW

提供窗口位置变化事件和高度变化事件的处理程序,功能是重绘窗口

CS_HREDRAW

提供窗口位置变化事件和宽度变化事件的处理程序,功能是重绘窗口

CS_DBLCLKS

提供窗口双击事件的处理程序,功能是使窗口在最大化与正常尺寸之间切换

CS_BYTEALIGNCLIENT

提供窗口位置变化事件的处理程序,功能是使位置变化后客户区的左边坐标是8的倍数

CS_BYTEALIGNWINDOW

提供窗口位置变化事件的处理程序,功能是使位置变化后窗口的左边坐标是8的倍数

CS_NOCLOSE

使系统栏上的关闭按钮和系统菜单上的关闭命令失效

CS_DROPSHADOW

实现窗体边框阴影效果

CS_SAVEBITS

将被窗口遮挡的部分保存为位图,当窗口移开后,用此位图可快速恢复被遮挡的部分。通常菜单栏、对话框及下拉框等需此功能

CS_OWNDC

使基于此窗口类的每个窗口都拥有自己的设备描述表

CS_CLASSDC

使基于此窗口类的所有窗口都共享一个设备描述表,但同一时刻只能一个窗体操作设备描述表

CS_PARENTDC

基于此窗口类的窗口使用其父窗口类的设备描述表(父窗口和子窗口不一定属于同一窗口类)

CS_GLOBALCLASS

使窗体类是应用程序全局类(一个在进程中对所有模块都有效的exe或dll注册的窗体类)

此外,移动窗口事件(鼠标移动=鼠标左键按下+鼠标移动+鼠标左键释放,键盘移动=……)是默认支持的(即内置支持的),所以默认事件处理程序是必不可少的,否者程序无法运行。

DefWindowProc(hwnd, uMsg, wParam, lParam);

2.窗口外观样式window style

WS_OVERLAPPED=WS_TILED=WS_BORDER|WS_CAPTION

WS_OVERLAPPEDWINDOW=WS_TILEDWINDOW=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX

WS_POPUPWINDOW=WS_POPUP|WS_BORDER|WS_SYSMENU

WS_BORDER

WS_CAPTION(包含WS_BORDER不能与WS_DLGFRAME共存)

WS_DLGFRAME(包含WS_CAPTION不能与WS_CAPTION共存)

WS_POPUP(不能与WS_CHILD共存)

WS_CHILD=WS_CHILDWINDOW (不能与WS_POPUP共存)

WS_SYSMENU(包含WS_CAPTION,含关闭按钮)

WS_THICKFRAME=WS_SIZEBOX(包含WS_CAPTION)

WS_MINIMIZEBOX(包含WS_CAPTION需要指定WS_SYSMENU才有效)

WS_MAXIMIZEBOX(包含WS_CAPTION需要指定WS_SYSMENU才有效)

WS_VSCROLL(包含WS_CAPTION)

WS_HSCROLL(包含WS_CAPTION)

WS_MAXIMIZE(包含WS_CAPTION优先纺低于窗口样式SW_XXX)

WS_MINIMIZE=WS_ICONIC(包含WS_CAPTION优先纺低于窗口样式SW_XXX)

WS_VISIBLE(EnableWindow)

WS_DISABLED(ShowWindow|SetWindowPos)

WS_GROUP(包含WS_CAPTION,指定此属性的控件与之后创建的且未指定此属性的控件属于同一组)

WS_TABSTOP(包含WS_CAPTION,指定此属性的同一组的控件之间可通过Tab键切换聚焦)

WS_CLIPSIBLINGS(包含WS_CAPTION,作为子窗口当重绘时不重绘被其它子窗口遮挡的区域)

WS_CLIPCHILDREN(包含WS_CAPTION,作为父窗口当重绘时不重绘制被子窗口遮挡的区域)

3.窗口显示样式