VS2019 MFC动态创建ComboBox ,CComboBox类成员函数Create应用创建ComboBox控件[MFC 动态创建控件二]

35 篇文章 5 订阅

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_CAPTIONWS_SYSMENUWS_THICKFRAMEWS_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_CAPTIONWS_SYSMENUWS_THICKFRAMEWS_MINIMIZEBOXWS_MAXIMIZEBOX样式创建重叠窗口WS_OVERLAPPED。 与 WS_OVERLAPPEDWINDOW 样式相同。
WS_VISIBLE创建初始可见的窗口。
WS_VSCROLL创建具有垂直滚动条的窗口。

扩展窗口样式

扩展窗口样式适用于 CWnd 类 对象。 在参数CWnd::CreateExdwExStyle指定样式的组合。 有关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_OVERLAPPEDWINDOWWS_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_SORT*/ | CBS_DROPDOWNLIST|CBS_HASSTRINGS|CBS_OWNERDRAWFIXED,
		rect, this, nID))
	{
		TRACE("Failed to create combo-box\n");
		return FALSE;
	}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值