非矩形ActiveX控件

watcher_shen 2005-06-03 01:52:58
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中加入相应代码,也是不成功。
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
watcher_shen 2005-06-06
  • 打赏
  • 举报
回复
谢谢VBToy——这问题问的……
sakurako 2005-06-03
  • 打赏
  • 举报
回复
给你的ActiveX控件添加hwnd属性,方法如下
在代码编辑中输入如下代码:

Public Property Get hwnd() As Long
hwnd = UserControl.hwnd
End Property

这样,你的控件就具有句柄属性了。
VBToy 2005-06-03
  • 打赏
  • 举报
回复
给你一个思路,异形控件可以通过在控件设计过程中设置MaskPicture及MaskColor来实现。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