Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hrgn As Long, ByVal bRedraw As Boolean) As Long
Public Function CreateShapeWindow(ByVal hWnd As Long, _
                              ByRef alData() As Long, _
                        Optional ByVal eType As EnumShapeWindow = eswRect) _
                                             As Boolean
    Dim lHandle As Long
    Dim lReturn As Long
    
    Select Case eType
        Case EnumShapeWindow.eswRect
            lHandle = CreateRectRgn(alData(0), alData(1), alData(2), alData(3))
        Case EnumShapeWindow.eswRoundRect
            lHandle = CreateRoundRectRgn(alData(0), alData(1), alData(2), alData(3), alData(4), alData(5))
        Case EnumShapeWindow.eswPolygon
            
        Case EnumShapeWindow.eswElliptic
            lHandle = CreateEllipticRgn(alData(0), alData(1), alData(2), alData(3))
    End Select
        
    lReturn = SetWindowRgn(hWnd, lHandle, True)
    
End Function
Form_laod:    Dim alData(5) As Long
    
    With Screen
        lpx = .TwipsPerPixelX
        lpy = .TwipsPerPixelY
    End With
    
    With Me
        alData(0) = 1
        alData(1) = 1
        alData(2) = .Width / lpx - 1
        alData(3) = .Height / lpy - 1
        alData(4) = 7
        alData(5) = 7
    End With
    
    CreateShapeWindow Me.hWnd, alData, eswRoundRect

解决方案 »

  1.   


    用SetWindowRgn设置窗口的显示区域SetWindowRgn VB声明 
    Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long 
    说明 
    这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许您改变窗口的区域。
    通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口,也可以将它分为两个或许多部分——实际上可以是任何形状 
    返回值 
    Long,执行成功为非零值,失败为0 
    参数表 
    参数 类型及说明 
    hWnd Long,将设置其区域的窗口 
    hRgn Long,将设置的区域的句柄,一旦设置了该区域,就不能使用或修改该区域句柄,也不要删除它 
    bRedraw Boolean,若为TRUE,则立即重画窗口 
    注解 
    为区域指定的所有坐标都以窗口坐标(不是客户坐标)表示,它们以整个窗口(包括标题栏和边框)的左上角为起点
     
      

  2.   

    : zyl910(910:分儿,我来了!) 你的这些帮助文档是出自哪里?
    尤其是DIB的,可否告诉我下在地址?或不大的话,可否发给我
    谢谢!![email protected]
      

  3.   

    Msdn上多的是,只是为E文罢了
      

  4.   

    我收集的API工具:http://www.commacn.com/vbsworld/ExtFiles/api32.zip
    343KB
    Win32 API帮助文件(中文版)
    '☆☆☆只有函数说明☆☆☆
    http://sd.onlinedown.net/Snowswinapi.htm
    最新1.2版
    超人气的编程工具,一本实用的教科书,一个几万人使用的共享软件,为什么不下载试试,API尽情掌屋在你的手中。
    '☆☆☆函数说明为主☆☆☆
    http://www.onlinedown.net/foxapi.htm
    系统程序|编程工具 本站首页
     
    软件名称:FoxAPI中文浏览器 
     
    整理日期:2002.1.30
    最新版本:1.0
    文件大小:1073KB
    软件授权:免费软件
    使用平台:Win9x/Me/NT/2000
    发布公司:Home Page 
    软件简介:
      本API浏览器文件由DeityFox 个人整理后出版,内容全摘自网络。版权归实际作者所有。为了让网友们能更好的阅读和管理Windows API 函数, 于是我为大家将网上的资料整理成数据库文件,并写了这个API浏览器。让查阅API 函数变的更简单,容易,也更有效。软件功能:可以完全取代VB自带的API文本浏览器,并能语法高亮显示。软件中所有函数原型均取自于Win32api.txt。并且提供1700多个函数的详细的中文说明,包括说明、返回值、参数表。更重要的一点是提供800多个真正完整的VB实例供你参考。
    '☆☆☆函数说明为主☆☆☆
    http://www.dapha.net/down/list.asp?id=1
    3981KB
    它是一套学习Api函数不可缺少的软件,内置api流览器
    '☆☆☆API声明为主☆☆☆
      

  5.   

    Public Function CreateShapeWindow(ByVal hWnd As Long, _
                                  ByRef alData() As Long, _
                            Optional ByVal eType As EnumShapeWindow = eswRect) _
                                                 As Boolean
    显示用户定义类型未定义?
      

  6.   

    Optional ByVal eType As EnumShapeWindow = eswRect你自己定义一个枚句类型好了
      

  7.   

    Enum EnumShapeWindow
        eswRect
        eswRoundRect
        eswPolygon
        eswElliptic
    End Enum
      

  8.   

    Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long又一个用户定义类型未定义,我就更不明白了。好人请回答。一定给分。
      

  9.   

    哦,不好意思,当时没有复制完全type pointapi
        x as long 
        y as long
    end type
      

  10.   

    type pointapi
        x as long 
        y as long
    end type
    提示:在私有对象模块中不能定义public的用户定义类型。
    怎么办,兄弟?
      

  11.   


    你要么把它原封不动的放到一个module里面
    要么在Type的前面加上private 
      

  12.   

    实在不好意思,在前面加private 错误提示:
    private enum 和用户定义类型不能作为参数、公共过程的返回类型、公共数据成员或公共用户定义类型的字段使用。
    我按你说的工程引入了module1,代码是你的全部包括后来的定义。
    怎么在form中引用呢?不好意思,我还没有真正事业过module。
      

  13.   

    enum前我没有加任何东西,只在type前加
    Private Type pointapi
        x As Long
        y As Long
    End Type就出现上面的提示。