HWND CreateWindowW(
[in, optional] lpClassName,
[in, optional] lpWindowName,
[in] dwStyle,
[in] x,
[in] y,
[in] nWidth,
[in] nHeight,
[in, optional] hWndParent,
[in, optional] hMenu,
[in, optional] hInstance,
[in, optional] lpParam
[in, optional] lpClassName
类型: LPCWSTR
一个以 null 结尾的字符串或先前对 RegisterClassEx 函数的调用创建的类原子。 原子必须位于 lpClassName 的低序字中;高序字必须为零。 如果 lpClassName 是字符串,则指定窗口类名称。 类名可以是使用 RegisterClass 或 RegisterClassEx 注册的任何名称,前提是注册类的模块也是创建窗口的模块。 类名也可以是任何预定义的系统类名称。 有关系统类名称的列表,请参阅“备注”部分。
[in, optional] lpWindowName
类型: LPCWSTR
窗口名称。 如果窗口样式指定标题栏,则 lpWindowName 指向的窗口标题将显示在标题栏中。 使用 CreateWindow 创建控件(如按钮、检查框和静态控件)时,请使用 lpWindowName 指定控件的文本。 创建具有 SS_ICON 样式的静态控件时,请使用 lpWindowName 指定图标名称或标识符。 若要指定标识符,请使用语法“#num”。
[in] dwStyle
类型:DWORD
正在创建的窗口的样式。 此参数可以是 窗口样式值以及“备注”部分中指示的控件样式的组合。
[in] x
类型: int
窗口的初始水平位置。 对于重叠或弹出窗口, x 参数是窗口左上角的初始 x 坐标(以屏幕坐标表示)。 对于子窗口, x 是窗口左上角相对于父窗口工作区左上角的 x 坐标。 如果此参数设置为 CW_USEDEFAULT,系统会选择窗口左上角的默认位置,并忽略 y 参数。 CW_USEDEFAULT 仅适用于重叠窗口;如果为弹出窗口或子窗口指定了该参数,则 x 和 y 参数将设置为零。
[in] y
类型: int
窗口的初始垂直位置。 对于重叠或弹出窗口, y 参数是窗口左上角的初始 y 坐标(以屏幕坐标表示)。 对于子窗口, y 是子窗口左上角相对于父窗口工作区左上角的初始 y 坐标。 对于列表框, y 是列表框工作区左上角相对于父窗口工作区左上角的初始 y 坐标。
如果使用 WS_VISIBLE 样式位创建重叠窗口,并且 x 参数设置为 CW_USEDEFAULT,则 y 参数将确定窗口的显示方式。 如果 y 参数CW_USEDEFAULT,则窗口管理器在创建窗口后使用SW_SHOW标志调用 ShowWindow。 如果 y 参数是其他某个值,则窗口管理器使用该值作为 nCmdShow 参数调用 ShowWindow。
[in] nWidth
类型: int
窗口的宽度(以设备单位为单位)。 对于重叠窗口, nWidth 是窗口的宽度、屏幕坐标或 CW_USEDEFAULT。 如果 nWidth为CW_USEDEFAULT,系统会为窗口选择默认宽度和高度;默认宽度从初始 x 坐标扩展到屏幕的右边缘,默认高度从初始 y 坐标扩展到图标区域的顶部。 CW_USEDEFAULT 仅适用于重叠窗口;如果为弹出窗口或子窗口指定 了CW_USEDEFAULT , 则 nWidth 和 nHeight 设置为零。
[in] nHeight
类型: int
窗口的高度(以设备单位为单位)。 对于重叠窗口, nHeight 是窗口的高度(以屏幕坐标表示)。 如果 nWidth 设置为 CW_USEDEFAULT,系统会忽略 nHeight。
[in, optional] hWndParent
类型:HWND
所创建的窗口的父窗口或所有者窗口的句柄。 若要创建子窗口或拥有的窗口,请提供有效的窗口句柄。 此参数对于弹出窗口是可选的。
若要创建 仅消息窗口,请向现有仅消息窗口提供 HWND_MESSAGE 或句柄。
[in, optional] hMenu
类型: HMENU
菜单的句柄,或根据窗口样式指定子窗口标识符。 对于重叠或弹出窗口, hMenu 标识要与窗口一起使用的菜单;如果要使用类菜单,它可以为 NULL 。 对于子窗口, hMenu 指定子窗口标识符,即对话框控件用来通知其父级事件的整数值。 应用程序确定子窗口标识符;对于具有相同父窗口的所有子窗口,它必须是唯一的。
[in, optional] hInstance
类型: HINSTANCE
要与窗口关联的模块实例的句柄。
[in, optional] lpParam
类型: LPVOID
指向要通过 CREATESTRUCT 结构传递到窗口的值的指针, (WM_CREATE消息的 lParam 参数指向的 lpCreateParams 成员) 。 此消息在返回之前由此函数发送到创建的窗口。
如果应用程序调用 CreateWindow 来创建 MDI 客户端窗口, lpParam 应指向 CLIENTCREATESTRUCT 结构。 如果 MDI 客户端窗口调用 CreateWindow 来创建 MDI 子窗口, lpParam 应指向 MDICREATESTRUCT 结构。 如果不需要其他数据,lpParam 可能为 NULL。
类型:HWND
如果函数成功,则返回值是新窗口的句柄。
如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。
在返回之前, CreateWindow 会将 WM_CREATE 消息发送到窗口过程。 对于重叠窗口、弹出窗口和子窗口, CreateWindow 会将 WM_CREATE、 WM_GETMINMAXINFO和 WM_NCCREATE 消息发送到窗口。 WM_CREATE消息的 lParam 参数包含指向 CREATESTRUCT 结构的指针。 如果指定 了WS_VISIBLE 样式, CreateWindow 将向窗口发送激活和显示窗口所需的所有消息。
如果创建的窗口是子窗口,则其默认位置位于 Z 顺序的底部。 如果创建的窗口是顶级窗口,则其默认位置位于 Z 顺序 (的顶部,但位于所有最顶部窗口下方,除非创建的窗口本身是最顶层) 。
有关控制任务栏是否显示所创建窗口的按钮的信息,请参阅 管理任务栏按钮。
有关删除窗口的信息,请参阅 DestroyWindow 函数。
可以在 lpClassName 参数中指定以下预定义系统类。 请注意可在 dwStyle 参数中使用的相应控件样式。
BUTTON
指定一个小矩形子窗口,该窗口表示用户可以单击以将其打开或关闭的按钮。 按钮控件可以单独使用,也可以成组使用,并且可以不带文本进行标记或显示。 当用户单击按钮控件时,按钮控件通常会更改外观。 有关详细信息,请参阅 按钮
有关可在 dwStyle 参数中指定的按钮样式表,请参阅 按钮样式。
COMBOBOX
指定由列表框和类似于编辑控件的选择字段组成的控件。 使用此样式时,应用程序应随时显示列表框或启用下拉列表框。 如果列表框可见,在选择字段中键入字符会突出显示与键入的字符匹配的第一个列表框条目。 相反,选择列表框中的项会在选择字段中显示所选文本。
有关详细信息,请参阅 组合框。 有关可以在 dwStyle 参数中指定的组合框样式表,请参阅 组合框样式。
指定一个矩形子窗口,用户可以从键盘键入文本。 用户选择控件,并通过单击控件或通过按 TAB 键移动到控件来为它提供键盘焦点。 编辑控件显示闪烁的插入点时,用户可以键入文本;使用鼠标移动光标,选择要替换的字符,或定位光标以插入字符:或使用 BACKSPACE 键删除字符。 有关详细信息,请参阅 编辑控件。
有关可在 dwStyle 参数中指定的编辑控件样式的表,请参阅 编辑控件样式。
LISTBOX
指定字符串列表。 每当应用程序必须提供用户可从中选择的名称列表(如文件名)时,请指定此控件。 用户可以通过单击来选择字符串。 突出显示所选字符串,并将通知消息传递到父窗口。 有关详细信息,请参阅 列表框。
有关可在 dwStyle 参数中指定的列表框样式表,请参阅 列表框样式。
MDICLIENT
指定 MDI 客户端窗口。 此窗口接收控制 MDI 应用程序的子窗口的消息。 建议的样式位是 WS_CLIPCHILDREN 和 WS_CHILD。 指定 WS_HSCROLL 和 WS_VSCROLL 样式以创建允许用户将 MDI 子窗口滚动到视图中的 MDI 客户端窗口。
有关详细信息,请参阅 多文档接口。
RichEdit
指定 Microsoft Rich Edit 1.0 控件。 此窗口允许用户使用字符和段落格式查看和编辑文本,并且可以将嵌入式组件对象模型 (COM) 对象。 有关详细信息,请参阅 Rich Edit 控件。
有关可以在 dwStyle 参数中指定的丰富编辑控件样式的表,请参阅 Rich Edit 控件样式。
RICHEDIT_CLASS
指定 Microsoft Rich Edit 2.0 控件。 此控件允许用户使用字符和段落格式查看和编辑文本,并且可以包含嵌入的 COM 对象。 有关详细信息,请参阅 Rich Edit 控件。
有关可以在 dwStyle 参数中指定的丰富编辑控件样式的表,请参阅 Rich Edit 控件样式。
SCROLLBAR
指定一个矩形,该矩形包含一个滚动框,两端都有方向箭头。 每当用户单击控件时,滚动条就会向其父窗口发送通知消息。 如有必要,父窗口负责更新滚动框的位置。 有关详细信息,请参阅 滚动条。
有关可在 dwStyle 参数中指定的滚动条控件样式的表,请参阅 滚动条控件样式。
STATIC
指定用于标记、框或分隔其他控件的简单文本字段、框或矩形。 静态控件不采用任何输入,也不提供任何输出。 有关详细信息,请参阅 静态控件。
有关可在 dwStyle 参数中指定的静态控件样式表,请参阅 静态控件样式。
CreateWindow 作为对 CreateWindowEx 函数的调用实现,如下所示。
#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#ifdef UNICODE
#define CreateWindow CreateWindowW
#else
#define CreateWindow CreateWindowA
#endif
有关示例,请参阅 使用窗口类。
winuser.h 标头将 CreateWindow 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。