MoveWindow改变Combo下拉高度民,AddItem后失效。
vb吧
全部回复
仅看楼主
level 1
快樂钚哆 楼主
Move Combo1.Hwnd,Combo1.Left,Combo1.Top,Combo1.Width,300,0开是还好。一旦Additem后,下拉高度又变回了。即使是在Additem后再MoveWindow也不行我又添加一个Timer时间为10循环MoveWindow竟然还是不行。这个Combo真的这么顽固吗!!!!
2008年01月14日 12点01分 1
level 13
'添加 Combo1 Command1Option ExplicitPrivate Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongConst CB_SETDROPPEDWIDTH = &H160Const CB_ERR = -1Dim lRetVal&, i&Private Sub Form_Load() For i = 1 To 30 Combo1.AddItem CStr(i) Next Call SetComboWH(Combo1, 600, 500)End SubPublic Sub SetComboWH(ComBox As ComboBox, NewWidthPixel As Long, NewHeightPixel As Long) lRetVal = SendMessage(ComBox.hwnd, CB_SETDROPPEDWIDTH, NewWidthPixel, 0) ScaleMode = 3 'VbPixel MoveWindow ComBox.hwnd, ComBox.Left, ComBox.Top, ComBox.Width, NewHeightPixel, 0 ScaleMode = 1End SubPrivate Sub Command1_Click() Combo1.AddItem "31"End Sub
2008年01月14日 13点01分 4
level 0
lz
不必追求完美,否则你会太无助。中庸太和,扁平低熵。
2008年01月14日 13点01分 5
level 1
快樂钚哆 楼主
CBM老师。这段代码:Private Sub Form_Load() For i = 1 To 30 Combo1.AddItem CStr(i) Next Call SetComboWH(Combo1, 600, 500) End Sub 如果去掉:For i = 1 To 30 Combo1.AddItem CStr(i) Next 就不行了。因为Item太多,Combo的下拉高度就大。如果只有一个Item就会发现下拉高度就变了,只有一行文字那么高。Combo是自动调整下拉高度的。Item多了就长,少了就短。C++那边的不同。可以在设计窗口的时候自己定下拉高度。
2008年01月14日 14点01分 6
1