注册 登录
编程论坛 VB6论坛

求教高手 :关于改变ComboBox控件下拉列表长度的Bug

treea 发布于 2019-06-03 23:42, 2821 次点击
代码:
Option Explicit
Private 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 Long
Public Sub SizeCombo(CBobj As ComboBox, ByVal newHeight As Long)
    Dim cLeft As Long
    Dim cTops As Long
    Dim cWidths As Long
    Dim oldMode As Long   
    oldMode = CBobj.Parent.ScaleMode
    CBobj.Parent.ScaleMode = vbPixels   
    cLeft = CBobj.Left
    cTops = CBobj.Top
    cWidths = CBobj.Width   
    CBobj.Parent.ScaleMode = oldMode
    MoveWindow CBobj.hwnd, cLeft, cTops, cWidths, newHeight, 1
End Sub

程序应用在主界面上没有问题,如图:
只有本站会员才能查看附件,请 登录


但一旦置入其它的控件中,如:SSTab、Frame、PictureBox等控件中,执行程序后,就会不能在原位置显示,如图:
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


已经想过很多办法,都没法解决,请教高手不吝赐教,先行感谢!
2 回复
#2
wufuzhang2019-06-04 10:36
回复 楼主 treea
我试了一下Frame,发现Frame控件是没有ScaleMode属性,所以我猜问题应该出在这里。
经测试,如下修改就没问题了:
cLeft = CBobj.Left / 15
cTops = CBobj.Top / 15
cWidths = CBobj.width / 15


只有本站会员才能查看附件,请 登录
#3
treea2019-06-04 12:02
经过测试无问题,谢谢楼上的指点
1