我想在CComboBox的下拉列表框(List)弹出的时候判断一下它的位置,以做出调整(比如左边超出了屏幕,就往右移),因此我重载CComboBox的DrawItem函数:
CDC * pDC = CDC::FromHandle(lpDrawItemStruct->itemDC);
CWnd * pWnd = pDC->GetWindow();
但是得到pWnd总是一个临时指针无法操作。
因该如何解决?

解决方案 »

  1.   

    方法一:
    如果知道ID,可以用pWnd = GetDlgItem(...);
    方法二:
    在你得到临时指针以后,HWND hWnd = pWnd->m_hWnd;不过你这样做如果有几个这样的CComboBox怎么区分呢?这种方法不是很好。
    方法三:
    通过ClassWizard为该控件添加一个实例变量吧。
      

  2.   

    多谢 jxsrufeng(如风) 的回答。
    但我认为方法一、方法三可能不行,方法二可以试一试。
    方法一:怎么样能得到CComboBox的下拉框的ID,有吗?
    方法三:这个我真的不知该怎么做
      

  3.   

    CComboBox的下拉框是它的第一个子窗口,这样取得CWnd* pListWnd = pDC->GetWindow()->GetWindow(GW_CHILD);
      

  4.   

    CComboBox的下拉框的ID,你在定制组合框的时候不就设定好了它的id了吗