vc++ combobo随窗口变化后看不到下拉列表


    最近自己写了一个小程序,其中就有combobox控件,当然了一个程序不可能不改变窗口大小吧,比如说在不同大小的显示器上就得适应不同的大小,可问题来的,我把窗口最大化以后,在onsize函数中用了movewindow来改变combobox控件的位置及大小。可是combobox控件的下拉列表没有了,改变前是有的,有什么办法吗,这个控件做得太差了 ,不能自动适应。

9 个解决方案

#1


没有了是什么意思?应该没有问题的啊。是不是楼主哪里处理的有问题。

#2


是不是控件高度不够?

#3


同意LS楼上的,
对于combox使用:

先用GetWindowRect获取其所在区域
计算出宽高
再用MoveWindow()改变窗口位置

#4


void CChaoxieDlg::Modifys(int idc, CRect client, int x, int y)
{
CWnd *pWin;
    pWin=GetDlgItem(idc);
if (pWin)
{
CRect Editrect;
        pWin->GetWindowRect(&Editrect);
        ScreenToClient(&Editrect);
Editrect.left=Editrect.left*x/client.Width();
        Editrect.right=Editrect.right*x/client.Width();
Editrect.top=Editrect.top*y/client.Height();
Editrect.bottom=Editrect.bottom*y/client.Height();
pWin->MoveWindow(Editrect);


}
  
}
这是我做的专门用来改变控件大小及位置的一个函数,我在窗口的onsize中调用该函数,
Modifys(IDC_CHAOZ_COMBO,Chaoxieclient,cx,cy);
chaoxieclient是窗口改变前的大小,当然cx,cy只要用的onsize函数就应该知道,是窗改变前后的比例。
如果不随窗口的改变而改变控件的话,那窗口改变控件就很难看。可控件随窗口改变以后,点组合框下箭头就看不到原先输入组合框中供选择的内容。

#5


你在资源编辑对话框中选中你的combox,点中控件箭头,将下拉区域扩大。

第一次创建一个combox的时候,在资源编辑器中,combox默认拉伸长度是很小的,用鼠标点一下那个向下的箭头,可以出一个框框,把框框拉长,就可以了。

#6


这个我已经做了,而且有几个combobox控件,几个拉的长度都不一样,不是这个问题,只要控件随窗口的改变而改变位置及大小以后,就没法显示其中的内容了,只有控件不随窗口改变的情况下才看得到下拉列表里的内容,我在其它地方看到说pWin->GetWindowRect(&Editrect);获得的是下拉列表收起时combobox的大小,但是要怎么才能得combobox下拉列表展开时的大小呢。

#7


补充一下,我在加combobox控件的时候,加大了下拉列表的高度,就是把下拉列表拉长了,但是随窗口改变控件后下拉列表直接弹不出来,或者说是只出来一点点,文字都看不到,当勾选no integral height属性以后,可以看到一行文字的一半,但是太小了嘛,我看别人做出来的程序都是下拉列表可以看到其中的几个选项。

#8


虽然大家都没有回答到我要的答案,还是谢谢大家了,我自己找到了办法,就是在modifys函数中,在movewindow之前,判段是不是combobox控件,如果是,则把bottom的值增加30,这样就可以看到了。结贴。谢谢。

#9


刚刚遇到了与楼主同样的问题,看了楼主的帖子终于解惑了!
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告