窗口样式和扩展窗口样式

[窗口样式]


WS_BORDER 创建具有边框的窗口。

WS_CAPTION 创建具有标题栏的窗口 (即表示 WS_BORDER 样式)。不能使用 WS_DLGFRAME 样式。

WS_CHILD 创建子窗口。不能使用 WS_POPUP 样式。

WS_CHILDWINDOW 和 WS_CHILD 样式相同。

WS_CLIPCHILDREN 排除子窗口占用的区域。在创建父窗口时使用。

WS_CLIPSIBLINGS 剪辑相对的子窗口;也就是说,在特定子窗口接收绘制消息时, WS_CLIPSIBLINGS 样式剪裁其他重载重叠的子窗口在要更新的子窗口之外的区域。(如果未给出 WS_CLIPSIBLINGS ,以及窗口重叠的子级,那么,当您在子窗口的工作区中绘制,它是在有相邻的子窗口的工作区中绘制。)用于 WS_CHILD 样式中只使用。

WS_DISABLED 创建初始禁用的窗口。

WS_DLGFRAME 用一个双边框,但没有书名创建一个窗口。

WS_GROUP 指定一组控件的第一个控件用户可以从一个控件移动到下使用箭头键。所有控件定义与 WS_GROUP 样式 FALSE 在第一个控件后属于同一组。与 WS_GROUP 样式的下一个控件开始下一组 (即一组结束下开始) 的位置。

WS_HSCROLL 创建具有水平滚动条的窗口。

WS_ICONIC 创建初始最小化的窗口。和 WS_MINIMIZE 样式相同。

WS_MAXIMIZE 创建一个窗口最大大小。

WS_MAXIMIZEBOX 创建一个具有最大化按钮的窗口。

WS_MINIMIZE 创建初始最小化的窗口。用于 WS_OVERLAPPED 样式中只使用。

WS_MINIMIZEBOX 创建具有最小化按钮的窗口。

WS_OVERLAPPED 创建重叠的窗口。一个重叠的窗口通常具有说明和一个边框。

WS_OVERLAPPEDWINDOW 用 WS_OVERLAPPED、 WS_CAPTION、 WS_SYSMENU、 WS_THICKFRAME、 WS_MINIMIZEBOX和 WS_MAXIMIZEBOX 样式创建重叠的窗口。

WS_POPUP 创建一个弹出窗口。不能使用 WS_CHILD 样式。

WS_POPUPWINDOW 用 WS_BORDER、 WS_POPUP和 WS_SYSMENU 样式创建一个弹出窗口。必须合并 WS_CAPTION 样式。 WS_POPUPWINDOW 样式允许控制菜单可见。

WS_SIZEBOX 创建一个具有大小调整边框的窗口。和 WS_THICKFRAME 样式相同。

WS_SYSMENU 创建一个具有控件菜单框在其标题栏的窗口。仅用于具有标题栏的窗口。

WS_TABSTOP 指定用户可以移动任何数量的控件之一使用 tab 键,。tab 键移动用户移到 WS_TABSTOP 样式指定的下一个控件。

WS_THICKFRAME 使用 (可用于调整窗口中粗的帧创建一个窗口。

WS_TILED 创建重叠的窗口。一个重叠的窗口的标题栏和一个边框。和 WS_OVERLAPPED 样式相同。

WS_TILEDWINDOW 用 WS_OVERLAPPED、 WS_CAPTION、 WS_SYSMENU、 WS_THICKFRAME、 WS_MINIMIZEBOX和 WS_MAXIMIZEBOX 样式创建重叠的窗口。和 WS_OVERLAPPEDWINDOW 样式相同。

WS_VISIBLE 创建初始可见的窗口。

WS_VSCROLL 创建具有垂直滚动条的窗口。

 

[扩展窗口模式]

WS_EX_ACCEPTFILES 指定用此样式创建的窗口接受拖放文件。

当窗口可见时,WS_EX_APPWINDOW 强制在任务栏上的顶级窗口。

WS_EX_CLIENTEDGE 指定是窗口查看三维),使用一个凹下转到的边缘的一个边框。

