重画combobox控件、让combobox的listbox用图片显示 重画combobox控件、让combobox的listbox用图片显示、(当点击图片时、editbox还是能照常下拉显示的)有代码更好、谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CComboBoxEx,好像就有这个功能吧 CComboBoxEx好像是将图片插入到里面吧、我想用图片贴在上面、就像一些个性按钮一样。 用ComboBoxEx和ImageList控件 1)、在.h文件中添加 CImageList *m_pImageList; //Image列表 2)、添加ComboBoxEx控件,并用class 向导添加一个Ctronl类型的变量m_ComboxEX; 3)、在.cpp文件的OnInitDialog() 函数中添加以下代码: //(注意,除此之外你还要导入一些图标,在这里我加载了4个图标) m_pImageList = new CImageList(); m_pImageList->Create(50,16,ILC_COLORDDB ¦ILC_MASK,4,4); m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1)));// m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON2)));// m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON3)));// m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON4)));// m_ComboxEX.SetImageList(m_pImageList); for(int i=0; i <m_pImageList->GetImageCount(); i++) { COMBOBOXEXITEM cbi ={0}; CString str; int nItem; cbi.mask = CBEIF_IMAGE ¦ CBEIF_INDENT ¦ CBEIF_OVERLAY ¦CBEIF_SELECTEDIMAGE ¦ CBEIF_TEXT; cbi.iItem = i; str.Format(_T("%2d"), i); cbi.pszText = (LPTSTR)(LPCTSTR)str; cbi.cchTextMax = str.GetLength(); cbi.iImage = i; cbi.iSelectedImage = i; cbi.iOverlay = 2; cbi.iIndent = 0;//(i & 0x03); //Set indentation according //to item position nItem = m_ComboxEX.InsertItem(&cbi); ASSERT(nItem == i); } 谢谢楼上、我想这样做的效果是把图标放入到列表中。而我想达到用一张图片替换combobox(任意形状图片)、当鼠标点击图片能弹出下拉列表。。当鼠标放在上面还能显示另一张状态的图片。不知道能不能实现。。 movewindow没有按比例缩小 高分求教:OpenGL绘制3D的视角操作 用CFile 读取文本文件的第一行 鼠标拖动图像,高手新手帮忙看看 搞软件开发的如果过了30还有希望继续发展吗 字段截取问题 *****如何对一个记录集再运行sql查询 ***** 在VC中怎样编程实现:显示一台计算机的使用者的ID?应该有API函数的,但我不知道。 这里有初中学生吗? 可以被VJ调用的Com有什么要求? 移动直线的问题 dbger来领分了,谢谢了哈
1)、在.h文件中添加
CImageList *m_pImageList; //Image列表
2)、添加ComboBoxEx控件,并用class 向导添加一个Ctronl类型的变量m_ComboxEX;
3)、在.cpp文件的OnInitDialog() 函数中添加以下代码:
//(注意,除此之外你还要导入一些图标,在这里我加载了4个图标) m_pImageList = new CImageList();
m_pImageList->Create(50,16,ILC_COLORDDB ¦ILC_MASK,4,4);
m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1)));//
m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON2)));//
m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON3)));//
m_pImageList->Add(LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON4)));// m_ComboxEX.SetImageList(m_pImageList); for(int i=0; i <m_pImageList->GetImageCount(); i++)
{
COMBOBOXEXITEM cbi ={0};
CString str;
int nItem; cbi.mask = CBEIF_IMAGE ¦ CBEIF_INDENT ¦ CBEIF_OVERLAY ¦CBEIF_SELECTEDIMAGE ¦ CBEIF_TEXT; cbi.iItem = i;
str.Format(_T("%2d"), i);
cbi.pszText = (LPTSTR)(LPCTSTR)str;
cbi.cchTextMax = str.GetLength();
cbi.iImage = i;
cbi.iSelectedImage = i;
cbi.iOverlay = 2;
cbi.iIndent = 0;//(i & 0x03); //Set indentation according
//to item position
nItem = m_ComboxEX.InsertItem(&cbi);
ASSERT(nItem == i);
}
而我想达到用一张图片替换combobox(任意形状图片)、当鼠标点击图片能弹出下拉列表。。
当鼠标放在上面还能显示另一张状态的图片。
不知道能不能实现。。