非矩形ActiveX控件
VB中的一般控件可以用gdi32.dll的CreateEllipticRgn,或CreatePolygonRgn等,和user32.dll的SetWindowRgn两个函数实现非矩形化。如,生成菱形窗体(控件道理是一样的),代码如下:
hy = Me.Height \ (2 * Screen.TwipsPerPixelY)
hx = Me.Width \ (2 * Screen.TwipsPerPixelX)
ap(0).x = 0: ap(0).y = hy
ap(1).x = hx: ap(1).y = 0
ap(2).x = Me.Width \ Screen.TwipsPerPixelX: ap(2).y = hy
ap(3).x = hx: ap(3).y = Me.Height \ Screen.TwipsPerPixelY
ap(4) = ap(0)
reRgn = CreatePolygonRgn(ap(0), 3, 1)
SetWindowRgn Me.hWnd, reRgn, True
可是ActiveX的hWnd却不能直接获得,上网查了很多资料也没解决,我该怎么办?
在ActiveX控件设计形式下的Form_Load和UserControl_Initialize中加入相应代码,也是不成功。
问题点数:100、回复次数:3Top
1 楼VBToy(无证编程)回复于 2005-06-03 14:22:53 得分 80
给你一个思路,异形控件可以通过在控件设计过程中设置MaskPicture及MaskColor来实现。Top
2 楼sakurako(看晨雾散开,你就是我一生的最爱...)回复于 2005-06-03 15:35:09 得分 20
给你的ActiveX控件添加hwnd属性,方法如下
在代码编辑中输入如下代码:
Public Property Get hwnd() As Long
hwnd = UserControl.hwnd
End Property
这样,你的控件就具有句柄属性了。Top
3 楼watcher_shen(吉吾)回复于 2005-06-06 10:57:18 得分 0
谢谢VBToy——这问题问的……Top




