其实效果就像XP的窗口一样!
因为用CreateRectRgn只能创建一个四面都是圆弧形的圆矩形区域,并不能创建一个我所需的形状!还请高手赐教!

解决方案 »

  1.   

    Option Explicit
    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 CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
    Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hrgn As Long, ByVal bRedraw As Boolean) As LongPrivate Const RGN_AND = 1
    Private Const RGN_COPY = 5
    Private Const RGN_DIFF = 4
    Private Const RGN_MAX = RGN_COPY
    Private Const RGN_MIN = RGN_AND
    Private Const RGN_OR = 2
    Private Const RGN_XOR = 3Private Sub form_load()
    Dim hrgn1 As Long, hrgn2 As Long, hrgn As Longhrgn1 = CreateRoundRectRgn(0, 0, 500, 500, 50, 50)
    hrgn2 = CreateRectRgn(0, 450, 500, 500)CombineRgn hrgn1, hrgn1, hrgn2, RGN_ORDebug.Print "hrgn="; hrgn, "Hrgn1="; hrgn1, "Hrgn2="; hrgn2
    SetWindowRgn Me.hWnd, hrgn1, TrueEnd Sub