打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VC MFC组合框(CComboBox)控件

VC MFC组合框(CComboBox)控件

组合框:

自绘组合框(显示图标)

要了解的概念:组合框是由一个编辑框和列表框组合而成的.
CComboBox类里要了解的函数:
SetItemHeight//设置列表框项,或编辑框高度,第一个参数为-1表示设置编辑框高度,0表示列表框项,第二个参数是要设置的高度
SetItemData//为列表框里的项关联一个DWORD值,第一个参数表示列表框项索引,第二个参数指明具体值
GetItemData//只有一个参数,列表框项索引,返回该索引关联的值。

首先像自绘按钮类一样,从控件类中派生出一个子类(组合框类名:CComboBox),派生的类名为:CNewComboBox然后向工程导入五个图标,ID号分别为:

IDI_NORMAL1、IDI_NORMAL2。。。IDI_NORMAL5

往CNewComBox类添加一个函数,用于设置图标ID和文本内容,如下:
int CNewComboBox::SetItemIcon(UINT nID,LPCTSTR lpszString)//第一个参数是图标ID号,第二个是文本内容
{
int index=AddString(lpszString);
SetItemData(index,nID);
return index;
}

然后添加CNewComBox类的虚函数DrawItem,DrawItem函数的代码如下:

CDC dc;
 dc.Attach(lpDrawItemStruct->hDC);//组合框DC
 CRect itemRect(lpDrawItemStruct->rcItem);//项区域
  int nSate=lpDrawItemStruct->itemState;//项状态
  int nIndex=lpDrawItemStruct->itemID;//项索引
      if(nIndex!=-1)
 {

       if(nSate&ODS_SELECTED)//如果选中该项
         dc.FillSolidRect(&itemRect,RGB(124,231,169));
    else
         dc.FillSolidRect(&itemRect,RGB(2,94,193));
  UINT uID=GetItemData(nIndex);
     POINT pt;
    pt.x=itemRect.left;
    pt.y=itemRect.top;
    dc.DrawIcon(pt,LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(uID)));//画图标
    itemRect.left+=35;

    dc.SetBkMode(TRANSPARENT);
    CString str;
    GetLBText(nIndex,str);
    dc.DrawText(str,itemRect,DT_LEFT|DT_VCENTER|DT_SINGLELINE);//显示文本
 }
   dc.Detach();

接着在对话框编辑区给对话框添加一个组合框控件,组合框的样式:类型:下拉列表、所有者绘制:固定、有字串:勾

并为控件关联一个控件变量m_NewCom,类型为CNewComboBox

然后在对话框初始化函数OnInitDialog里添加如下代码:
m_NewCom.SetItemIcon(IDI_NORMAL1,"Kdjfkd");
  m_NewCom.SetItemIcon(IDI_NORMAL2,"kjdkfj");
  m_NewCom.SetItemIcon(IDI_NORMAL3,"dkjfdj");
  m_NewCom.SetItemIcon(IDI_NORMAL4,"kdjfkd");
  m_NewCom.SetItemIcon(IDI_NORMAL5,"kdjfkd");
     m_NewCom.SetItemHeight(-1,35);
  m_NewCom.SetItemHeight(0,35);

最后,记得要包含类头文件 "NewComboBox.h"

编译、运行,效果如下:


 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
使MFC变漂亮二:MFC与HTML交互示例
用mfc实现组合框控件下拉列表显示
VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)
MFC控件的使用
Win32控件使用大全 - VC / MFC - 开发语言 - 大家论坛-全球最大的教育培...
积累的VC编程小技巧之组合框
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服