CreateWindow函数创建一个重叠的弹出窗口或子窗口。它指定窗口类,窗口标题,窗口样式和(可选)窗口的初始位置和大小。该函数还指定窗口的父项或所有者(如果有)以及窗口的菜单。
HWND CreateWindow(
LPCTSTR 【lpClassName】, | //指向注册类名的指针 |
LPCTSTR 【lpWindowName】, | //指向窗口名称的指针 |
DWORD 【dwStyle】, | //窗口样式 |
INT 【x】, | //窗口的水平位置 |
INT 【y】, | //窗口的垂直位置 |
INT 【nWidth】, | //窗口宽度 |
INT 【nHeight参数】, | //窗口高度 |
HWND 【hWndParent】, | //处理父或所有者窗口 |
HMENU 【HMENU】, | //处理菜单或子窗口标识符 |
HANDLE 【的hInstance】, | //处理应用程序实例 |
LPVOID 【// pointer to window-creation data】 | //指向窗口创建数据的指针 |
); |
参数
【lpClassName】
指向一个空值终止的字符串或是一个整数原子。如果这个参数是一个原子,它必须是由先前调用GlobalAddAtom函数创建的全局原子。原子,小于0xC000的16位值必须在【lpClassName】的低位字中;高阶字必须为零。
如果【lpClassName】是字符串,则指定窗口类名称。类名可以是使用RegisterClass函数或任何预定义的控制类名称注册的任何名称。有关完整列表,请参阅以下备注部分。
【lpWindowName】
指向指定窗口名称的以null结尾的字符串。
【dwStyle】
指定正在创建的窗口的样式。此参数可以是以下备注部分中列出的窗口样式和控件样式的组合。
【x】
指定窗口的初始水平位置。对于重叠或弹出窗口,【x】参数是屏幕坐标中窗口左上角的初始x坐标。对于子窗口,【x】是相对于父窗口的客户区域左上角的窗口左上角的x坐标。
如果此参数设置为CW_USEDEFAULT,Windows将选择窗口左上角的默认位置,并忽略【y】参数。CW_USEDEFAULT仅对重叠的窗口有效;如果为弹出窗口或子窗口指定了参数,则【x】和【y】参数设置为零。
【y】
指定窗口的初始垂直位置。对于重叠或弹出窗口,【y】参数是屏幕坐标中窗口左上角的初始y坐标。对于子窗口,【y】是子窗口左上角相对于父窗口客户区域左上角的初始y坐标。对于列表框,【y】是列表框的客户区相对于父窗口的客户区的左上角的左上角的初始y坐标。
如果使用WS_VISIBLE样式位集创建了重叠的窗口,并且【x】参数设置为CW_USEDEFAULT,Windows将忽略【y】参数。
【nWidth】
指定窗口的宽度(以设备为单位)。对于重叠的窗口,【nWidth】是窗口的宽度,屏幕坐标或CW_USEDEFAULT。如果【nWidth】为CW_USEDEFAULT,Windows将为窗口选择默认的宽度和高度;默认宽度从初始x坐标延伸到屏幕的右边缘,默认高度从初始y坐标延伸到图标区域的顶部。CW_USEDEFAULT仅对重叠的窗口有效;如果为弹出窗口或子窗口指定了CW_USEDEFAULT,则【nWidth】和【nHeight参数】设置为零。
【nHeight参数】
指定窗口的高度(以设备为单位)。对于重叠窗口,【nHeight参数】是屏幕坐标中窗口的高度。如果【nWidth】设置为CW_USEDEFAULT,Windows将忽略【nHeight参数】.
【hWndParent】
标识正在创建的窗口的父窗口或所有者窗口。当创建子窗口或拥有的窗口时,必须提供有效的窗口句柄。子窗口仅限于其父窗口的客户区域。拥有的窗口是当其所有者最小化时其所有者窗口被销毁或隐藏时被破坏的重叠窗口;它始终显示在其所有者窗口的顶部。虽然【dwStyle】参数包含WS_CHILD样式,但如果【dwStyle】包含WS_POPUP样式,则此参数必须指定有效的句柄。
【HMENU】
标识菜单,或根据窗口样式指定子窗口标识符。对于重叠或弹出窗口,【HMENU】标识要在窗口中使用的菜单;如果要使用类菜单,它可以为NULL。对于子窗口,【HMENU】指定子窗口标识符,即对话框控件用于通知其父项的事件的整数值。应用程序确定子窗口标识符;它对于具有相同父窗口的所有子窗口必须是唯一的。
【的hInstance】
标识与窗口关联的模块的实例。
【// pointer to window-creation data】
通过WM_CREATE消息的【lParam的】参数引用的CREATESTRUCT结构指向传递到窗口的值。如果应用程序调用{??989796151}创建多文档界面(MDI)客户端窗口,则【// pointer to window-creation data】必须指向CLIENTCREATESTRUCT结构。
返回值
如果函数成功,则返回值是新窗口的句柄。
如果函数失败,返回值为NULL。要获取扩展错误信息,请调用GetLastError.
备注
在返回之前,CreateWindow向窗口过程发送WM_CREATE消息。
对于重叠,弹出窗口和子窗口,CreateWindow向窗口发送WM_CREATE,WM_GETMINMAXINFO和WM_NCCREATE消息。WM_CREATE消息的【lParam的】参数包含指向CREATESTRUCT结构的指针。如果指定了WS_VISIBLE样式,CreateWindow将窗口发送激活并显示窗口所需的所有消息。
如果窗口样式指定标题栏,标题栏中将显示【lpWindowName】指向的窗口标题。使用CreateWindow创建控件(如按钮,复选框和静态控件)时,请使用【lpWindowName】指定控件的文本。
如果在链接应用程序时指定Windows 4.x版,则其窗口不能有字幕按钮,除非它们还有窗口菜单。这不是您链接指定Windows版本3.x的应用程序的要求。
以下预定义的控制类可以在【lpClassName】参数中指定:
类 | 含义 |
BUTTON | 指定一个小矩形子窗口,表示用户可以单击按钮打开或关闭按钮。按钮控件可以单独使用或分组使用,它们可以被标记或不带文本显示。当用户点击它们时,按钮控件通常会改变外观。 |
COMBOBOX | 指定由列表框和与编辑控件相似的选择字段组成的控件。使用此样式时,应用程序应始终显示列表框或启用下拉列表框。 |
根据组合框的样式,用户可以或不能编辑选择字段的内容。如果列表框是可见的,在选择字段中键入字符突出显示与键入的字符匹配的第一个列表框条目。相反,选择列表框中的项目将在选择字段中显示所选文本。 | |
EDIT | 指定一个矩形子窗口,用户可以从中键入键入的文本。用户选择该控件,并通过点击或通过按Tab键向其移动键盘焦点。当编辑控件显示闪烁的插入符时,用户可以键入文本;使用鼠标移动光标,选择要替换的字符,或者放置光标插入字符;或使用BACKSPACE键删除字符。 |
编辑控件使用可变间距系统字体并显示ANSI字符集中的字符。WM_SETFONT消息也可以发送到编辑控件以更改默认字体。 | |
编辑控件将制表符字符扩展为将插入符移动到下一个制表符停止所需的空格字符数。假设制表位置处于每第八个字符位置。 | |
LISTBOX | 指定字符串列表。只要应用程序必须呈现用户可以选择的名称(如文件名)列表,则指定此控件。用户可以通过单击来选择一个字符串。突出显示所选字符串,并将通知消息传递到父窗口。使用带有列表框的垂直或水平滚动条来滚动控制窗口太长的列表。根据需要,列表框会自动隐藏或显示滚动条。 |
MDICLIENT | 指定MDI客户端窗口。此窗口接收到控制MDI应用程序的子窗口的消息。推荐的样式位为WS_CLIPCHILDREN和WS_CHILD。指定WS_HSCROLL和WS_VSCROLL样式来创建MDI客户端窗口,允许用户将MDI子窗口滚动到视图中。 |
SCROLLBAR | 指定一个包含滚动框并在两端都有方向箭头的矩形。只要用户单击控件,滚动条就会向其父窗口发送通知消息。如果需要,父窗口负责更新滚动框的位置。滚动条控件具有与普通窗口中使用的滚动条相同的外观和功能。但是,与滚动条不同,滚动条控件可以放置在窗口的任何位置,以便在窗口需要滚动输入时使用。 |
滚动条类还包括大小框控件。大小框是一个小矩形,用户可以展开以更改窗口的大小。 | |
STATIC | 指定用于标签,框或单独其他控件的简单文本字段,框或矩形。静态控件不需要输入,也不提供输出。 |
可以在【dwStyle】参数中指定以下窗口样式:
样式 | 含义 |
WS_BORDER | 创建一个具有细线边框的窗口。 |
WS_CAPTION | 创建一个标题栏(包括WS_BORDER样式)的窗口。 |
WS_CHILD | 创建一个子窗口。此样式不能与WS_POPUP样式一起使用。 |
WS_CHILDWINDOW | 与WS_CHILD样式相同。 |
WS_CLIPCHILDREN | 排除在父窗口内进行绘图时子窗口占用的区域。创建父窗口时使用此样式。 |
WS_CLIPSIBLINGS | 剪辑儿童窗户相对于彼此;也就是说,当特定子窗口收到WM_PAINT消息时,WS_CLIPSIBLINGS样式会将所有其他重叠子窗口剪切出要更新的子窗口区域。如果未指定WS_CLIPSIBLINGS并且子窗口重叠,则在子窗口的客户区内绘制时,可以在邻近子窗口的客户区中绘制。 |
WS_DISABLED | 创建一个初始禁用的窗口。禁用的窗口无法从用户接收输入。 |
WS_DLGFRAME | 创建一个具有通常与对话框一起使用的样式边框的窗口。具有此样式的窗口不能有标题栏。 |
WS_GROUP | 指定一组控件的第一个控件。该组由此第一个控件和之后定义的所有控件组成,直到使用WS_GROUP样式的下一个控件。每个组中的第一个控件通常具有WS_TABSTOP样式,以便用户可以从组移动到组。用户随后可以使用方向键将键盘焦点从组中的一个控件更改为组中的下一个控件。 |
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_BORDER,WS_POPUP和WS_SYSMENU样式的弹出窗口。必须组合WS_CAPTION和WS_POPUPWINDOW样式才能使窗口菜单可见。 |
WS_SIZEBOX | 创建一个具有大小边框的窗口。与WS_THICKFRAME风格相同。 |
WS_SYSMENU | 在其标题栏上创建一个具有窗口菜单的窗口。还必须指定WS_CAPTION样式。 |
WS_TABSTOP | 指定当用户按TAB键时可以接收键盘焦点的控件。按Tab键将键盘焦点更改为具有WS_TABSTOP样式的下一个控件。 |
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 | 创建一个具有垂直滚动条的窗口。 |
以下按钮样式(在BUTTON类中)可以在【dwStyle】参数中指定:
样式 | 含义 |
BS_3STATE | 创建一个与复选框相同的按钮,不同之处在于框可以是灰色的,也可以是勾选或取消选中。使用灰色状态显示复选框的状态未确定。 |
BS_AUTO3STATE | 创建与三状态复选框相同的按钮,除了用户选择该框之后,框会更改其状态。状态通过检查,灰色和未检查循环。 |
BS_AUTOCHECKBOX | 创建与复选框相同的按钮,但每次用户选中该复选框时,检查状态将自动在选中和未选中之间切换。 |
BS_AUTORADIOBUTTON | 创建与单选按钮相同的按钮,除非用户选择该按钮,Windows会自动将按钮的检查状态设置为检查状态,并自动将同一组中所有其他按钮的检查状态设置为未选中。 |
BS_CHECKBOX | 创建一个小的,空的复选框与文本。默认情况下,文本显示在复选框的右侧。要显示复选框左侧的文本,请将此标志与BS_LEFTTEXT样式(或等效的BS_RIGHTBUTTON样式)组合。 |
BS_DEFPUSHBUTTON | 创建一个按钮,其行为类似于BS_PUSHBUTTON样式按钮,但也有一个沉重的黑色边框。如果按钮在对话框中,用户可以通过按ENTER键选择按钮,即使按钮没有输入焦点。此样式对于使用户能够快速选择最可能的(默认)选项非常有用。 |
BS_GROUPBOX | 创建一个矩形,其中可以对其他控件进行分组。与此样式相关联的任何文本都将显示在矩形左上角。 |
BS_LEFTTEXT | 在单选按钮或复选框样式组合时,单选按钮左侧的文本或复选框。与BS_RIGHTBUTTON风格相同。 |
BS_OWNERDRAW | 创建一个所有者绘制的按钮。当按钮被创建时,所有者窗口接收到WM_MEASUREITEM消息,当按钮的视觉方面发生变化时,收到WM_DRAWITEM消息。不要将BS_OWNERDRAW样式与任何其他按钮样式相结合。 |
BS_PUSHBUTTON | 创建一个按钮,当用户选择按钮时,将按钮发送到所有者窗口WM_COMMAND. |
BS_RADIOBUTTON | 用文字创建一个小圆。默认情况下,文字显示在圈子的右侧。要在圆圈左侧显示文本,请将此标志与BS_LEFTTEXT样式(或等效的BS_RIGHTBUTTON样式)相结合。使用单选按钮进行相关但互相排斥的组合。 |
BS_USERBUTTON | 已经过时,但与16位版本的Windows兼容。基于Win32的应用程序应该使用BS_OWNERDRAW。 |
BS_BITMAP | 指定按钮显示位图。 |
BS_BOTTOM | 将文本放在按钮矩形的底部。 |
BS_CENTER | 在按钮矩形中居中文字。 |
BS_ICON | 指定该按钮显示一个图标。 |
BS_LEFT | 左键对齐按钮矩形中的文本。但是,如果按钮是不具有BS_RIGHTBUTTON样式的复选框或单选按钮,则该文本在复选框或单选按钮的右侧保持对齐。 |
BS_MULTILINE | 如果文本字符串太长而不能在按钮矩形中的单行上,则将按钮文本包装到多行。 |
BS_NOTIFY | 启用按钮将BN_DBLCLK,BN_KILLFOCUS和BN_SETFOCUS通知消息发送到其父窗口。请注意,按钮发送BN_CLICKED通知消息,无论它是否具有此样式。 |
BS_PUSHLIKE | 按钮(如复选框,三态复选框或单选按钮)看起来像一个按钮。当按下或检查时,该按钮看起来会被抬起,当被按下或检查时,该按钮下沉。 |
BS_RIGHT | 右键对齐按钮矩形中的文本。但是,如果按钮是不具有BS_RIGHTBUTTON风格的复选框或单选按钮,则该文本在复选框或单选按钮的右侧右对齐。 |
BS_RIGHTBUTTON | 在按钮矩形的右侧放置单选按钮的圆圈或复选框的正方形。与BS_LEFTTEXT风格相同。 |
BS_TEXT | 指定按钮显示文本。 |
BS_TOP | 将文本放在按钮矩形的顶部。 |
BS_VCENTER | 在按钮矩形的中间(垂直)上放置文本。 |
可以在【dwStyle】参数中指定以下组合框样式(在COMBOBOX类中):
样式 | 含义 |
CBS_AUTOHSCROLL | 当用户在行尾输入一个字符时,将编辑控件中的文本自动滚动到右侧。如果未设置此样式,则只允许符合矩形边界的文本。 |
CBS_DISABLENOSCROLL | 当框不包含足够的项目滚动时,在列表框中显示禁用的垂直滚动条。没有这种风格,当列表框不包含足够的项目时,滚动条被隐藏。 |
CBS_DROPDOWN | 与CBS_SIMPLE类似,除了列表框不显示,除非用户选择编辑控件旁边的图标。 |
CBS_DROPDOWNLIST | 与CBS_DROPDOWN类似,不同之处在于编辑控件由在列表框中显示当前选择的静态文本项替代。 |
CBS_HASSTRINGS | 指定所有者绘制的组合框包含由字符串组成的项目。组合框维护字符串的内存和地址,因此应用程序可以使用CB_GETLBTEXT消息来检索特定项目的文本。 |
CBS_LOWERCASE | 转换为小写输入到组合框的编辑控件中的大写字符。 |
CBS_NOINTEGRALHEIGHT | 指定组合框的大小完全是应用程序创建组合框时指定的大小。通常,Windows将组合框设置为不显示部分项目。 |
CBS_OEMCONVERT | 转换在组合框编辑控件中输入的文本。该文本从Windows字符集转换为OEM字符集,然后返回到Windows集合。当应用程序调用{??989796434}函数将组合框中的Windows字符串转换为OEM字符时,可确保适当的字符转换。对于包含文件名的组合框,此样式最为有用,仅适用于使用CBS_SIMPLE或CBS_DROPDOWN样式创建的组合框。 |
CBS_OWNERDRAWFIXED | 指定列表框的所有者负责绘制其内容,并且列表框中的项目都具有相同的高度。创建组合框时,所有者窗口将收到WM_MEASUREITEM消息,当组合框的视觉方面已更改时,该消息将显示WM_DRAWITEM. |
CBS_OWNERDRAWVARIABLE | 指定列表框的所有者负责绘制其内容,并且列表框中的项目的高度是可变的。创建组合框时,所有者窗口将为组合框中的每个项目收到WM_MEASUREITEM消息;当组合框的视觉方面已更改时,所有者窗口将收到WM_DRAWITEM消息。 |
CBS_SIMPLE | 随时显示列表框。列表框中的当前选择显示在编辑控件中。 |
CBS_SORT | 将字符串自动排序到列表框中。 |
CBS_UPPERCASE | 转换为输入到组合框编辑控件的任何小写字符。 |
以下编辑控件样式(在EDIT类中)可以在【dwStyle】参数中指定:
样式 | 含义 |
ES_AUTOHSCROLL | 当用户在行尾输入一个字符时,自动将文本向右滚动10个字符。当用户按ENTER键时,控件将所有文本回滚到位置0。 |
ES_AUTOVSCROLL | 当用户按最后一行的ENTER键时,自动将文本滚动到一页。 |
ES_CENTER | 将多行编辑控件中的文本居中。 |
ES_LEFT | 左对齐文字。 |
ES_LOWERCASE | 将所有字符转换为小写,因为它们键入编辑控件。 |
ES_MULTILINE | 指定多行编辑控件。默认为单行编辑控件。 |
当多行编辑控件在对话框中时,按ENTER键的默认响应是激活默认按钮。要使用ENTER键作为回车,请使用ES_WANTRETURN样式。 | |
当多行编辑控件不在对话框中并且指定了ES_AUTOVSCROLL样式时,编辑控件显示尽可能多的行,并且当用户按ENTER键时垂直滚动。如果您没有指定ES_AUTOVSCROLL,编辑控件将显示尽可能多的行,如果用户在不再显示行的情况下按ENTER键,则会发出哔声。 | |
如果指定了ES_AUTOHSCROLL样式,则当插入符号越过控件的右边缘时,多行编辑控件将自动水平滚动。要启动新行,用户必须按ENTER键。如果不指定ES_AUTOHSCROLL,则必要时,控件将自动将单词包装到下一行的开头。如果用户按ENTER键,也会启动新行。窗口大小确定单词换行的位置。如果窗口大小更改,则换行位置会更改,并重新显示文本。 | |
多行编辑控件可以有滚动条。带有滚动条的编辑控件处理其自己的滚动条消息。请注意,没有滚动条的编辑控件如前面段落所述滚动,并处理父窗口发送的任何滚动消息。 | |
ES_NOHIDESEL | 取消编辑控件的默认行为。当控件输入焦点时,默认行为隐藏选择,当控件接收到输入焦点时,该选项反转。如果指定ES_NOHIDESEL,则所选文本将被反转,即使控件没有焦点。 |
ES_NUMBER | 只允许在编辑控件中输入数字。 |
ES_OEMCONVERT | 转换在编辑控件中输入的文本。该文本从Windows字符集转换为OEM字符集,然后返回到Windows集合。当应用程序调用{??989796500}函数将编辑控件中的Windows字符串转换为OEM字符时,可确保适当的字符转换。对于包含文件名的编辑控件,此样式最为有用。 |
ES_PASSWORD | 为编辑控件中输入的每个字符显示一个星号(*)。您可以使用EM_SETPASSWORDCHAR消息来更改显示的字符。 |
ES_READONLY | 防止用户在编辑控件中输入或编辑文本。 |
ES_RIGHT | 右对齐多行编辑控件中的文本。 |
ES_UPPERCASE | 将所有字符转换为大写,因为它们键入编辑控件。 |
ES_WANTRETURN | 指定当用户在对话框中输入文本到多行编辑控件中时按ENTER键时插入回车符。如果不指定此样式,按ENTER键具有与按下对话框的默认按钮相同的效果。这种风格对单行编辑控件没有影响。 |
以下列表框控件样式(在LISTBOX类中)可以在【dwStyle】参数中指定:
样式 | 含义 |
LBS_DISABLENOSCROLL | 当框不包含足够的项目滚动时,显示列表框中禁用的垂直滚动条。如果不指定此样式,则当列表框中不包含足够的项目时,滚动条将被隐藏。 |
LBS_EXTENDEDSEL | 允许使用SHIFT键和鼠标或特殊组合键选择多个项目。 |
LBS_HASSTRINGS | 指定列表框包含由字符串组成的项目。列表框维护字符串的内存和地址,以便应用程序可以使用LB_GETTEXT消息来检索特定项目的文本。默认情况下,除了所有者绘制的列表框之外的所有列表框都有此样式。您可以创建具有或不具有此样式的所有者绘制的列表框。 |
LBS_MULTICOLUMN | 指定水平滚动的多列列表框。LB_SETCOLUMNWIDTH消息设置列的宽度。 |
LBS_MULTIPLESEL | 每次用户单击或双击列表框中的字符串时,可以打开或关闭字符串选择。用户可以选择任意数量的字符串。 |
LBS_NODATA | 指定无数据列表框。当列表框中的项目计数将超过一千时,指定此样式。无数据列表框也必须具有LBS_OWNERDRAWFIXED样式,但不能具有LBS_SORT或LBS_HASSTRINGS样式。 |
无数据列表框类似于所有者绘制的列表框,除了它不包含项的字符串或位图数据。添加,插入或删除项目的命令始终忽略任何给定的项目数据;在列表框中查找字符串的请求总是失败。当必须绘制一个项目时,Windows会将WM_DRAWITEM消息发送到所有者窗口。使用WM_DRAWITEM消息传递的DRAWITEMSTRUCT结构的DRAWITEMSTRUCT结构的itemID成员指定要绘制的项目的行号。无数据列表框不发送WM_DELETEITEM消息。 | |
LBS_NOINTEGRALHEIGHT | 指定列表框的大小完全是应用程序在创建列表框时指定的大小。通常,Windows将列出一个列表框,使列表框不显示部分项目。 |
LBS_NOREDRAW | 指定更改时列表框的外观不会更新。您可以随时通过发送WM_SETREDRAW消息来更改此样式。 |
LBS_NOSEL | 指定列表框包含可以查看但未选择的项目。 |
LBS_NOTIFY | 当用户单击或双击列表框中的字符串时,通过输入消息通知父窗口。 |
LBS_OWNERDRAWFIXED | 指定列表框的所有者负责绘制其内容,并且列表框中的项目具有相同的高度。创建列表框时,所有者窗口将收到一条WM_MEASUREITEM消息,并且列表框的可视方面已更改时显示WM_DRAWITEM消息。 |
LBS_OWNERDRAWVARIABLE | 指定列表框的所有者负责绘制其内容,并且列表框中的项目的高度是可变的。当组合框创建时,所有者窗口会收到组合框中每个项目的WM_MEASUREITEM消息,当组合框的视觉方面已更改时,所有者窗口将收到一条WM_DRAWITEM消息。 |
LBS_SORT | 按字母顺序排列列表框中的字符串。 |
LBS_STANDARD | 按字母顺序排列列表框中的字符串。只要用户单击或双击字符串,父窗口就会收到输入消息。列表框在所有方面都有边框。 |
LBS_USETABSTOPS | 在绘制字符串时,启用列表框以识别和展开制表符。默认选项卡位置为32个对话框单位。对话框单元是水平或垂直距离。一个水平对话框单位等于当前对话框基本宽度单位的四分之一。Windows将根据当前系统字体的高度和宽度来计算这些单位。GetDialogBaseUnits函数返回当前对话框的基本单位(以像素为单位)。 |
LBS_WANTKEYBOARDINPUT | 指定列表框的所有者在用户按下一个键并且列表框具有输入焦点时接收WM_VKEYTOITEM消息。这使得应用程序能够对键盘输入进行特殊处理。 |
以下滚动条样式(在SCROLLBAR类中)可以在【dwStyle】参数中指定:
样式 | 含义 |
SBS_BOTTOMALIGN | 将滚动条的底边与由参数【x】,【y】,【nWidth】和【nHeight参数】定义的矩形的下边缘对齐。滚动条具有系统滚动条的默认高度。使用SBS_HORZ风格的风格。 |
SBS_HORZ | 指定水平滚动条。如果既不指定SBS_BOTTOMALIGN也不指定SBS_TOPALIGN样式,则滚动条具有由【x】,【y】,【nWidth】和【nHeight参数】定义的高度,宽度和位置。 |
SBS_LEFTALIGN | 将滚动条的左边缘与参数【x】,【y】,【nWidth】和【nHeight参数】定义的矩形的左边缘对齐。滚动条具有系统滚动条的默认宽度。将此样式与SBS_VERT样式一起使用。 |
SBS_RIGHTALIGN | 将滚动条的右边缘与参数【x】,【y】,【nWidth】和【nHeight参数】定义的矩形右边缘对齐。滚动条具有系统滚动条的默认宽度。将此样式与SBS_VERT样式一起使用。 |
SBS_SIZEBOX | 指定一个大小框。如果既不指定SBS_SIZEBOXBOTTOMRIGHTALIGN也不指定SBS_SIZEBOXTOPLEFTALIGN样式,则大小框具有参数【x】,【y】,【nWidth】和【nHeight参数】指定的高度,宽度和位置。 |
SBS_SIZEBOXBOTTOMRIGHTALIGN | 将大小框的右下角与参数【x】,【y】,【nWidth】和【nHeight参数】指定的矩形右下角对齐。大小框具有系统大小框的默认大小。使用此样式与SBS_SIZEBOX样式。 |
SBS_SIZEBOXTOPLEFTALIGN | 将大小框的左上角与参数【x】,【y】,【nWidth】和【nHeight参数】指定的矩形的左上角对齐。大小框具有系统大小框的默认大小。使用此样式与SBS_SIZEBOX样式。 |
SBS_SIZEGRIP | 与SBS_SIZEBOX相同,但具有凸起边缘。 |
SBS_TOPALIGN | 将滚动条的顶边与由参数【x】,【y】,【nWidth】和【nHeight参数】定义的矩形的顶边对齐。滚动条具有系统滚动条的默认高度。使用SBS_HORZ风格的风格。 |
SBS_VERT | 指定垂直滚动条。如果既不指定SBS_RIGHTALIGN也不指定SBS_LEFTALIGN样式,则滚动条的高度,宽度和位置由参数【x】,【y】,【nWidth】和【nHeight参数】指定。 |
以下静态控件样式(在STATIC类中)可以在【dwStyle】参数中指定。静态控件只能有以下一种样式:
样式 | 描述 |
SS_BITMAP | 指定要在静态控件中显示位图。错误代码文本是资源文件中其他地方定义的位图(而不是文件名)的名称。该风格忽略【nWidth】和【nHeight参数】参数;控件自动调整大小以适应位图。 |
SS_BLACKFRAME | 指定一个框与框架绘制的颜色相同。这种颜色在默认的Windows配色方案中是黑色的。 |
SS_BLACKRECT | 指定一个填充当前窗口框架颜色的矩形。这种颜色在默认的Windows配色方案中是黑色的。 |
SS_CENTER | 指定一个简单的矩形,并将矩形中的错误代码文本居中。在显示文本之前格式化文本。延伸超过行尾的单词将自动包装到下一个居中行的开头。 |
SS_CENTERIMAGE | 指定当控件调整大小时,具有SS_BITMAP或SS_ICON样式的静态控件的中点将保持固定。四面调整以适应新的位图或图标。 如果静态控件具有SS_BITMAP样式,并且位图小于控件的客户区域,则客户区域将填充位图左上角像素的颜色。如果静态控件具有SS_ICON样式,该图标似乎不会绘制客户端区域。 |
SS_GRAYFRAME | 指定一个框架,其框架与屏幕背景(桌面)的颜色相同。这种颜色在默认的Windows配色方案中是灰色的。 |
SS_GRAYRECT | 指定用当前屏幕背景颜色填充的矩形。这种颜色在默认的Windows配色方案中是灰色的。 |
SS_ICON | 指定对话框中显示的图标。给定的文本是在资源文件的其他位置定义的图标的名称(而不是文件名)。该风格忽略【nWidth】和【nHeight参数】参数;该图标自动调整大小。 |
SS_LEFT | 指定一个简单的矩形,并将矩形中的给定文本左对齐。在显示文本之前格式化文本。延伸超过行尾的单词将自动包装到下一个左对齐行的开头。 |
SS_LEFTNOWORDWRAP | 指定一个简单的矩形,并将矩形中的给定文本左对齐。标签扩展,但字不包裹。延伸超过行尾的文本被剪切。 |
SS_METAPICT | 指定要在静态控件中显示的图元文件图片。给定的文本是资源文件中其他位置定义的图元文件图片(而不是文件名)的名称。元文件静态控制具有固定的大小;图元文件图片被缩放以适应静态控件的客户区域。 |
SS_NOPREFIX | 防止将控件文本中的任何&符(&)字符解释为加速器前缀字符。这些将被删除,并且字符串中的下一个字符被下划线显示。任何定义的静态控件都可以包含此静态控件样式。 |
应用程序可以使用按位OR(|)运算符将SS_NOPREFIX与其他样式组合。当可能包含和号(&)的文件名或其他字符串必须在对话框中的静态控件中显示时,这将非常有用。 | |
SS_NOTIFY | 当用户单击或双击控件时,发送父窗口STN_CLICKED和STN_DBLCLK通知消息。 |
SS_RIGHT | 指定一个简单的矩形,并右键对齐矩形中的给定文本。在显示文本之前格式化文本。延伸超过行尾的单词将自动包装到下一个右对齐行的开头。 |
SS_RIGHTIMAGE | 指定当控件调整大小时,具有SS_BITMAP或SS_ICON样式的静态控件的右下角将保持固定。仅调整顶部和左侧以适应新的位图或图标。 |
SS_SIMPLE | 指定一个简单的矩形,并在矩形中显示一行左对齐的文本。文字行不能以任何方式缩短或更改。控件的父窗口或对话框不能处理WM_CTLCOLORSTATIC消息。 |
SS_WHITEFRAME | 指定一个框,其框架与窗口背景颜色相同。这种颜色在默认的Windows配色方案中是白色的。 |
SS_WHITERECT | 指定用当前窗口背景颜色填充的矩形。这种颜色在默认的Windows配色方案中是白色的。 |
可以在【dwStyle】参数中指定以下对话框样式:
样式 | 含义 |
DS_3DLOOK | 给对话框一个非粗体字体,并在对话框中的控制窗口周围绘制三维边框。 DS_3DLOOK样式仅在Windows 95或Windows NT 4.0之前的Windows版本的基于Win32的应用程序中才需要。系统会自动将三维外观应用于为当前版本的Windows编译的应用程序创建的对话框。 |
DS_ABSALIGN | 表示对话框的坐标是屏幕坐标;否则,Windows假定它们是客户端坐标。 |
DS_CENTER | 将工作区中的对话框居中;也就是说,该区域不被托盘遮蔽。 |
DS_CENTERMOUSE | 将鼠标光标居中在对话框中。 |
DS_CONTEXTHELP | 在对话框的标题栏中包含一个问号。当用户点击问号时,光标将变为具有指针的问号。如果用户然后在对话框中单击控件,则控件会接收到WM_HELP消息。该控件应该将消息传递给对话程序,该过程应使用HELP_WM_HELP命令调用WinHelp函数。帮助应用程序显示一个通常包含控件帮助的弹出窗口。 请注意,DS_CONTEXTHELP只是一个占位符。创建对话框时,系统将检查DS_CONTEXTHELP,如果存在,则将WS_EX_CONTEXTHELP添加到对话框的扩展样式。WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOX或WS_MINIMIZEBOX样式一起使用。 |
DS_CONTROL | 创建一个对话框,作为另一个对话框的子窗口,非常像属性表中的页面。此样式允许用户在子对话框的控制窗口之间进行制表,使用其加速键等。 |
DS_FIXEDSYS | 使用SYSTEM_FIXED_FONT而不是SYSTEM_FONT。 |
DS_LOCALEDIT | 仅适用于16位应用程序。此样式指示对话框中的编辑控件,以从应用程序的数据段分配内存。否则,编辑控件从全局内存对象分配存储。 |
DS_MODALFRAME | 通过指定WS_CAPTION和WS_SYSMENU样式,创建一个具有模态对话框框架的对话框,可以与标题栏和窗口菜单组合。 |
DS_NOFAILCREATE | 即使发生错误__,也可以创建对话框,如果无法创建子窗口或者系统无法为编辑控件创建特殊数据段。 |
DS_NOIDLEMSG | 在显示对话框时,禁止Windows将发送给对话框的所有者的WM_ENTERIDLE消息。 |
DS_RECURSE | 对话框样式,用于类似控件的对话框。 |
DS_SETFONT | 表示对话框模板(DLGTEMPLATE结构)包含两个额外的成员,指定字体名称和点大小。相应的字体用于在对话框客户区域内和对话框控件内显示文本。通过发送WM_SETFONT消息,Windows将字体的句柄传递给对话框和每个控件。 |
DS_SETFOREGROUND | 不适用于Microsoft Windows的16位版本。此样式将对话框带到前台。在内部,Windows调用该对话框的SetForegroundWindow功能。 |
DS_SYSMODAL | 创建一个系统模式对话框。此样式使对话框具有WS_EX_TOPMOST样式,但在显示对话框时,对话框或系统中其他窗口的行为不起作用。 |
Windows 95:系统最多支持16,364个窗口句柄。
也可以看看
CharToOem, CLIENTCREATESTRUCT, CreateDialog, CREATESTRUCT, CreateWindowEx, DialogBox, DLGTEMPLATE, DRAWITEMSTRUCT, GetDialogBaseUnits, GlobalAddAtom, LB_GETTEXT, LB_SETCOLUMNWIDTH, MessageBox, RegisterClass, SetForegroundWindow, WM_COMMAND, WM_CREATE, WM_DELETEITEM, WM_DRAWITEM, WM_ENTERIDLE, WM_GETMINMAXINFO, WM_MEASUREITEM, WM_NCCREATE, WM_PAINT, WM_SETFONT, WM_SETREDRAW, WM_VKEYTOITEM