您的位置:首页 > 其它

MFC Combo-Box 控件下拉框问题

2016-06-18 22:18 218 查看
初写程序时,通过addstring()函数,在combox里面添加数据,可运行时,并不显示这些数据。。。。。

如何解决这个问题呢??一般通过以下方法就能解决

改变ComboBox下拉框的大小

   看上去combox的大小似乎只能在长度方向改变,高度方向拉不动。。。。

   事实上,高度方向也是可以改变的哈,试试以下方法:

   点Combox的上面的那个三角形,点一下以后有个虚框,然后往下拉,之后就可以完整显示combox里面的内容了!!
但是如果你做的控件自适应了的话,也就是最大化窗口的子控件能够增大,这样通过以上设置是无效的。
   具体的方法直接上代码
void CDemoDlg::ReSize(void)
{
float fsp[2];
POINT Newp; //获取现在对话框的大小;
CRect recta;
GetClientRect(&recta);     //取客户区大小;
Newp.x=recta.right-recta.left;
Newp.y=recta.bottom-recta.top;
fsp[0]=(float)Newp.x/old.x;
fsp[1]=(float)Newp.y/old.y;
CRect Rect;
int woc;
CPoint OldTLPoint,TLPoint; //左上角;
CPoint OldBRPoint,BRPoint; //右下角;
HWND  hwndChild=::GetWindow(m_hWnd,GW_CHILD);  //列出所有控件;
while(hwndChild)
{
woc=::GetDlgCtrlID(hwndChild);//取得ID;
GetDlgItem(woc)->GetWindowRect(Rect);
ScreenToClient(Rect);
OldTLPoint = Rect.TopLeft();
TLPoint.x = long(OldTLPoint.x*fsp[0]);
TLPoint.y = long(OldTLPoint.y*fsp[1]);
OldBRPoint = Rect.BottomRight();
BRPoint.x = long(OldBRPoint.x *fsp[0]);
if (woc == 1022 || woc == 1021 || woc == 1018)
{
BRPoint.y = long((OldBRPoint.y+30) *fsp[1]);
}else
{
BRPoint.y = long(OldBRPoint.y *fsp[1]);
}

Rect.SetRect(TLPoint,BRPoint);
GetDlgItem(woc)->MoveWindow(Rect,TRUE);
hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT);
}
old=Newp;
}


判断如果是下拉框的话,就把Bottom的Y坐标调大一点,问题就解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息