1、对于DropDown类型的组合框,当鼠标左键点击下拉按钮时,如何得到下拉列表框的信息,比如下拉列表框的长宽和下拉列表框有无水平或者垂直滚动条,以及滚动条的信息。还有就是如何得到这个下拉列表框的环境句柄cdc呢?
2、对于CListBox、Combox、CTreeCtrl等控件如何判断其是否有滚动条呀?

解决方案 »

  1.   

    判断是否有滚动条可以由以下几个函数计算出来GetDroppedWidth
    GetItemHeight
    GetCount 
      

  2.   

    判断是否有滚动条已经实现了,代码如下: SCROLLINFO si;
    si.cbSize = sizeof(SCROLLINFO);
    si.fMask = SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS;
    int nRet = GetScrollInfo(m_hWnd, SB_VERT, &si); if((si.nMax+1) <= si.nPage)
    {
                 没有处理。
    }
    else
    {
                 有处理。
             }
      

  3.   

    现在的问题是:
    对于DropDown类型的组合框,当鼠标左键点击下拉按钮时,如何得到下拉列表框的信息。还有就是如何得到这个下拉列表框的环境句柄cdc呢?
      

  4.   

    我只记得大概:
    首先从CWnd类的成员m_hWnd可以得到窗口的句柄,然后通过
    HDC hdc = ::GetDC(myWnd.m_hWnd)
    可以得到其CDC
      

  5.   

    由于现在改用.NET(C#)一年了,VC的东西只记得大概了。
    GetDC这个函数好像在哪个类里面有,你查查msdn
      

  6.   

    EricHxy(龙真) :可是对于ComBox,其是由一个编辑框和一个列表框来组成的,用你所说的方法只能得到编辑框的句柄呀?
      

  7.   

    封装一个CMyComboBox,从CComboBox继承下来。
      

  8.   

    我现在采用的不是从CComboBox继承的方法。
    我现在的做法是用钩子函数,截获了这个组合框的消息处理,截取他们的WM_PAINT消息,然后在这个消息响应自己来重绘整个的控件。
    对于CComBox控件,我知道的只有其窗口句柄和环境句柄。