两行文本组合框

Image 1 介绍 CComBoxEx是一个简单的MFC控件,源自CWnd。它可以在combobox控件中显示两行文本。 背景 几天前,在我的一个项目,我需要一个combobox控件,可以显示两行文本。由于项目时间紧迫,首先我希望能从Code project网站上得到一些派生的combobox控件,但是什么也没有得到。最后,我决定自己做这个控件。现在我完成了这个combobox控件,这对一个vc++初学者来说并不坏,所以我决定与所有的CodeProject工作伙伴共享这个控件。我没有太多的时间在这个控件上工作,所以我必须以一种简单的方式编写它,但是它必须满足我的需求。它的一些特点如下: 它简单易用。它的主要功能类似于MFC的组合框控制。它可以显示两行文本。 现在combobox控件在这里。请欣赏并帮助我您无价的注释,错误报告,想法,等等,您认为可以提高这段代码的质量。 使用的代码 创建Combobox控件 首先,我们需要创建一个两行文本组合框控件。 将comboxx .h和comboxx .cpp添加到项目中。添加#包括“ComBoxEx”。在类的头文件的顶部,您要在其中添加这个两行文本控件。添加一个CComBoEx类型的成员变量。在cpp文件中,使用成员变量的Create方法创建一个两行文本组合框控件。 隐藏,收缩,复制代码//创建组合框控件 //获取组合框控制位置 GetDlgItem(IDC_COMBOBOX_STATIC); 绘图用的矩形类rcStatic; pStatic→GetWindowRect (rcStatic); ScreenToClient (rcStatic); //创建组合框控件 m_ComboxEx。创建(rcStatic, 2000); //添加数据到组合框控件 装运箱str1 str2; str1 = "第一行数据"; str2 = "第二行数据"; m_ComboxEx。AddString (str1 str2); str1 = "第三行数据"; str2 = "第4行数据"; m_ComboxEx。AddString (str1 str2); str1 = "第5行数据"; str2 = "第6行数据"; m_ComboxEx。AddString (str1 str2); //设置组合框当前选择的项目 m_ComboxEx.SetCurSel (1); //获取组合框控件当前选中项 m_ComboxEx.GetCurSel (); 组合框控件通知消息 当combobox控件选择一个项目时,combobox控件的父窗口将接收到combobox控件的通知消息,您可以这样做。 隐藏,复制代码//首先在父窗口标题下声明msg响应函数 AFX_MSG和up DECLARE_MESSAGE_MAP(),就像这样。 afx_msg LRESULT OnComboboxNotify(WPARAM WPARAM, LPARAM LPARAM); //第二个地图combobox msg之间 // BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()就像这样。 BEGIN_MESSAGE_MAP (CComboboxTextDlg CDialog) / / {{AFX_MSG_MAP (CComboboxTextDlg) ON_WM_SYSCOMMAND () ON_WM_PAINT () ON_WM_QUERYDRAGICON () ON_WM_CTLCOLOR () / /}} AFX_MSG_MAP ON_MESSAGE (COMBOBOXEX_NOTIFYMSG OnComboboxNotify) END_MESSAGE_MAP () //最后,代码组合框msg进程函数 OnComboboxNotify(WPARAM WPARAM, LPARAM LPARAM) { TRACE("Combobox CtrlID = %d, CurSelNo = %d\n", wParam, lParam); 返回1; } 下一个更新 这个组合框控件很简单,有很多功能需要更新。 支持字体设置 现在这个combobox控件使用默认字体,而且我没有实现字体设置函数。 组合框汽车大小 Combobox控件不能自动调整大小,当你使用它时,你必须设置控件的高度和宽度来适应内容,接下来我将实现它。 Comboxlist支持滚动条 根据组合框控件的大小计算组合框列表的大小。当combobox控件项非常大时,comboxlist的大小大于屏幕的大小,它不能在屏幕上显示所有的项。 组合框支持项数据 你知道MFC combobox控件对每个项目的支持信息,下更新这个combobox控件并支持这个功能。 支持下拉样式 现在这个combobox控件不支持这个样式,接下来添加到它。 历史 创建组合框控件 本文转载于:http://www.diyabc.com/frontweb/news284.html

posted @ 2020-08-05 03:27  Dincat  阅读(113)  评论(0编辑  收藏  举报