English Sentence Loading...
英语句子加载中...
VB制作特殊窗口
作者:junyuqin 日期:2007-05-03
1.各种形状的窗口(仅给出了函数名,具体定义可以查阅API Viewer)
1)CreateEllipticRgn 建立一个椭圆形的区域;
2)CreateRoundRectRgn 建立一个圆角矩形的区域;
3)CreatePolygonRgn 建立一个多边形区域;
4)CreatePolyPolygonRgn建立多个可重叠的多边形区域;
5)CreateRectRgn 建立一个矩形区域;
6)CombineRg连接两个区域,通过代入不同的参数可以实现多种合并方式;
7)SetWindowRgn 设定窗口的范围,使用前边创建的区域;
8)FrameRgn 在指定区域画上边框。
下边的程序就是建立一个形如“棒槌”的窗口:
Private Sub Form1_Load()
Dim p, q As Long
p = CreateEllipticRgn(0, 0, 200, 200) ′通过制定左上角和右下角的坐标建立一个圆q = CreateRoundRectRgn(40, 120, 160, 400, 20, 20) ′通过制定左上角和右下角的坐标以及圆角的宽度建立一个圆角矩形CombineRgn p, q, p, RGN_OR ′联合两个区域,使用或(就是取并集)运算SetWindowRgn hWnd, p, True ′设置窗口区域Me.Refresh ′刷新窗口End Sub 2.浮动窗口Delphi中实现浮动窗口非常容易,只要在属性栏中设置就可以。用VB实现就只有借助于API函数:
SetWindowPos hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE+SWP_SHOWWINDOW就可以了。其中hWnd是窗口的句柄,HWND_TOPMOST指定了窗口的位置-总是在最上边。如果你要取消这个属性,只要把TOPMOST改成NOTOPMOST就可以了。后面4个参数指定了窗口的位置和大小,和VB提供的MOVE方法一样。不过最后一个参数如果指定了SWP_NOMOVE(不改变位置)和SWP_NOSIZE(不改变大小),那么这四个参数就会被忽略。
3.透明窗口去年的《电脑报》上提供了一个制作透明窗口的办法,这里再介绍另一种方法:
Private Sub Form1_Load()
Dim p As Long
p = GetWindowLong(hWnd,GWLEX STYLE) ′取得当前窗口属性SetWindowLong hWnd, GWL_EXSTYLE,p +WS_EX_TRANSPARENT
′加上一个透明属性Me.Refresh
End Sub
1)CreateEllipticRgn 建立一个椭圆形的区域;
2)CreateRoundRectRgn 建立一个圆角矩形的区域;
3)CreatePolygonRgn 建立一个多边形区域;
4)CreatePolyPolygonRgn建立多个可重叠的多边形区域;
5)CreateRectRgn 建立一个矩形区域;
6)CombineRg连接两个区域,通过代入不同的参数可以实现多种合并方式;
7)SetWindowRgn 设定窗口的范围,使用前边创建的区域;
8)FrameRgn 在指定区域画上边框。
下边的程序就是建立一个形如“棒槌”的窗口:
Private Sub Form1_Load()
Dim p, q As Long
p = CreateEllipticRgn(0, 0, 200, 200) ′通过制定左上角和右下角的坐标建立一个圆q = CreateRoundRectRgn(40, 120, 160, 400, 20, 20) ′通过制定左上角和右下角的坐标以及圆角的宽度建立一个圆角矩形CombineRgn p, q, p, RGN_OR ′联合两个区域,使用或(就是取并集)运算SetWindowRgn hWnd, p, True ′设置窗口区域Me.Refresh ′刷新窗口End Sub 2.浮动窗口Delphi中实现浮动窗口非常容易,只要在属性栏中设置就可以。用VB实现就只有借助于API函数:
SetWindowPos hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE+SWP_SHOWWINDOW就可以了。其中hWnd是窗口的句柄,HWND_TOPMOST指定了窗口的位置-总是在最上边。如果你要取消这个属性,只要把TOPMOST改成NOTOPMOST就可以了。后面4个参数指定了窗口的位置和大小,和VB提供的MOVE方法一样。不过最后一个参数如果指定了SWP_NOMOVE(不改变位置)和SWP_NOSIZE(不改变大小),那么这四个参数就会被忽略。
3.透明窗口去年的《电脑报》上提供了一个制作透明窗口的办法,这里再介绍另一种方法:
Private Sub Form1_Load()
Dim p As Long
p = GetWindowLong(hWnd,GWLEX STYLE) ′取得当前窗口属性SetWindowLong hWnd, GWL_EXSTYLE,p +WS_EX_TRANSPARENT
′加上一个透明属性Me.Refresh
End Sub
评论: 0 | 引用: 0 | 查看次数: 3370