我想在CComboBox中添加PS_DOT、PS_DASH等线型,可是找不到方法,是不是我用错了控件??请帮忙!!

解决方案 »

  1.   

    我不知道,不过可以伪造一个,在CComboBox下拉时显示一个listBox控件,在listBox中显示相应的线条(如不可以添加线条,也可以如通过坐标来画线),当选中相应的线条后,根据所选在CComboBox中再画一条。在要取得CComboBox中的线条来用时,可以通过标志来表达,如我要画图,在CComboBox中选一粗线条,在实际画图时,我根据CComboBox中所选线条的标志来实际画线。
    window的画图程序中,在选线条时,也应该是通过标记来知道用户所选线条的。
    上面是小弟我随便想的,高手们见笑了。
      

  2.   

    这个要自己画的,看看MSDN上的WM_DRAWITEM
      

  3.   

    你可以用CComboBoxEx类来画,下面是我以前用的代码,是在ccomboboxex中画出曲线的颜色。我想能够画PS_DOT、PS_DASH等线型的。
    //刷新ImageList
    CClientDC dc(this);
    CDC DC;
    DC.CreateCompatibleDC(&dc);

    for (int i=0; i<nSeriesNumber; i++)
    {
             CBitmap bm;
    bm.LoadBitmap(IDB_IMAGE_LIST);
    CBitmap* pOldBitmap = DC.SelectObject(&bm);
             //我在下面画了个有颜色的矩形框,你可以在这里画线,实现你要的功能
    DC.FillSolidRect(2,2,14,14,SeriesData[i].m_clrLineColor);
    DC.SelectObject(pOldBitmap);

    m_imageList.Replace(i,&bm,NULL);}
    DC.Detach();

    //刷新ComboBoxEx
    pMainFrame->m_wndCurrentSeries.SetImageList(&m_imageList);
    for ( i=0; i<nSeriesNumber; i++)
    {

    COMBOBOXEXITEM item;
    item.mask = CBEIF_SELECTEDIMAGE | CBEIF_IMAGE | CBEIF_TEXT;
    item.iItem = -1;
    item.pszText = (LPTSTR)(LPCTSTR)SeriesData[i].m_sTitle;
    item.iImage=i;
    item.iSelectedImage=i;
    pMainFrame->m_wndCurrentSeries.InsertItem(&item); }
    Good Lucky
      

  4.   

    写了一个例子,见http://my.6to23.com/cigarette/cb1.zip