IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Visual C++ messagebox dword


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut Visual C++ messagebox dword
    Bonsoir,

    Je tente de me remettre au C++ avec Microsoft Visual Studio. Première essai, première galère. Pas de solution trouvée pour ce problème a priori hyper simple.

    Une fonction me retourne un code d'erreur de type DWORD que je veux afficher avec MessageBox::Show().

    Je dois donc effectuer une conversion de type. Aucune des innombrables solutions proposées, pour la plupart trop anciennes et qui fonctionneraient en mode console, ne fonctionnent avec l'environnement de développement mis en œuvre.

    Voici une des solutions que j'ai testées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DWORD   dwLastError = ::GetLastError();
    WCHAR szTest[10];
    swprintf_s(szTest, 10, L"%d", dwLastError);
    MessageBox::Show(szTest);
    Résultat :

    Erreur C2665 'System::Windows::Forms::MessageBox::Show'*: aucune des 21 surcharges n'a pu convertir tous les types d'arguments...
    Pas très glamour comme question.

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 756
    Par défaut
    Je n'ai pas vraiment le temps de trouver la vraie réponse
    c'est ultra-trival et le compilateur te parle en français

    Avec un petit effort tu aurais compris que le compilateur ne voit pas ton tableau C, mais prend que le premier caractère de type wchar_t

    Édit: En fait je me suis trompé : il voit un pointeur passé parce que DWORD c'est un 32 bits

    Maintenant il faut trouver le bon passage de paramètres parmi les 21 (<- 21 c'est quand même quelque chose, il faut en vouloir pour ne pas en trouver 1), trouve la documentation de cette méthode Show (apparemment un String sans plus de précision un std::string??? un MFC String???) ou fait un clic droit -> "goto to definition"

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 564
    Par défaut
    Bonjour.

    est une méthode de la classe MessageBox du framework .Net. Les types des arguments sont différents des MFC ou de win32.

    Quel projet avez-vous créer avec visual c++ (win32, MFC ou CLR) ?

    Pour du win32 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox(_T("Hello Word"), _T("Titre"),  MB_OK);
    Pour du MFC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AfxMessageBox(_T("Hello Word"), MB_OK);

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 461
    Par défaut
    L'équivalent .NET de DWORD, c'est System.UInt32.
    Copiez le DWORD dans un System.UInt32, puis utilisez la méthode ToString de System.UInt32 pour avoir une chaine de caractère correspondant.
    Les tableaux à la C, c'est caca en C++, et encore plus en C++/CLI.

    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    https://msdn.microsoft.com/fr-fr/lib...or=-2147217396

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut Merci pour cette solution.
    Bonjour et merci pour cette solution.

    J'ai commencé à programmer en 1978 (6502) puis de façon professionnelle en 1982. C'est difficile de s'y remettre quand on n'a jamais trop mis les pieds dans la programmation objet. Je trouve votre réponse appropriée et, surtout, encourageante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/06/2009, 11h45
  2. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  3. Choisir Visual c++ ou Borland C++Builder ?
    Par DevEric dans le forum Choisir un environnement de développement
    Réponses: 31
    Dernier message: 14/06/2007, 23h48
  4. Problème avec Visual Studio 2005 pour les MessageBox
    Par saphir54321 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/04/2007, 23h27
  5. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo