基于对话框的程序,对话框背景图片上实现下拉框,只实现竖直下拉。每排四个动态创建的自绘按钮PNG图片,一共20个PNG按钮图片。如下图:初始化运行程序,有两排PNG按钮图片。现要实现下拉,看到后面的PNG图片。只实现竖直下拉。竖直下拉滚动条如下图:
下拉框透明,融合对话框背景图片(下拉框中创建动态自绘按钮贴PNG图片。)
望,CSDN中的高手们给予解决,方法。。谢谢!

解决方案 »

  1.   

    望高手们给予解决,方法,我的测试代码以基本上实现动态创建自绘按钮,现在卡住在,怎么是现在下拉,下拉框中怎么创建动态的PNG按钮图片。。谢谢!
      

  2.   

    嗯,用CListControl.
    20个按钮就用5行4列,每一个里面放一个按钮,然后高度设置成为两行的高度,就看来刚好适合了..
      

  3.   

    下面的图片:中间的矩形框要用个控件,我是用CListCtrl. 然后按照你的方法试试。 可是CListCtrl要实现透明,跟对话框背景色是一样的望,高手们给点方案,或类似的代码谢谢!
      

  4.   

    CListCtrl控件透明:望高手们给于解决方法,谢谢!我放在OnCtlColor()中,没有效果:
    BRUSH CTestVscrollButtonPNGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  在此更改 DC 的任何属性 // TODO:  如果默认的不是所需画笔,则返回另一个画笔
    if(nCtlColor==CTLCOLOR_EDIT && pWnd->GetDlgCtrlID()==IDC_LIST1)  //注意此处的(pWnd->),否则没效果
    {
    pDC->SetTextColor(RGB(0,0,255));
    //pDC->SetBkColor(RGB(0,0,0));    //设置文本背景色
    pDC->SetBkMode(TRANSPARENT);      //设置背景透明
    }
    return hbr;
    }
      

  5.   

    nCtlColor==CTLCOLOR_LISTBOX而不是
    nCtlColor==CTLCOLOR_EDIT 这样你改一下,试一试,应该好使的。
      

  6.   

    CListCtrl  ListBox   这两个只要能实现上面的功能就OK了 我目前是用CListCtrl来调试的。 我试试。谢谢!
      

  7.   


    HBRUSH CCalcStockDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    //pWnd=::GetDlgItem(m_hWnd,IDC_PROMPT);
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
            char Text[100];
            ::GetClassName(*pWnd,Text,30);///////获取控件类型,为比对并过滤控件群做准备。
             if(strcmp(Text,"Combobox")==0)
            {
                switch(pWnd->GetDlgCtrlID())
        {
            case IDC_PROMPT:
        pDC->SetBkColor(RGB(0,255,0));
        pDC->SetTextColor(RGB(255,0,0));
    break;
            }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  8.   

    其中的IDC_PROMPT可以换成那个你要实现的下拉框ID号。
      

  9.   

    这段代码是实现,CListCtrl  背景透明?  我试试。 谢谢!
      

  10.   

    if (nCtlColor == CTLCOLOR_STATIC && pWnd->GetDlgCtrlID() == 10000)
    {
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,0,0));
    return (HBRUSH)::GetStockObject(NULL_BRUSH);
    }
    OnCtlColor 这个可以实现窗体背景透明你看这响应改改就OK了
      

  11.   

    ::GetClassName(*pWnd,Text,30); ///////获取控件类型,为比对并过滤控件群做准备。编译的时候不对。错误:error C2664: “GetClassNameW”: 不能将参数 2 从“char [100]”转换为“LPWSTR”
      

  12.   


    这段代码还是不能实现CListCtrl控件背景透明,和对话框背景图片一样
    运行的时候对话框背景图片上显示白色边框,可是一拖动窗口,白色边框就没有了。
      

  13.   

    case IDC_PROMPT://////你的控件ID号
                pDC->SetBkColor(RGB(0,255,0));
                pDC->SetTextColor(RGB(255,0,0));
                //////加上一句,试一试.
                SetBkMode(Transparent);
      

  14.   

    还是不行。我还在调试:滚动条暂时就用系统的,现在就是要实现功能就可以了。
    HBRUSH CTestVscrollButtonPNGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  在此更改 DC 的任何属性 // TODO:  如果默认的不是所需画笔,则返回另一个画笔
    //if(nCtlColor==CTLCOLOR_EDIT && pWnd->GetDlgCtrlID()==IDC_LIST1)  //注意此处的(pWnd->),否则没效果
    //{
    // pDC->SetTextColor(RGB(0,0,255));
    // //pDC->SetBkColor(RGB(0,0,0));    //设置文本背景色
    // pDC->SetBkMode(TRANSPARENT);      //设置背景透明
    //} /*if (pWnd == this)
    {
    return m_brBk;
    }*/ /*if (nCtlColor == CTLCOLOR_STATIC && pWnd->GetDlgCtrlID() == 10000)
    {
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,0,0));
    return (HBRUSH)::GetStockObject(NULL_BRUSH);
    }*/ char Text[100];
    ::GetClassName(*pWnd,Text,30); ///////获取控件类型,为比对并过滤控件群做准备。
    if(strcmp(Text,"Combobox") == 0)
    {    
    switch(pWnd->GetDlgCtrlID())
    {
    case IDC_LIST1:
    pDC->SetBkColor(RGB(0,255,0));
    pDC->SetTextColor(RGB(255,0,0));
    pDC->SetBkMode(TRANSPARENT);
    break;
    }
    } return hbr;
    }
      

  15.   

    自己手工画,关于如果和画和滚动图片
    参考这个代码
    http://download.csdn.net/download/gameslq/3639974
    根据代码思路调整成自己的。
      

  16.   

    哦,谢谢! 可是我首先要实现ClistCtrl背景透明。 这个都没实现,其他的就暂不考虑了
      

  17.   

    首先,怎么实透明效果,CListCtrl  或者其他控件。  
    高手们,帮忙看看
      

  18.   

    http://blog.csdn.net/orbit/article/details/485125
      

  19.   

    高手们看看啊!  怎么在CListCtrl 或者 ListBox 中动态创建按钮,并响应啊!
    高手们帮忙看看!
      

  20.   

    动态按钮以创建好,怎么设置CListCtrl垂直滚动条下拉!谢谢!
      

  21.   

    http://tieba.baidu.com/p/1665838746  图二 
    可以参考下