重画combobox控件、让combobox的listbox用图片显示、(当点击图片时、editbox还是能照常下拉显示的)有代码更好、谢谢。

解决方案 »

  1.   

    CComboBoxEx,好像就有这个功能吧
      

  2.   

    CComboBoxEx好像是将图片插入到里面吧、我想用图片贴在上面、就像一些个性按钮一样。
      

  3.   

    用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); 

     
     
     
      

  4.   

    谢谢楼上、我想这样做的效果是把图标放入到列表中。
    而我想达到用一张图片替换combobox(任意形状图片)、当鼠标点击图片能弹出下拉列表。。
    当鼠标放在上面还能显示另一张状态的图片。
    不知道能不能实现。。