Creer un messageBox personnalisé [Résolu]

Messages postés
201
Date d'inscription
mercredi 8 février 2006
Dernière intervention
20 février 2007
- - Dernière réponse : hred1
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Dernière intervention
6 décembre 2007
- 22 mai 2006 à 21:11
Bonjour,

je réalise une application de copie de fichier avec fenetre d'état un peu comme SuperCopier.
Actuellement, lorsque le fichier destination existe, je demande à l'utilisateur si il veux l'ecraser.
Par contre, ca devient très chiant lorsqu'on copie une série de fichier déjà existant.
Je veux donc rajouter à mon MessageBox une checkbox "appliquer à tous".

J'ai pensé créer une classe qui hérite de System.Windows.Form.MessageBox mais soit il m'oblige à créer un constructeur pour ma classe par exemple Toto:
toto() : base()
{}

Soit, si j'en met un, il me dit que le MessageBox n'a pas de constructeur.

Je pensais créer une winform dans laquelle je mettrais les bouttons, textes et ma checkbox mais j'aimerai pouvoir retrouver le principe des MessageBoxButton et MessageBoxIcon.
Pour les bouttons je peux tester la valeur et créer les bouttons qu'il faut mais pour l'icone je ne sais pas comment récupérer l'image pour la mettre dans une pictureBox.

Auriez vous une idée à me proposer pour avoir un messageBox avec une checkbox?

f.colo
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Dernière intervention
30 décembre 2007
3
Merci
Voilà.
En fait, ce n'est pas GetIconInfo(), mais LoadIcon() qu'il faut utiliser. Ça donne quelque chose comme ça :





<hr />

// Déclarer la fonction native permettant de récupérer le handle d'icône

[DllImport("user32.dll")]
private static unsafe extern IntPtr LoadIcon(IntPtr hInstance, void* lpIconName);

// Déclarer la fonction native permettant de libérer le handle d'icône
[DllImport("user32.dll")]
private static extern bool DestroyIcon(IntPtr hIcon);

// Récupérer une icône
private unsafe Icon GetIcon(int iconNumber) {
   // On récupère le handle
   IntPtr IconHandle = LoadIcon(IntPtr.Zero, ((IntPtr)iconNumber).ToPointer());
   // On créé l'icône correspondante
   Icon icon = Icon.FromHandle(iconHandle)
   // On peut libérer le handle
   DestroyIcon(iconHandle);
   return icon;
}





<hr />
Le paramètre iconNumber indique l'icône à récupérer et doit être une des valeurs définies dans le fichier Winuser.h du SDK Windows. Ces valeurs sont 32513 pour l'icône "Erreur", 32514 pour l'icône "Question", 32515 pour l'icône "Exclamation" et 32516 pour l'icône "Information". Pour faciliter les choses, je te conseille de créer une énumération plutôt que d'utiliser ces valeurs directement.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de dgouttegattat
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Dernière intervention
20 février 2007
0
Merci
Sinon, peut on changer le nom d'affichage d'un boutton, c'est à dire je met un bouton System.Windows.Forms.MessageBoxButtons.YesNoCancel et le Cancel je le renomme en "appliquer à tous" tout en testant DialogResult.Cancel en retour.

f.colo
Commenter la réponse de cs_fcolo
Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Dernière intervention
30 décembre 2007
0
Merci
Bonjour,
Tu ne peux dériver de System.Windows.Forms.MessageBox, car cette classe ne possède qu'un seul constructeur privé. Le seul moyen d'obtenir ce que tu veux semble donc effectivement de créer ta propre MessageBox.

Malheureusement, je ne pense pas que tu puisses récupérer et afficher les icônes originales de MessageBox en .NET "pur" (j'entends par là, sans faire appel à P/Invoke) : en effet, la classe System.Windows.Forms.MessageBox elle-même ne manipule pas directement les icônes, elle appelle simplement la méthode MessageBox de l'API Win32.

Il existe une fonction Win32 appelée GetIconInfo() qui devrait permettre de récupérer les icônes nécessaires. J'essaie de  regarder cela de plus près et je reviens.
Commenter la réponse de dgouttegattat
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Dernière intervention
20 février 2007
0
Merci
Beh je te remercie beaucoup,

je vais me jeter dans le developpement d'une nouvelle classe :).
Si j'y arrive et que ca donne bien, je la mettrais sur le site.

f.colo

PS: Je valide demain après les tests
Commenter la réponse de cs_fcolo
Messages postés
108
Date d'inscription
samedi 9 avril 2005
Dernière intervention
6 décembre 2007
0
Merci
Bonjour,

pour celà tu dois rajouter une autre fraime (ta messageBox)

tu rajoutes tes boutons avec les icons que tu veux

puis tu fais appel à cette fraime et en fonction du bouton clické tu lance ton evénement

Voilà

RED1
Commenter la réponse de hred1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.