begin process at 2012 02 09 23:43:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > MESSAGEBOX AVEC UNE API

MESSAGEBOX AVEC UNE API


 Information sur la source

Note :
Aucune note
Catégorie :API Niveau :Débutant Date de création :21/05/2003 Date de mise à jour :10/03/2005 07:50:59 Vu :5 777

Auteur : greg13

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

Il s'agit de l'api et de quelques constantes pour obtenir le même résultat qu'avec la fonction MsgBox(), ceci permet aux débutant de comprendre quelque chose aux API.

Source

  • Public Const OKONLY = &H0&
  • Public Const OKCANCEL = &H1&
  • Public Const ABORTRETRYIGNORE = &H2&
  • Public Const YESNOCANCEL = &H3&
  • Public Const YESNO = &H4&
  • Public Const CRITICAL = &H10&
  • Public Const QUESTION = &H20&
  • Public Const EXCLAMATION = &H30&
  • Public Const INFORMATION = &H40&
  • Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
  • Private Sub Form_Load()
  • rep = MessageBox(Me.hwnd, "Hello, World", "Hello",INFORMATION)
  • 'Ce code affiche un message box
  • End Sub
Public Const OKONLY = &H0&
Public Const OKCANCEL = &H1&
Public Const ABORTRETRYIGNORE = &H2&
Public Const YESNOCANCEL = &H3&
Public Const YESNO = &H4&
Public Const CRITICAL = &H10&
Public Const QUESTION = &H20&
Public Const EXCLAMATION = &H30&
Public Const INFORMATION = &H40&

Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long


Private Sub Form_Load()
rep = MessageBox(Me.hwnd, "Hello, World", "Hello",INFORMATION)
'Ce code affiche un message box
End Sub 

 Conclusion

En cas, d'ereur dans le code merci de me prévenir sans m'envoyer des millions de messages horribles et en plus inutiles!
Je vous invite à visiter mon site sur l'informatique : www.passionpc.net
Si ca certaine personne sont interresée par les API et le réseaux, un tutorial Sur les API Winsock se trouve sur mon site Web :
http://membres.lycos.fr/vbasicsite/ApiWinsock.ht m


 Historique

10 mars 2005 07:51:00 :

 Sources du même auteur

Source avec Zip PINBALL WINDOWS XP : CHOISISSEZ VOS MEILLEURS SCORES

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

Commentaires et avis

Commentaire de Sirocooo le 21/05/2003 17:25:10

Peux-tu expliquer si c'est mieux que le MSGBOX ?

Commentaire de greg13 le 21/05/2003 19:26:07

Je pense qu'il y a moyen de balancer les message box sur n'importe qu'elle fenètre qui tourne sur windows à condition de conaitre son handle. Sinon de toute facon lorsqu'on utilise la fonction MSGBOX, on utilise l'API sans le savoir.

Commentaire de sebleboss2002 le 21/05/2003 20:42:27

Pourquoi faire simple quand on peut faire compliqué...

Commentaire de greg13 le 21/05/2003 21:54:07

Ouais mais je vous rapelle que ca permet d'illustrer l'utilisation des APIs

Commentaire de greg13 le 21/05/2003 21:54:46

Ouais mais je vous rapelle que ca permet d'illustrer l'utilisation des APIs

Commentaire de Warny le 22/05/2003 10:36:44

Pour les agnostiques de ce genre de méthode.
Quand vous bidouillez un peu le vb, vous pouvez enlever les références au dll du vb6 et du vb5 (c'est plus facile en vb 5 il suffit de décocher les dll en début de projet, en vb6 il faut carrement aller modifier le fichier vbp avec votre notepad favori)
Mais là, malheur à vous, vous ne disposez plus d'aucune commande sympa (dont le msgbox). D'où la nécessité de le récuperer dans les api.
A ceux qui me demandent : a quoi ça sert de supprimer ces réferences. Je répondrais simplement : A faire des exe et des composants ocx de moins d'1 ko.

Commentaire de yoman64 le 22/05/2003 18:08:44

Je trouve pas sa  tres utile...Qu'est-ce que sa fait de plus que msgbox?

Commentaire de greg13 le 22/05/2003 18:13:43

Yoman, tu peux surtout tenir compte du commentaire de Warny

Commentaire de Alain Proviste le 22/05/2003 19:27:17 administrateur CS

c'est pas utile bande de cake, mais c'est interessant

Commentaire de Drgn13 le 29/06/2003 19:29:13

je viens de voir cette source et je me suis rappelé que j'avait fait quelque chose du genre en regardant la visionneuse d'api :

'il faut metre ça dans un module:
Public Declare Function MessageBeep Lib "user32" (ByVal wType As Long) As Long

Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Public Function MyMsgBox(Prompt, ButtonsAndIcon As VbMsgBoxStyle, Title, Optional Sound As MySounds)
MessageBeep Sound
MessageBox hwnd, Prompt, Title, ButtonsAndIcon
End Function

'et dans la pocédure :
MyMsgBox "Texte", vbCritical, "Texte", vbExclamation

Cela permet par exemple de mettre un icone critical avec un bruit de Exclamation.J'ai WindowsXp et je ne sais plus si les bruit sont différents les uns des autres dans les autres Windows.
Comme dit Alain Proviste c'est pas tres utile...

Commentaire de vincentescalade le 29/08/2003 13:53:53

Salut a tous jsuis débutant et je voudrais savoir qu'est ce que et  à quoi servent les constantes ????

Commentaire de luko007 le 04/02/2004 13:41:22

Drgn13 a une idee judicieuse car ainsi on peut recreer une fonction qui s'utilise de manière analogue au msgbox de VB.
J'irais meme plus loin car l'API MessageBoxIndirect permet de reproduire quasi-complètement le comportement  de msgbox.
==> Voici la fonction que j'ai faite avec :  
NB: j'ai pas tout testé mais ca doit marcher en gros (à part qq trucs exotiques). On pourrait aller plus loin encore en exploitant les autres membres de MSGBOXPARAMS (props etendues).

Public Function MsgBoxEx(Prompt, Optional Buttons As VbMsgBoxStyle = vbOKOnly, Optional Title, Optional HelpFile, Optional Context, Optional hWnd, Optional BeepType As Integer) As VbMsgBoxResult

Dim tAttr As MSGBOXPARAMS

If BeepType = -1 Then
    MessageBeep Buttons
ElseIf BeepType Then
    MessageBeep BeepType
End If

'If  IsMissing(hWnd) Then hWnd=Me.hwnd

With tAttr
    .cbSize = Len(tAttr)
    .hwndOwner = CLng(hWnd) ' ou Me.hwnd
    '------------------------- prop classiques
    .lpszCaption = Title
    .lpszText = Prompt
    If Not IsMissing(Context) Then .dwContextHelpId = CLng(Context)
    .dwStyle = Buttons
     '------------------------- prop étendues
    .dwLanguageId = (&HC * 1024) Or &H1 '= Fr  (marche po ?)
    '.lpszIcon = 101 ' id  d'une ressource (Icone)
    '.hInstance = App.hInstance
    .lpfnMsgBoxCallback = 0 ' Adresse d'une fonction
    'HelpFile ? à creuser
End With

MsgBoxEx = MessageBoxIndirect(tAttr)   ' ou gmpMsgBox =MessageBox(hWnd, Prompt, Title, ButtonsAndIcon)

End Function

pas besoin d'utiliser les constantes d'API du genre MB_ICONEXCLAMATION, MB_OKCANCEL..., ... car les constantes de VbMsgBoxStyle sont visiblement les même.

L'argument beep permet soit d'associer le beep qui va avec les icones/boutons (critical+yes/cancel }=> son du genre "t'a comme un ptit pb") ou d'y mettre directement le son qu'on veut. (vbInformation, ...)


Ca paraitr pas super-utile à 1ere vue, mais ca permet :
- de standardiser les msgbox ds tout un logiciel
- de resoudre les pb avec Excel notamment : les messagebox de Excel ne peuvent se liberer du logiciel et on doit souvent cliquer sur excel pour les afficher ensuite (excel clignote ds la barre des taches)
- avec hWnd, e lancer un msgbox à l'intérieur d'une application exterieure (magik!). Avec vbApplicationModal c'est radical.


' -------- DECLARATIONS ----------------------------------
Type MSGBOXPARAMS
    cbSize As Long
    hwndOwner As Long
    hInstance As Long
    lpszText As String
    lpszCaption As String
    dwStyle As Long
    lpszIcon As String
    dwContextHelpId As Long
    lpfnMsgBoxCallback As Long
    dwLanguageId As Long
End Type

Declare Function MessageBoxIndirect Lib "user32" Alias "MessageBoxIndirectA" (lpMsgBoxParams As MSGBOXPARAMS) As Long
Public Declare Function MessageBeep Lib "user32" (ByVal wType As Long) As Long



'grossen infos :  http://www.vbapihelpline.de/ref/funca.php4?Func=MessageBoxIndirect&Letter=m     (gut deutsch site -ich verstehe nix!-)
'http://www.mentalis.org/apilist/MessageBoxIndirect.shtml                                             (pas du chinois mais incomplet)

Commentaire de Philippe734 le 09/09/2004 17:18:30

ce qui m'interesse, c'est de mettre une form en focus constant, au premier plan. qd une msbox s'ouvre, on ne peut pas cliquer sur une autre fenetre du meme prog, et ca fait beep. et c'est ce que je cherche à faire pour une form, bloquer le focus sur elle, et faire beep qd l'utilisateur clique sur une autre fenetre en arriere plan (du meme prog).

si vous avez pas compris, faite apparaitre la boite de dialogue a propos de votre navigateur internet, et essayé de cliquer ailleur ds la fenetre mère, vous ne pourrez pas et ca fera beep. la boite à propos n'est pas une message box et à le meme comportement et c'est ce que je cherche à faire.

comment faire ?

Commentaire de Warny le 09/09/2004 17:32:17

=> Philippe734

dim window as form
set window = new form1

window.show true 'fenêtre modale

il faut cacher la fenetre modale pour continuer à utiliser le reste du programme

Commentaire de kitkit le 22/06/2005 00:31:33

Je vois que ca lair pationnant mais moi je cherche quelque chose pour enregistrer mes conversations msn jai trouver quelque chose mais cest tres facile cest deja sur msn en tout cas si vous trouver quelque chose de mieux un programme ou quelque chose du genre qui peu pas ce voir que par moi allez viens me dire comment stp
bye bye
merci beaucoup
kitkit
jasoso_14@hotmail.com

Commentaire de michel67650 le 27/08/2011 17:48:58

Bonjour,
J'aimerai modifier le contenu d'un msgbox suivant la langue choisie.
Dans le projet executable, le message est ----> MsgBox "Pas de base de données", vbCritical, "Francais"
Si la langue est en Anglais, j'aimerai avoir le message suivant ---> MsgBox "No database", vbCritical, "French"
et tout ceci en passant par un fichier.
Les objects dans le mode Controls sont déjà modifier suivant la langue choisie.
Merci d'avance à Vous
Michel

Email : johanmichel_147@hotmail.fr

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales