函数功能:
CreateWindowEx 函数用于创建一个具有扩展风格的重叠式窗口、弹出式窗口或子窗口,除此之外与 CreateWindow 函数相同。关于创建窗口和其他参数的完整描述,请参看 CreateWindow 函数。
API 函数原型:
注释:_In_ 说明该参数是输入的,_opt_ 说明该参数是可选参数。
HWND WINAPI CreateWindowEx( _In_ DWORD dwExStyle, // 窗口扩展风格 _In_opt_ LPCTSTR lpClassName, // 窗口类名称 _In_opt_ LPCTSTR lpWindowName, // 窗口标题 _In_ DWORD dwStyle, // 窗口风格,或称窗口格式 _In_ int x, // 初始 x 坐标 _In_ int y, // 初始 y 坐标 _In_ int nWidth, // 初始 x 方向尺寸 _In_ int nHeight, // 初始 y 方向尺寸 _In_opt_ HWND hWndParent, // 父窗口句柄 _In_opt_ HMENU hMenu, // 窗口菜单句柄 _In_opt_ HINSTANCE hInstance, // 程序实例句柄 _In_opt_ LPVOID lpParam // 创建参数 );
参数解析:
|
参数 |
含义 |
|
dwExStyle |
指明将要被创建的窗口的扩展窗口风格(详见下方↓) |
|
lpClassName |
1. 窗口类名称,可以是一个指向 NULL 结束的字符串或一个整型数值 |
|
lpWindowName |
1. 窗口标题,一个指向 NULL 结束的字符串指针 |
|
dwStyle |
指定创建窗口的风格(详见下方↓) |
|
x |
1. 指定窗口的初始水平位置(x 坐标) |
|
y |
1. 指定窗口的初始垂直位置(y 坐标) |
|
nWidth |
1. 以设备单元指明窗口的宽度 |
|
nHeight |
1. 以设备单元指明窗口的高度 |
|
hWndParent |
1. 指向被创建窗口的父窗口或所有者窗口的句柄 |
|
hMenu |
1. 指向窗口菜单句柄,或依据窗口风格指明一个子窗口标识 |
|
hInstance |
与窗口相关联的模块实例的句柄 |
|
lpParam |
1. 指向一个值的指针,该值传递给窗口 WM_CREATE 消息。该值通过在 IParam 参数中的 CREATESTRUCT 结构传递 |
dwStyle 窗口风格解析
|
窗口风格 |
含义 |
|
WS_BORDER |
创建一个带边框的窗口 |
|
WS_CAPTION |
创建一个有标题框的窗口(包含了 WS_BODER 风格) |
|
WS_CHILD |
创建一个子窗口,这个风格的窗口不能拥有菜单也不能与 WS_POPUP 风格合用 |
|
WS_CHILDWINDOW |
与 WS_CHILD 相同 |
|
WS_CLIPCHILDREN |
当在父窗口内绘图时,排除子窗口区域,在创建父窗口时使用这个风格 |
|
WS_CLIPSIBLINGS |
1. 排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到 WM_PAINT 消息时,WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外,只重绘指定的子窗口 |
|
WS_DISABLED |
1. 创建一个初始状态为禁止的子窗口,一个禁止状态的窗口不能接受来自用户的输入信息 |
|
WS_DLGFRAME |
创建一个带对话框边框风格的窗口,这种风格的窗口不能带标题条 |
|
WS_GROUP |
1. 指定一组“控制窗口”的第一个“控制窗口” |
|
WS_HSCROLL |
创建一个有水平滚动条的窗口 |
|
WS_ICONIC |
创建一个初始状态为最小化状态的窗口,与 WS_MINIMIZE 风格相同 |
|
WS_MAXIMIZE |
创建一个初始状态为最大化状态的窗口 |
|
WS_MAXIMIZEBOX |
创建一个具有最大化按钮的窗口,该风格不能与 WS_EX_CONTEXTHELP 风格同时出现,同时必须指定 WS_SYSMENU 风格 |
|
WS_MINIMIZE |
创建一个初始状态为最小化状态的窗口,与 WS_ICONIC 风格相同 |
|
WS_MINIMIZEBOX |
创建一个具有最小化按钮的窗口,该风格不能与 WS_EX_CONTEXTHELP 风格同时出现,同时必须指定 WS_SYSMENU 风格 |
|
WS_OVERLAPPED |
产生一个层叠的窗口,一个层叠的窗口有一个标题条和一个边框,与 WS_TILED 风格相同 |
|
WS_OVERLAPPEDWINDOW |
相当于(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),与 WS_TILEDWINDOW 风格相同 |
|
WS_POPUP |
创建一个弹出式窗口,该风格不能与 WS_CHILD 风格同时使用。 |
|
WS_POPUPWINDOW |
相当于(WS_POPUP | WS_BORDER | WS_SYSMENU),但 WS_CAPTION 和 WS_POPUPWINDOW 必须同时设定才能使窗口某单可见 |
|
WS_SIZEBOX |
创建一个可调边框的窗口,与 WS_THICKFRAME 风格相同 |
|
WS_SYSMENU |
创建一个在标题条上带有窗口菜单的窗口,必须同时设定 WS_CAPTION 风格 |
|
WS_TABSTOP |
1. 创建一个“控制窗口”,在用户按下 Tab 键时可以获得键盘焦点。 |
|
WS_THICKFRAME |
创建一个具有可调边框的窗口,与 WS_SIZEBOX 风格相同 |
|
WS_TILED |
产生一个层叠的窗口,一个层叠的窗口有一个标题和一个边框,与 WS_OVERLAPPED 风格相同 |
|
WS_TILEDWINDOW |
相当于(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),与 WS_OVERLAPPEDWINDOW 风格相同 |
|
WS_VISIBLE |
创建一个初始状态为可见的窗口 |
|
WS_VSCROLL |
创建一个有垂直滚动条的窗口 |
dwExStyle 窗口风格解析
|
窗口风格 |
含义 |
|
WS_EX_ACCEPTFILES |
指定以该风格创建的窗口接受一个拖拽文件 |
|
WS_EX_APPWINDOW |
当窗口可见时,将一个顶层窗口放置到任务栏上 |
|
WS_EX_CLIENTEDGE |
指定窗口有一个带阴影的边界 |
|
WS_EX_COMPOSITED |
1. 使用双缓冲,从低到上的顺序绘制一个窗口的所有子孙,更多内容,请参见备注部分。如果一个窗口指示了 CS_OWNDC 或 CS_CLASSDC 风格,那么不能使用此风格 |
|
WS_EX_CONTEXTHELP |
1. 窗口的标题栏包含一个问号标志。当用户点击了问号标志时,鼠标光标变为一个带有问号的指针。如果用户点击了一个子窗口,则子窗口接收一条 WM_HELP 消息。子窗口应该将这个消息传递给父窗口过程,父窗口再通过 HELP_WM_HELP 命令调用 WinHelp 函数。这个 Help 应用程序显示一个包含子窗口帮助信息的弹出式窗口 |
|
WS_EX_CONTROLPARENT |
窗口本身包含应该参加对话框导航的子窗口,如果它的风格已经被确定,当进行像处理 TAB 建,方向键或键盘助记符等导航操作时,对话框管理器会递归到窗口的子窗口中 |
|
WS_EX_DLGMODALFRAME |
1. 指定窗口带双边 |
|
WS_EX_LAYERED |
1. 指定该窗口是一个分层窗口。如果窗口具有 CS_OWNDC 或 CS_CLASSDC 窗口风格,那么这个风格不能够被使用 |
|
WS_EX_LAYOUTRTL |
如果 shell 语言是 Hebrew,Arabic,或其他支持读顺序对齐的语言,那么窗口的右边缘是水平方向的起点,并且水平值向左递增 |
|
WS_EX_LEFT |
窗口具有左对齐属性,这是默认值 |
|
WS_EX_LEFTSCROLLBAR |
如果 shell 语言是 Hebrew,Arabic,或其他支持读顺序对齐的语言,那么垂直滚动条(如果存在)则在客户区的左边。对于其他语言,该风格被忽略 |
|
WS_EX_LTRREADING |
窗口文本以自左向右的阅读顺序属性来显示,这是默认值 |
|
WS_EX_MDICHILD |
指定窗口是一个 MDI 子窗口 |
|
WS_EX_NOACTIVATE |
1. 如果一个顶层窗口以这种风格创建,那么当用户点击这个窗口时,这个窗口将不会成为前台窗口 |
|
WS_EX_NOINHERITLAYOUT |
窗口不会传递自己的窗口布局给子窗口 |
|
WS_EX_NOPARENTNOTIFY |
以这个风格创建的子窗口在被创建和销毁时不向父窗口发送 WM_PARENTNOTFY 消息 |
|
WS_EX_NOREDIRECTIONBITMAP |
1. 指定这个窗口不会渲染到一个重定向的平面 |
|
WS_EX_OVERLAPPEDWINDOW |
指定窗口是一个重叠的窗口 |
|
WS_EX_PALETTEWINDOW |
指定该窗口是一个具有一组命令的非模态对话框调色板窗口 |
|
WS_EX_RIGHT |
1. 表明这个窗口具有通用的“右对齐”属性。这取决于窗口类。这个风格仅对外壳语言是如Hebrew,Arabic,或其他支持读顺序对齐的语言有效;否则,这个风格将会被忽略 |
|
WS_EX_RIGHTSCROLLBAR |
垂直滚动条(如果存在)在客户区的右边。这是默认值。 |
|
WS_EX_RTLREADING |
如果 shell 语言是 Hebrew,Arabic,或其他支持读顺序对齐的语言,那么窗口文本是以自右向左的阅读顺序属性来显示的。若是其他语言,在该风格被忽略 |
|
WS_EX_STATICEDGE |
为不支持用户输入的项创建一个 3 维边界风格 |
|
WS_EX_TOOLWINDOW |
1. 指定该窗口将被当作一个浮动工具栏来使用。工具窗口的标题栏比一般窗口的标题栏短,并且窗口标题以小字体绘制 |
|
WS_EX_TOPMOST |
1. 指明以该风格创建的窗口应放置在所有非最高层窗口的上面并且停留在其之上,即使窗口未被激活 |
|
WS_EX_TRANSPARENT |
1. 表明只有当位于该窗口之下的同胞窗口(通过同一线程被创建)被绘制时,该窗口才会被绘制。因为在该窗口之下的同胞窗口已经被绘制,所以该窗口显示透明 |
|
WS_EX_WINDOWEDGE |
指定窗口具有边缘凸起的边框 |
返回值:
1. 如果函数成功,返回值为新窗口的句柄;
2. 如果函数失败,返回值为 NULL。
需求:
|
Minimum supported client |
Windows 2000 专业版 [仅桌面应用程序] |
|
Minimum supported server |
Windows 2000 服务器版 [仅桌面应用程序] |
|
Header |
Wingdi.h (包含于 Windows.h) |
|
Library |
User32.lib |
|
DLL |
User32.dll |
|
Unicode and ANSI names |
CreateWindowExW(Unicode) 和 CreateWindowExA (ANSI) |




