CComboBox::Create
创建组合框并将其附加到 CComboBox 对象。
复制
virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);参数
dwStyle
指定组合框的样式。 将 组合框样式 的任意组合应用于该框。rect
指向组合框的位置和大小。 可以是 RECT 结构 或 CRect 对象。pParentWnd
指定组合框的父窗口 (通常是 CDialog) 。 它不能。NULLnID
指定组合框的控制 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_MINIMIZEBOXWS_MAXIMIZEBOX样式创建重叠窗口WS_OVERLAPPED。 WS_POPUP 创建弹出窗口。 不能与样式一起使用 WS_CHILD 。 WS_POPUPWINDOW 使用和WS_POPUPWS_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_MINIMIZEBOXWS_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_OWNDCCS_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_WINDOWEDGEWS_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_DROPDOWNLIST|CBS_HASSTRINGS|CBS_OWNERDRAWFIXED, rect, this, nID)) { TRACE("Failed to create combo-boxn"); return FALSE; }例


![VS2019 MFC动态创建ComboBox ,CComboBox类成员函数Create应用创建ComboBox控件[MFC 动态创建控件二] VS2019 MFC动态创建ComboBox ,CComboBox类成员函数Create应用创建ComboBox控件[MFC 动态创建控件二]](http://www.mshxw.com/aiimages/31/943190.png)
