VBAPIRunda program(?)
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Stränghantering API DDE Nätverk

Runda program(?)

Tja. Inget säger väl att fönster i windows måste vara fyrkantiga. Prova gärna följande:

1. Skapa ett vanligt EXE program i VB.

2. Set formens ScaleMode property till 3 - Pixel

3. Sätt in en Combobox mitt på fönstret

4. Lägg till en Module

5. Sätt in följande kod i modulen

' API POINT med x och y
Type POINTAPI
   X As Long
   Y As Long
End Type

' Konstanter som används för kombinationer
Public Const RGN_AND = 1
Public Const RGN_OR = 2
Public Const RGN_XOR = 3
Public Const RGN_DIFF = 4
Public Const RGN_COPY = 5

Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, _
      ByVal hSrcRgn1 As Long, _
      ByVal hSrcRgn2 As Long, _
      ByVal nCombineMode As Long) As Long

Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
      ByVal Y1 As Long, _
      ByVal X2 As Long, _
      ByVal Y2 As Long) As Long

Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _
      ByVal Y1 As Long, _
      ByVal X2 As Long, _
      ByVal Y2 As Long) As Long

Declare Function SetWindowRgn Lib "User32" (ByVal hWnd As Long, _
      ByVal hRgn As Long, _
      ByVal bRedraw As Boolean) As Long

6. Sätt in följande kod i formen

Private Sub Combo1_Click()
   Dim resultat As Integer
   Dim kombination As Long
   Dim storRund As Long
   Dim titelFyrkant As Long
   Dim fyrkantCirkel As Long
   Dim combonsBox As Long
   Dim alltKombin As Long
   Select Case Combo1.Text
      Case "RGN_AND"
         kombination = RGN_AND
      Case "RGN_COPY"
         kombination = RGN_COPY
      Case "RGN_DIFF"
         kombination = RGN_DIFF
      Case "RGN_OR"
         kombination = RGN_OR
      Case "RGN_XOR"
         kombination = RGN_XOR
   End Select
   storRund = CreateEllipticRgn(0, 2, Me.ScaleWidth, Me.ScaleHeight - 2)
   titelFyrkant = CreateRectRgn(2, 3, Me.ScaleWidth + 2, 21)
   alltKombin = CreateRectRgn(1, 1, 1, 1)
   combonsBox = CreateRectRgn(Combo1.Left + 2, _
            Combo1.Top + 22, _
            Combo1.Left + Combo1.Width + 2, _
            Combo1.Top + Combo1.Height + 22)
   ' storleken inte viktig
   fyrkantCirkel = CreateRectRgn(0, 0, 10, 30)
   resultat = CombineRgn(fyrkantCirkel, titelFyrkant, storRund, kombination)
   resultat = CombineRgn(alltKombin, fyrkantCirkel, combonsBox, RGN_OR)
   resultat = SetWindowRgn(Me.hWnd, alltKombin, True)
End Sub

Private Sub Form_Load()
   Combo1.AddItem "RGN_AND"
   Combo1.AddItem "RGN_COPY"
   Combo1.AddItem "RGN_DIFF"
   Combo1.AddItem "RGN_OR"
   Combo1.AddItem "RGN_XOR"
End Sub

6. Prova genom att välja i Combon

  Ini filerDDE
API
Ini filer
Runda program(?)


Top
< Ini filer DDE>
© Anders Enges, Vörå 2002  | 22.01.01 17:43 Visa asp koden