CComboBox::Create
创建组合框并将其附加到
CComboBox
对象。复制
virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
参数
dwStyle
指定组合框的样式。 将 组合框样式 的任意组合应用于该框。
rect
指向组合框的位置和大小。 可以是 RECT 结构 或CRect
对象。
pParentWnd
指定组合框的父窗口 (通常是CDialog
) 。 它不能。NULL
nID
指定组合框的控制 ID。返回值
如果成功,则不为 0;否则为 0。
注解
在两个步骤中构造
CComboBox
对象。 首先,调用构造函数,然后调用Create
,这将创建Windows组合框并将其附加到CComboBox
对象。执行时
Create
,Windows将和WM_NCCALCSIZEWM_NCCREATEWM_CREATEWM_GETMINMAXINFO消息发送到组合框。这些消息默认由OnNcCreate基类中的
CWnd
成员OnCreateOnNcCalcSize函数处理OnGetMinMaxInfo。 若要扩展默认消息处理,请从CComboBox
中派生一个类,将消息映射添加到新类,并重写前面的消息处理程序成员函数。 例如,重写OnCreate
对新类执行所需的初始化。将以下 窗口样式 应用于组合框控件。 :
WS_CHILD
总是
WS_VISIBLE
通常
WS_DISABLED
很少
WS_VSCROLL
在组合框中为列表框添加垂直滚动
WS_HSCROLL
在组合框中为列表框添加水平滚动
WS_GROUP
对控件进行分组
WS_TABSTOP
在制表符顺序中包含组合框示例
C++
m_pComboBox->Create( WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST, CRect(10, 10, 200, 100), pParentWnd, 1);
组合框样式
以下组合框样式在 MFC 中可用。 有关Windows组合框样式的详细信息,请参阅组合框样式 (Windows) 。
Style 说明 CBS_AUTOHSCROLL
当用户在行末尾键入字符时,自动将编辑控件中的文本滚动到右侧。 如果未设置此样式,则仅允许矩形边界内的文本。 CBS_DISABLENOSCROLL
当列表框不包含足够的项目滚动时,列表框将显示禁用的垂直滚动条。 如果不使用此样式,则当列表框未包含足够的项时,将会隐藏滚动条。 CBS_DROPDOWN
类似于 CBS_SIMPLE
,除非用户选择编辑控件旁边的图标,否则不会显示列表框。CBS_DROPDOWNLIST
与 CBS_DROPDOWN
类似,除非编辑控件被一个静态文本项替换,该项在列表框中显示当前选定内容。CBS_HASSTRINGS
所有者绘制组合框包含包含字符串的项目。 组合框维护字符串的内存和指针,以便应用程序可使用 GetText
成员函数检索特定项的文本。CBS_LOWERCASE
转换为选定字段和列表中的小写所有文本。 CBS_NOINTEGRALHEIGHT
指定组合框的大小正好是应用程序在创建组合框时指定的大小。 通常,Windows 会调整组合框的大小,以使组合框不会仅显示部分项。 CBS_OEMCONVERT
组合框编辑控件中输入的文本将从 ANSI 字符集转换为 OEM 字符集,然后返回到 ANSI。 这可确保当应用程序调用 AnsiToOem
Windows 函数将组合框中的 ANSI 字符串转换为 OEM 字符时,能正确进行字符转换。 此样式最适用于包含文件名且仅适用于使用CBS_SIMPLE
或CBS_DROPDOWN
样式创建的组合框。CBS_OWNERDRAWFIXED
列表框的所有者负责绘制其内容;列表框中的项高度相同。 CBS_OWNERDRAWVARIABLE
列表框的所有者负责绘制其内容;列表框中的项高度可变。 CBS_SIMPLE
列表框随时显示。 列表框中的当前选择显示在编辑控件中。 CBS_SORT
自动对列表框中输入的字符串进行排序。 CBS_UPPERCASE
转换为选定字段和列表中的大写所有文本。
窗口样式
窗口样式适用于 CWnd 类 对象。 在 dwStyle 参数 CWnd::Create 或 . CWnd::CreateEx中指定样式的组合。 有关Windows中的窗口样式的详细信息,请参阅窗口样式 (Windows) 。
Style 说明 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
指定一组控件的第一个控件,用户可以使用箭头键从一个控件移动到下一个控件。 第一个控件属于同一组之后使用样式 FALSE
定义WS_GROUP
的所有控件。 样式的WS_GROUP
下一个控件将启动下一个组 (,即一个组将在下一个组开始) 。WS_HSCROLL
创建具有水平滚动条的窗口。 WS_ICONIC
创建最初最小化的窗口。 与 WS_MINIMIZE
样式相同。WS_MAXIMIZE
创建最大大小的窗口。 WS_MAXIMIZEBOX
创建具有“最大化”按钮的窗口。 WS_MINIMIZE
创建最初最小化的窗口。 仅用于样式 WS_OVERLAPPED
。WS_MINIMIZEBOX
创建具有最小化按钮的窗口。 WS_OVERLAPPED
创建重叠窗口。 重叠窗口通常具有标题和边框。 WS_OVERLAPPEDWINDOW
使用 、 WS_CAPTION
、WS_SYSMENU
、WS_THICKFRAME
和WS_MINIMIZEBOX
WS_MAXIMIZEBOX
样式创建重叠窗口WS_OVERLAPPED
。WS_POPUP
创建弹出窗口。 不能与样式一起使用 WS_CHILD
。WS_POPUPWINDOW
使用和 WS_POPUP
WS_SYSMENU
样式创建弹出窗口WS_BORDER
。 样式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_CAPTION
、WS_SYSMENU
、WS_THICKFRAME
和WS_MINIMIZEBOX
WS_MAXIMIZEBOX
样式创建重叠窗口WS_OVERLAPPED
。 与WS_OVERLAPPEDWINDOW
样式相同。WS_VISIBLE
创建初始可见的窗口。 WS_VSCROLL
创建具有垂直滚动条的窗口。 扩展窗口样式
扩展窗口样式适用于 CWnd 类 对象。 在参数CWnd::CreateEx中
dwExStyle
指定样式的组合。 有关Windows中扩展窗口样式的详细信息,请参阅扩展窗口样式 (Windows) 。
Style 说明 WS_EX_ACCEPTFILES
指定使用此样式创建的窗口接受拖放文件。 WS_EX_APPWINDOW
当窗口可见时,将顶级窗口强制到任务栏上。 WS_EX_CLIENTEDGE
指定窗口具有 3D 外观,即带有沉没边缘的边框。 WS_EX_CONTEXTHELP
在窗口的标题栏中包括问号。 当用户单击问号时,光标将更改为带有指针的问号。 如果用户单击子窗口,子窗口将收到一 WM_HELP
条消息。WS_EX_CONTROLPARENT
允许用户使用 TAB 键在窗口的子窗口中导航。 WS_EX_DLGMODALFRAME
指定具有双边框的窗口,在参数中 dwStyle
指定WS_CAPTION
样式标志时,可以选择使用标题栏创建 () 。WS_EX_LAYERED
窗口是分层 窗口。 如果窗口的类样式为或 , CS_OWNDC
CS_CLASSDC
则不能使用此样式。 但是,Microsoft Windows 8确实支持WS_EX_LAYERED
子窗口的样式,其中以前的Windows版本仅支持顶级窗口。WS_EX_LEFT
提供窗口泛型左对齐属性。 这是默认值。 WS_EX_LEFTSCROLLBAR
将垂直滚动条置于工作区左侧。 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
如果工作区右侧) ,则放置垂直滚动条 (。 这是默认值。 WS_EX_RTLREADING
使用从右到左的阅读顺序属性显示窗口文本。 WS_EX_STATICEDGE
创建一个具有三维边框样式的窗口,该样式用于不接受用户输入的项目。 WS_EX_TOOLWINDOW
创建一个工具窗口,它是一个要用作浮动工具栏的窗口。 工具窗口具有短于普通标题栏的标题栏和使用较小的字体绘制的窗口标题。 工具窗口不会显示在任务栏中,也不会显示在用户按 Alt+Tab 时出现的窗口中。 WS_EX_TOPMOST
指定使用此样式创建的窗口应放置在所有非顶部窗口之上,即使在停用该窗口时也保持高于这些窗口。 应用程序可使用 SetWindowPos
成员函数添加或删除此特性。WS_EX_TRANSPARENT
指定使用此样式创建的窗口是透明的。 也就是说,该窗口下的任何窗口都不能被窗口遮盖。 使用此样式创建的窗口仅在更新其下的所有同级窗口后接收 WM_PAINT
消息。WS_EX_WINDOWEDGE
指定窗口具有带上边缘的边框。
本例程示
CComboBox comboBox; if (!comboBox.Create( WS_CHILD | WS_VISIBLE | WS_VSCROLL/* | CBS_SORT*/ | CBS_DROPDOWNLIST|CBS_HASSTRINGS|CBS_OWNERDRAWFIXED, rect, this, nID)) { TRACE("Failed to create combo-box\n"); return FALSE; }
例