3 Questions

Résolu
cs_marsouin Messages postés 62 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 21 janvier 2007 - 23 avril 2005 à 00:34
cs_marsouin Messages postés 62 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 21 janvier 2007 - 23 avril 2005 à 12:17
Bonsoir à tous
En effet j'ai plusieurs questions à vous soumettre; étant débutant est n'étant pas équipé de MSDN, je vous avoue que je me perd facilement dans VB6
Je vous signale par avance que mes questions vont certainement vous paraître simple mais je n'ai rien trouver sur le site
1: J'ai mis une PictureBox (vide) ; un CommondDialog et un bouton
Quand j'ouvre le common dialog et que je choisis une image pas de problème elle s'affiche. Mais comment fait on pour décharger cette image en recliquant sur le bouton qui donne accés au common dialog ce qui permettrait après avoir choisi la fonction "Annuler" du common dialogue de remettre le PctureBox dans son état initial (donc vide)

2: Je me suis rendu compte que certaine MsgBox n'avait pas d'avertisseur sonore comme la vbQuestion est ce normale ? comment puis rajouter un son autre que le vilain Beep de VB6 ?

3: J'ai vu sur le site qu'il était possible de rendre une Form transparente (tout en ayant ses boutons de contrôles visibles). Néanmoins personne n'a pris le temps d'expliquer les codes utilisés. Y'a t il une personne qui pourrait me donner et m'expliquer un code qui permettrait de rendre transparente une Form?

Ps: N'oubliez pas que je suis un débutant au début de son apprentissage.

Merci d'avance pour le temps passé a me répondre

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 avril 2005 à 01:24
Salut
Pourquoi n'as-tu pas le MSDN ? (je connais la réponse, pas bien !)
- Pour vider une PictureBox, essaye PictureBox.Picture = Nothing
- Le son associé aux évènements se détermine dans les paramètres du panneau de configuration. Pas recommandé d'aller mettre les pattes dans les choix des users !
- Pour la transparence, suffit de lire les commentaires des sources qui en parle (et il n'y en a pas qu'une !) et de regarder dans l'aide ... à oui ... bref

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
3
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
23 avril 2005 à 11:03
Salut ;O)

Question 1 :
Je suppose que pour charger une image dans une PictureBox tu as utilisé la fonction LoadPicture, du style Me.Picture1.Picture=LoadPicture("C:\Directory\MonImage.jpg").
Pour décharger une image d'une PictureBox, utilise la même fonction comme ceci :
Me.Picture1.Picture = LoadPicture()

Question 2 :
Jouer un son n'est pas bien compliqué en VB. Cependant il faudra passer par l'API sndPlaySoundA de la DLL winmm.dll
Fais un copier-coller de ce code dans un formulaire :

Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

'Sound Constant
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private wFlags As Long
Private retVal As Long

Private Sub Form_Load()


wFlags = SND_ASYNC Or SND_NODEFAULT

'Change le répertoire et le nom du fichier wav à jouer
'Un son est joué de façon asynchrone, c'est à dire que le programme n'attend pas que le son soit terminé pour continuer. Ce qui est largement mieux.

retVal= sndPlaySound("C:\MonRépertoire\Son.wav", wFlags)

'retVal sera à TRUE en cas de succès, à FALSE en cas d'échec

End Sub

Question 3 :

'A copier-coller dans un formulaire
Private Const LWA_COLORKEY = &H1

Private Const LWA_ALPHA = &H2

Private Const GWL_EXSTYLE = (-20)

Private Const WS_EX_LAYERED = &H80000


Private
Declare
Function GetWindowLong
Lib
"user32"
Alias
"GetWindowLongA" (
ByVal hWnd
As
Long,
ByVal nIndex
As
Long)
As
Long
Private
Declare
Function SetWindowLong
Lib
"user32"
Alias
"SetWindowLongA" (
ByVal hWnd
As
Long,
ByVal nIndex
As
Long,
ByVal dwNewLong
As
Long)
As
Long
Private
Declare
Function SetLayeredWindowAttributes
Lib
"user32" (
ByVal hWnd
As
Long,
ByVal crKey
As
Long,
ByVal bAlpha
As
Byte,
ByVal dwFlags
As
Long)
As
Long


Private
Sub Form_Load()



Dim Ret
As
Long



'On récupère les informations EXSTYLE de la fenêtre en cours dans la variable Ret
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)

'On ajoute l'information LAYERED à la fenêtre en cours afin que l'on puisse lui attribuer un effet d'opacité
Ret = Ret
Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret



'On applique le style d'opacité à la fenêtre en cours
'la fenêtre aura une opacité de 128 (valeur de 0 à 255), 0 rend la fenêtre invisible, 255 complètement visible
128 rend donc la fenêtre à moitié transparente
SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA


End
Sub


Explication en anglais des paramèters de l'API SetLayeredWindowAttributes :

· hwnd
[in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.


· crKey
[in] Pointer to a COLORREF value that specifies the transparency color key to be used when composing the layered window. All pixels painted by the window in this color will be transparent. To generate a COLORREF, use the RGB macro.


· bAlpha
[in] Alpha value used to describe the opacity of the layered window. Similar to the SourceConstantAlpha member of the BLENDFUNCTION structure. When bAlpha is 0, the window is completely transparent. When bAlpha is 255, the window is opaque.


· dwFlags
[in] Specifies an action to take. This parameter can be one or more of the following values.
LWA_COLORKEY
Use crKey as the transparency color.
LWA_ALPHA
Use bAlpha to determine the opacity of the layered window..

Guy
3
cs_marsouin Messages postés 62 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 21 janvier 2007
23 avril 2005 à 12:17
Merci à vous deux pour vos réponses
Ce que je m'aperçois c'est qu'il y'a toujours plusieurs façon de construire un code
Je vais essayé de me justifier auprès d' admin cs:
J'ai eu la folle idée un matin de me lancer dans la programmation; oui mais avec quoi et comment?
Après quelques recherches sur internet, le langage de programmation le plus accessible serait VB. C'est pourquoi je me suis mis à la recherche de VB pour voir si cela me convenait. Il était hors de question (financierement parlant) d'acheter un logiciel surtout à ce prix là "juste pour voir"
Donc encore quelque recherche sur VB pour me conforter dans mon idée et ensuite je me "mettrais à jour" pour pouvoir bénéficier de la totalité des composants, c'est promis
Merci encore pour votre éfficacité
0
Rejoignez-nous