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


剛剛遇到了與樓主同樣的問題,看了樓主的帖子終於解惑了!
关注微信公众号

注意!

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



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