在COMBOBOX中如何更改 它下属 的 EDIT 的尺寸大小??本来是基于CCOMBOBOX扩展了三层类,在下面的类中锝不到CCOMBOBOX的EDIT窗口句柄,于是另搞个程序实验。
这是我在一个基于对话框的程序里面做的实验
窗口中一个COMBOBOX控件 一个按纽来调试 CComboBox * pComboBox=(CComboBox*)GetDlgItem(IDC_COMBO1);
//得到COMBOBOX的子窗口数目
 int i=pComboBox->GetWindowedChildCount();
//得到COMBOBOX中的EDIT窗口
 CEdit * pedit=(CEdit*)((pComboBox->GetWindow(GW_CHILD)));
 CRect tempRect;
//得到EDIT窗口的大小
 pedit->GetClientRect(&tempRect);
 //HRGN temphrgn=Region(&tempRect);
 tempRect.bottom+=50;tempRect.right+=50;
//这两个函数没有起到应有的作用:将EDIT窗口尺寸改变
 pedit->SetWindowRgn(HRGN(&tempRect),TRUE);
 pedit->SetWindowPos(pComboBox,tempRect.left,tempRect.top,tempRect.Width()+100,tempRect.Height()+100,SWP_SHOWWINDOW );

解决方案 »

  1.   

    谢谢 这个问题 解决了 
    更大的问题 是怎么设置  Edit的readonly属性 class CInPlaceComboBox : public CCJFlatComboBox: public CComboBoxCInPlaceComboBox::CInPlaceComboBox(CDiagramEntity *pOwner, CWnd* pParent, CRect& rect, UINT nID,int nRow, int nColumn, UINT nFirstChar)
    :m_ft(0)
    {
        DWORD dwEditStyle = WS_CHILD|WS_VISIBLE|CBS_SIMPLE|  
                            CBS_AUTOHSCROLL|CBS_DROPDOWN|CBS_NOINTEGRALHEIGHT;
        //rect指整个ComboBox的尺寸
        rect.bottom=rect.bottom+200;    if (!Create(dwEditStyle, rect, pParent, nID))
    return;
    }
    这样Create的ComboBox为什么 不能编辑Edit框 用属性不行 还有个方法 就是得到Edit的窗口来 SetReadonly();可在CCJFlatComboBox的鼠标消息响应函数中也得不到CComboBox的Edit子窗口。
      

  2.   

    WS_VISIBLE| CBS_DROPDOWN 能编辑
    WS_VISIBLE|CBS_DROPDOWNLIST 不能编辑
    但是 我的CComboBox 是在另一个控件创建的
    需要CBS_SIMPLE 导致不能编辑 晕了