[..] Créer une GUICreate autre que rectangle ou carrée

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

[..] Créer une GUICreate autre que rectangle ou carrée

#1

Message par MiXS »

Bonjour a tous, (Heureux de retrouver le forum :wink: )
1- Voila je souhaiterais créer une GUICreate d'une autre forme (arrondi) que rectangle est-ce possible ?

2-Est-ce possible sinon de'integrer dans le GUICreate rectangle une forme arrondi ?

Merci de votre aide ! :D
Image
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#2

Message par sylvanie »

oui oui.
voilà un vieille exple que j'avais fait il y a qq années, depuis j'ai amélioré le drag n drop de la GUI (remarquez qu'à l'époque _ispressed ne faisait pas parti des udf, et il fallait la recopier en local ^^, je pense qu'on l'enlevée modulo l'include) :

Code : Tout sélectionner

opt ( "GUIONEVENTMODE" , 1 )
#include <GUIConstants.au3>
;GUI
GUICreate ( "title" , 300 , 300 , 30 , 30 , $WS_POPUP , $WS_EX_LAYERED )
$B = GUICtrlCreateButton ( "TEST" , 100 , 100 , 50 , 50 , - 1 , 0x00000020 )
GuiCtrlSetOnEvent ( $B , "hello" )
$B2 = GUICtrlCreateButton ( "quit" , 200 , 100 , 50 , 50 , - 1 , 0x00000020 )
GuiCtrlSetOnEvent ( $B2 , "_exit" )
$inp = GUICtrlCreateInput ( "world" , 150 , 220 , 50 , 20 )
$n = GUICtrlCreatePic ( "Background1.gif" , 0 , 0 , 300 , 300 , - 1 , 0x00000020 )
GuiCtrlSetOnEvent ( $n , "_move" )
GUISetState ( @SW_SHOW )
GuiCtrlSetState ( $B , $GUI_FOCUS )
GuiCtrlSetState ( $B2 , $GUI_FOCUS )
GuiCtrlSetState ( $inp , $GUI_FOCUS )
GuiCtrlSetState ( $B , $GUI_FOCUS )
GUISetOnEvent ( $GUI_EVENT_CLOSE , "_Exit" )
while 1
Wend
func _exit ( )
Exit
EndFunc
Func Hello ( )
MsgBox ( 0 , "hello" , GUICtrlRead ( $inp ) )
EndFunc
func _move ( )
opt ( "GUIONEVENTMODE" , 0 )
$posw = WinGetPos ( "title" )
$poss = MouseGetPos ( )
$deltax = $poss[0] - $posw[0]
$deltay = $poss[1] - $posw[1]
Do
$msg = GUIGetMsg ( )
Until $msg == $GUI_EVENT_PRIMARYUP
$pos = MouseGetPos ( )
WinMove ( "title" , "" , $pos[0] - $deltax , $pos[1] - $deltay )
opt ( "GUIONEVENTMODE" , 1 )
EndFunc
Func _IsPressed ( $hexKey )
Local $aR , $bRv
$hexKey = '0x' & $hexKey
$aR = DllCall ( "user32" , "int" , "GetAsyncKeyState" , "int" , $hexKey )
If $aR[0] <> 0 Then
$bRv = 1
Else
$bRv = 0
EndIf
Return $bRv
EndFunc


ps1 : le background était un gif de la terre dont j'avais dégagé les bords en les rendant transparent, et donc cette GUI est "ronde" comme la terre. En réalité c'est un rectangel déguisé , mais la var $WS_EX_LAYERED fait que même si on clique dans la zone transparente, rien ne se passe


[ edit ] : finalement dans cette version on n'a plus besoin de _ispressed. Avant j'utilisait une touche pour déplacer la fenêtre, voilà voilà ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

#3

Message par MiXS »

Ah ca fais plaisir de voir que l'on peut !
Merci Sylvanie ! :wink:
Image
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

#4

Message par MiXS »

Euh ...
J'ai essayé sur un script modifié mais je n'y arrive pas les boutons ne marchent pas :?
Si vous pouviez m'aider :wink:

Script :
MiXS Media Player version 1.1.au3
Image :
Image
Image
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#5

Message par sylvanie »

mince, je ne trouve pas la lib GuiList.au3 qui pourtant à l'air connue ...
tu as un lien pour la télécharger stp ?
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

#6

Message par MiXS »

Voici un lien mais c'est a toi de le creer :wink:

GuiList.au3

Tu selectionne tout et tu copie le tout dans autoit et tu le met dans le dossier AutoIt3/Include :wink:

Ps:Désolé je n'ai rien trouvé de mieux :?
Image
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#7

Message par Tlem »

Si Si , il y à plus simple : GuiList.au3
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#8

Message par sylvanie »

Ok, je viens de l'intégrer, j'ai juste dû faire une fonction bouchon _IsClassName qui était inconue dans mon environnement.

En tout cas la lecture, pause, arrêt, avance rapide / recule et volume sonore ont l'aire de marcher

effectivement pour la progressbar, et le temps évalué c'est pas encore prêt.

j'ai rebasculer en transparence, et ai constaté qu'il faudra imposer des background aux controles de type listebox, edit ... sinon les fonds deviennent transparent.

reste à creuser
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#9

Message par sylvanie »

juste un ajout : tu devrais utiliser un slider vertical (maintenant que j'y pense je crois que t'avais poser la question avant le problème du site) :

Code : Tout sélectionner

GUICtrlCreateSlider (10,10,20,200,$TBS_VERT)
GUICtrlSetLimit(-1,100,0)   ; change min/max value
après tu lis la valeur, et tu interprètres la valeur comme un pourcentage du volume
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#10

Message par ani »

Pour créer une interface de forme non conventionnel (ronde, polygone, pyramide,....) on a la possibilité d'utiliser la dll GDI, celle-ci signifie Graphique disegn interface, les possibilités sont immense.

Pour cela on va faire appel a une fonction du user32, setwindowrgn (fixer fenêtre region), couplé par les fonctions du GDI.

Pour le reste il existe une bibliotheque Skin.au3, faite les recherche concernant ceux-ci.
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

#11

Message par MiXS »

Merci a tous pour vos essai/réponses !
Mais sylvanie quand tu palre du slider je l'ai mis moi mais le son ne se regle pas ! :(
Comment faire ?


PS:j'essaye toujours de faire la forme au choix mais sans succès les boutons ne repondent plus !
Image
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#12

Message par sylvanie »

lance la lecture d'un mp3, puis lance ce script pour le tester.
En gros, il suffit de mettre un évènement sur le slider lui même

Code : Tout sélectionner

#include <GUIConstants.au3>
GUICreate ( "slider" , 220 , 400 , 200 , 200 )
GUISetBkColor ( 0x00E0FFFF ) ; will change background color
SoundSetWaveVolume ( 50 )
$slider1 = GUICtrlCreateSlider ( 10 , 10 , 20 , 200 , $TBS_VERT )
GUICtrlSetLimit ( - 1 , 100 , 0 ) ; change min/max value
GUICtrlSetData ( - 1 , 50 )
;$button = GUICtrlCreateButton ( "Value?" , 75 , 70 , 70 , 20 )
GUISetState ( )
GUICtrlSetData ( $slider1 , 45 ) ; set cursor
$start = TimerInit ( )
Do
$n = GUIGetMsg ( )
If $n = $slider1 Then
$val = GUICtrlRead ( $slider1 )
SoundSetWaveVolume ( 100 - $val ) ; comme la position haute correspond à0 , l semble plus naturel d'inverser
EndIf
Until $n = $GUI_EVENT_CLOSE
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

#13

Message par MiXS »

Ca marche pas encore pour le reglage du volume :?
Mais toujours ce probleme de boutons qui ne reagissent pas quand on appuye dessus si on change de forme :shock:
Image
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#14

Message par sylvanie »

quand tu dis que ça ne marche pas, tu parles au niveau de l'intégration dans ton code ? car dans l'exple envoyé, j'ai bien le volume qui chande en fonction du slider. Cependant, il ne s'agit que du son "wave" pas le général.

Pour les pbs de bouton par contre, je n'arrive pas à reprobduire le problème. La gui arrive bien sous la forme autre que rectangulaire, et le bouton déclanchent bien les actions ... hormis les pbs évoqués plus haut (background ...)
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

#15

Message par MiXS »

Non le reglage du volume ne marche pas integré ou pas !
Dans le mixeur du volume (windows) on voit bien que le son du slider se regle mais il ne change pas le volume du player :?

Pour les contours je l'ai fais avec EzSkin donc ca marche mieux !
Mais seul probleme avec celui ci c'est que je ne peut pas enlever le contour de la fenetre (fermer,reduir,aggrandir)!
Pour les boutons avec EzSkin ils marchent nickel ! :wink:
Image
Répondre