papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Un objet FORM avec une forme inhabituelle Sam 22 Oct 2022 - 21:56 | |
| Assez de bavardage, tout est dans le code. - Code:
-
rem ============================================================================ rem Un objet FORM avec une forme inhabituelle rem ============================================================================ rem CombineRegion utilisé avec RGN_DIFF permet l’union des 2 régions rem il existe aussi : rem RGN_AND pour récupérer l’intersection des deux régions rem RGN_XOR pour faire l’union des parties non communes mais en retirant les rem parties communes rem ============================================================================ rem Pour fermer la fenêtre cliquez sur le bouton Fermer (La Palice ne peut pas dire mieux!) rem Pour déplacer la fenêtre maintenez le bouton droit de la souris enfoncé et rem faire glisser rem ============================================================================ dim w%,h%,hwnd%,ret% ,t$ label fermer
width 0,600 : height 0,600 top 0,(screen_y - height(0))/2 : left 0,(screen_x - width(0))/2 color 0,200,100,50
w% = width(0): h% = height(0) button 10 : top 10,530 : left 10,w%/2-50 : font_bold 10 : caption 10,"Fermer": on_click 10,fermer alpha 20 : top 20,80 : left 20,70 : font_size 20,12 : font_color 20,0,0,255 font_bold 20 t$ = " Un FORM en forme et ... avec un trou" + chr$(13) t$ = t$ + "pour pouvoir régarder ce qu'il y a derrière !"+ chr$(13) t$ = t$ + " Cliquer-déplacer sur le bandeau en haut " + chr$(13) + chr$(13) t$ = t$ + " Cliquer sur le bouton Fermer pour quitter ce FORM à trou" caption 20,t$
Form_En_Forme() end rem ============================================================================ SUB Form_En_Forme() ' Constantes dim_local RGN_AND : RGN_AND = 1 dim_local RGN_OR : RGN_OR = 2 dim_local RGN_XOR : RGN_XOR = 3 dim_local RGN_DIFF : RGN_DIFF = 4 dim_local RGN_COPY : RGN_COPY = 5 dim_local Region%,RegionRectangle% ,hwnd% hWnd% = handle(0) dll_on "gdi32" ' on definit une region ellipse inscrite dasn la forme Region% = dll_call4("CreateEllipticRgn",0, 0, w%-20, h%) ' on definit un carré qui est à l'intérieur de la form RegionRectangle% = dll_call4("CreateRectRgn",int(w%/2-50),int(H%/2-50),int(W%/2+50),int(H%/2+50)) ' on définit une region combinant le cercle et le carré ' CombineRegion utilisé avec RGN_DIFF permet de retirer RegionRectangle de Region ' d'où l'effet de transparence. ret% = dll_call4("CombineRgn",Region%,Region%,RegionRectangle%,RGN_DIFF) ' libération des ressources avant de réaffecter une autre région ret% = dll_call1("DeleteObject",RegionRectangle%)
RegionRectangle% = dll_call4("CreateRectRgn",0,h%-40,w%,h%) ' création du rectangle du bas ret% = dll_call4("CombineRgn",Region%,Region%,RegionRectangle%,RGN_OR) ' libération des ressources ret% = dll_call1("DeleteObject",RegionRectangle%) ' on affecte cette region à la form dll_off dll_on "user32" ret% = dll_call3("SetWindowRgn",hWnd%,Region%,0) END_SUB rem ============================================================================ Fermer: terminate return rem ============================================================================
| |
|