WS_EX_CONTEXTHELP 在窗口的标题栏包含一个问号。用户单击问号时,光标变为一个带有指针的问号。如果用户然后单击子窗口,子 WM_HELP 接收消息。

使用 tab 键,WS_EX_CONTROLPARENT 允许用户在窗口的子窗口之间导航。

WS_EX_DLGMODALFRAME 指定包含可的一个双边框的窗口 (可选) 在标题栏创建,当您在 dwStyle 参数中指定 WS_CAPTION 样式标志。

WS_EX_LAYERED 窗口是 a。分层窗口此样式,则窗口具有 CS_OWNDC 或 CS_CLASSDC,则 选件类样式 不能使用。但是,Windows 8 支持子窗口的 WS_EX_LAYERED 样式,前面的 windows 版本支持仅对顶级窗口中。

WS_EX_LEFT 为窗口泛型左对齐的属性。这是默认设置。

WS_EX_LEFTSCROLLBAR 在客户端区域左边将垂直滚动条。

使用从左向右读取 orders 属性命令,WS_EX_LTRREADING 显示窗口文本。这是默认设置。

WS_EX_MDICHILD 创建 MDI 子窗口。

WS_EX_NOPARENTNOTIFY 指定用此样式创建的子窗口不会发送 WM_PARENTNOTIFY 信息到其父窗口,在子窗口创建或销毁时。

WS_EX_OVERLAPPEDWINDOW 合并 WS_EX_CLIENTEDGE 和 WS_EX_WINDOWEDGE 样式

WS_EX_PALETTEWINDOW 合并 WS_EX_WINDOWEDGE 和 WS_EX_TOPMOST 样式。

WS_EX_RIGHT 为窗口泛型右对齐的属性。这取决于窗口选件类。

WS_EX_RIGHTSCROLLBAR 在客户端区右边将垂直滚动条 (如果有)。这是默认设置。

使用从右向左的读取 orders 属性命令,WS_EX_RTLREADING 显示窗口文本。

WS_EX_STATICEDGE 用预期的一个三维边框样式创建一个窗口为不接受用户输入的项目。

WS_EX_TOOLWINDOW 创建一个工具窗口,是预期的窗口用作浮动工具栏。工具窗口具有使用较小的字体,比普通标题栏短的标题栏,并且,窗口标题绘制。工具窗口未显示在任务栏或于显示的窗口在用户按 ALT+TAB。

WS_EX_TOPMOST 指定用此样式创建的窗口应是放置的第 nontopmost 窗口和保持在其中发生,即使当停用窗口。应用程序可以使用 SetWindowPos 成员函数添加或移除此特性。

WS_EX_TRANSPARENT 指定用此样式创建的窗口是透明的。即在 windows 下的任何窗口未由 windows 遮盖。只有在更新后,用此样式创建的窗口接收消息 WM_PAINT 其下方的所有同级窗口。

WS_EX_WINDOWEDGE 指定窗口一个凸出的边缘的一个边框。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设置窗口样式扩展样式可以使用函数`SetWindowLongPtr()`和`GetWindowLongPtr()`,消息的接收可以使用窗口过程函数(Window Procedure)。 以下是一个示例代码,设置窗口样式为无边框窗口,并且接收`WM_CLOSE`消息,实现关闭窗口的功能: ```c++ #include <Windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CLOSE: DestroyWindow(hwnd); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 注册窗口类 WNDCLASSEX wc = { 0 }; wc.cbSize = sizeof(wc); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = L"MyWndClass"; RegisterClassEx(&wc); // 创建窗口 HWND hwnd = CreateWindowEx(WS_EX_APPWINDOW, L"MyWndClass", L"My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL); // 设置窗口样式为无边框窗口 LONG_PTR style = GetWindowLongPtr(hwnd, GWL_STYLE); style &= ~WS_THICKFRAME; style &= ~WS_CAPTION; SetWindowLongPtr(hwnd, GWL_STYLE, style); // 显示窗口 ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // 消息循环 MSG msg = { 0 }; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值