首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

用户控件摆放有关问题

2012-02-02 
用户控件摆放问题我自己写了一个简单的日历控件在控件中自定义了最小的控件尺寸在使用过程中发现,如果窗体

用户控件摆放问题
我自己写了一个简单的日历控件
在控件中自定义了最小的控件尺寸

在使用过程中发现,如果窗体的太小,日历控件将不会完全被显示出来
我如何能让控件不受窗体的大小而正确显示啊?



[解决办法]
限制窗口的最小尺寸
[解决办法]
可以。

弹出一个子窗口模拟。

事实上你看到 ComboBox 的下拉列表、Tooltips 都是可以超出窗口的。
[解决办法]
使用SetParent,示例:

VB code
Option ExplicitPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Const GWL_STYLE = (-16)Private Const WS_CHILD = &H40000000Private Const WS_POPUP = &H80000000Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Command1_Click()    '浮动子窗口Dim oldSty As LongSetParent uCtr1.hWnd, 0    '你的控件不能是无窗口控件oldSty = GetWindowLong(uCtr1.hWnd, GWL_STYLE)   '兼容原因,应这样做oldSty = oldSty And Not WS_CHILDoldSty = oldSty Or WS_POPUPCall SetWindowLong(uCtr1.hWnd, GWL_STYLE, oldSty)uCtr1.Left = Me.Left - uCtr1.Width     '设置窗口新位置uCtr1.Top = Me.TopEnd SubPrivate Sub Command2_Click()    '还原为子窗口Dim oldSty As LongSetParent uCtr1.hWnd, Me.hWndoldSty = GetWindowLong(uCtr1.hWnd, GWL_STYLE)oldSty = oldSty And Not WS_POPUPoldSty = oldSty Or WS_CHILDCall SetWindowLong(uCtr1.hWnd, GWL_STYLE, oldSty)uCtr1.Left = 0uCtr1.Top = 0End Sub 

热点排行