Français
Source/ Codesnippets

Fensterformen Verschiedene

 

KompilierenMarqueSéparation
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Verschiedene Fensterformen
+----------------------------------------------------------+
| combrgn.prf                                              |
| Autor: Sebastian König                                   |
| email: feedback@sekoenig.de                              |
| Homepage: http://www.sekoenig.de                         |
| Spielereien mit CombineRgn()                             |
+----------------------------------------------------------+
+===================================================+
# Dieser Quelltext baut auf Code aus PRFellow 99    #
# von Thomas Hölzer auf. An dieser Stelle noch      #
# mal vielen Dank und ein grosses Lob an den        #
# Autor!                                            #
#                                                   #
# Mehr zu PRFellow gibt`s unter:                    #
# http://prfellow.home.pages.de                   #
+===================================================+
--Benötigte Funktionen
DEF SetWindowRgn(3) !USER32,SetWindowRgn
DEF CreateEllipticRgn(4) !GDI32,CreateEllipticRgn
DEF CreateRectRgn(4) !GDI32,CreateRectRgn
DEF CreatePolyRgn(3) !GDI32,CreatePolygonRgn
DEF CombineRgn(4) !GDI32,CombineRgn
DEF DeleteObject(1) !GDI32,DeleteObject
--Deklarationen
declare DEST&,SOURCE1&,SOURCE2&                für CombineRgn()
---Neues Fenster erstellen
windowstyle 16
window 0,0-400,400
windowtitle ...
Jetzt geht`s los...
---Fenster mit eckigem Loch
SetWindowPos %hwnd=0,0-400,400                   Fenster anpassen
windowtitle Eckiges Loch
cls 0                                            Damit das Ergebnis besser
sichtbar wird
TextColor @RGB(31,31,31),-1
DrawText 1,1,Mausklick = Weiter
let DEST&    = CreateRectRgn(0,0,0,0)            Die neue Region mit 0 initialisiern
let SOURCE1& = CreateRectRgn(0,0,400,400)        Die 1. der beiden zu kombinierenden
Regionen
let SOURCE2& = CreateRectRgn(100,100,300,300)    ...und die 2.
CombineRgn(DEST&,SOURCE1&,SOURCE2&,3)            Die beiden Regionen werden kombiniert
und das Ergebnis wird in
DEST& gespeichert
SetWindowRgn(%hwnd,DEST&,1)                      Nun ändern wir nur noch die Region
des Fensters...
waitinput   warten...
---Fenster mit rundem Loch
SetWindowPos %hwnd=%winLeft,%winTop-400,400
windowtitle Rundes Loch
cls 0
TextColor @RGB(31,31,31),-1
DrawText 1,1,Mausklick = Weiter
let DEST&    = CreateRectRgn(0,0,0,0)
let SOURCE1& = CreateRectRgn(0,0,400,400)             |
let SOURCE2& = CreateEllipticRgn(100,100,300,300)     |
>  siehe oben...
CombineRgn(DEST&,SOURCE1&,SOURCE2&,3)                 |
|
SetWindowRgn(%hwnd,DEST&,1)                          /
waitinput   und wieder warten...
---Fenster, das in 2 Hälften geteilt ist
SetWindowPos %hwnd=%winLeft,%winTop-400,400
windowtitle Geteiltes Window
cls 0
TextColor @RGB(31,31,31),-1
DrawText 1,1,Mausklick = Weiter
let DEST&    = CreateRectRgn(0,0,0,0)
let SOURCE1& = CreateRectRgn(0,0,170,400)             |
let SOURCE2& = CreateRectRgn(230,0,400,400)           |
>  siehe oben...
CombineRgn(DEST&,SOURCE1&,SOURCE2&,3)                 |
|
SetWindowRgn(%hwnd,DEST&,1)                          /
waitinput   das übliche...
---Auch geteilt, nur anders....
SetWindowPos %hwnd=%winLeft,%winTop-400,400
windowtitle Geteiltes Window, die 2.
cls 0
TextColor @RGB(31,31,31),-1
DrawText 1,1,Mausklick = Weiter
let DEST&    = CreateRectRgn(0,0,0,0)
let SOURCE1& = CreateRectRgn(0,0,200,200)             |
let SOURCE2& = CreateEllipticRgn(200,200,400,400)     |
>  siehe oben...
CombineRgn(DEST&,SOURCE1&,SOURCE2&,3)                 |
|
SetWindowRgn(%hwnd,DEST&,1)                          /
waitinput   und wieder...
---Schlüsselloch-Fenster
SetWindowPos %hwnd=%winLeft,%winTop-200,300
windowtitle ...     Sieht man eh´ nicht ganz...
cls 0
TextColor @RGB(31,31,31),-1
DrawText 33,1,Mausklick = Weiter
let DEST&    = CreateRectRgn(0,0,0,0)
let SOURCE1& = CreateEllipticRgn(0,0,200,200)         |
let SOURCE2& = CreateRectRgn(50,100,150,400)          |
>  siehe oben...
CombineRgn(DEST&,SOURCE1&,SOURCE2&,2)                 |
|
SetWindowRgn(%hwnd,DEST&,1)                          /
waitinput   was auch sonst?
---4-geteiltes-Fenster
SetWindowPos %hwnd=%winLeft,%winTop-400,400
windowtitle 4-geteiltes-Fenster
cls 0
TextColor @RGB(31,31,31),-1
DrawText 1,1,Mausklick = Ende
let DEST&    = CreateRectRgn(0,0,0,0)
let SOURCE1& = CreateRectRgn(0,0,170,400)        |
let SOURCE2& = CreateRectRgn(230,0,400,400)       > siehe oben...
|
CombineRgn(DEST&,SOURCE1&,SOURCE2&,2)            /
jetzt wird es anders:
let SOURCE1& = DEST&                            wir speichern DEST in SOURCE1,
let SOURCE2& = CreateRectRgn(0,170,400,230)     erstellen noch eine Region...
CombineRgn(DEST&,SOURCE1&,SOURCE2&,4)           ...und kombinieren ein 2. Mal
SetWindowRgn(%hwnd,DEST&,1)                     ab jetzt wieder alles wie oben...
waitinput   auch das bleibt gleich...
---Und das war`s...
DeleteObject(DEST&)                             wir geben die erstellten Regionen
DeleteObject(SOURCE1&)                          wieder frei
DeleteObject(SOURCE2&)                          (Dank an Christian Zietz)
end
 
15.07.2007  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

1.254 Views

Untitledvor 0 min.
Andre Rohland22.10.2015
Donnie31.03.2013

Themeninformationen

cet Thema hat 1 participant:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie