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 / Exemple :
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.htm
27 août 2011 à 17:48
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
22 juin 2005 à 00:31
bye bye
merci beaucoup
kitkit
jasoso_14@hotmail.com
9 sept. 2004 à 17:32
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
9 sept. 2004 à 17:18
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 ?
4 févr. 2004 à 13:41
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 gmpMsgBoxMessageBox(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)
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.