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 :

Probleme avec une MessageBox dans une DLL


Sujet :

C++

  1. #1
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut Probleme avec une MessageBox dans une DLL
    Salut,

    J'ai un petit souci avec dll que j'ai crée et qui est appelé par un programme externe. Le traitement de ma dll est bien effectué, et à la fin j'affiche une MessageBox pour avertir l'utilisateur.

    Mon souci est que cette MessageBox n'apparait pas au premier plan. Voici ce que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MessageBox(0, "bla bla", "caption", MB_TOPMOST);
     
    ou
     
    MessageBox(GetFocus(), "bla bla", "caption", MB_OK);
    Quelqu'un sait comment la faire apparaitre en premier plan ?

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Par défaut
    avec ceci ,ca devrait marcher.....

    MessageBox (NULL, "blabla", "blabla", MB_ICONINFORMATION);

  3. #3
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    Salut bouzaidi,

    Merci pour ta réponse, j'ai essayé mais la messageBox est toujours derrière la fenetre du programme qui appelle la DLL.
    Y a t'il autre chose ?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Par défaut
    c un peu izzard paceque chez moi ca marhce!!est ce que la fenetre apparait dans ton ecran ou pas?sinn peut tu montrer le bout de code que tu utilise....

  5. #5
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    la fenetre apparait bien dans mon écran et dans la barre des tâches mais elle est derrière la fenetre du programme appelant.

    Voici mon le code de ma dll:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include <windows.h>
    #include <tchar.h>
    #include <vcl.h>
    #include <stdlib.h>
    #include <QDialogs.hpp>
     
    extern "C" __declspec(dllexport) __stdcall long verif(HWND hwnd, LPSTR szSrcDir, LPSTR szSupport, LPSTR szSerialNum, LPSTR szDbase);
     
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
            return 1;
    }
    //---------------------------------------------------------------------------
    long __stdcall verif(HWND hwnd, LPSTR szSrcDir, LPSTR szSupport, LPSTR szSerialNum, LPSTR szDbase)
    {
    AnsiString pass, champ1, champ2, champ3;
     
        char string[12];
        strcpy(string, szSerialNum);
        pass = AnsiString(string);
     
        champ1 = pass.SubString(1, 3);
        champ2 = pass.SubString(5, 3);
        champ3 = pass.SubString(9, 3);
     
    if(champ2==machin && champ3==machin){
            MessageBox(NULL, "bla bla", "bla", MB_ICONINFORMATION);
            return 1;
        }else{
            MessageBox(NULL, "bla bla", "bla", MB_ICONINFORMATION);
            return 0;
        }
    }
    //---------------------------------------------------------------------------

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Par défaut
    je crois que ta fenetre principale n'est pas modale,qlqpart dans ta configuration,tu dois changer l'option "System Modal" en "true" pour que tu puisse voir les windows s'afficher...

  7. #7
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    Impossible de trouver cette option...

    J'ai refait la DLL en cochant la case "utiliser la vcl" au départ mais le résultat est le même.

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Le programme appelant est-il un programme fonctionnant en plein écran ?
    Si oui, tu peux quiiter le mode plein écran( ou simplement minimiser la fenêtre) avant d'afficher la MessageBox.

  9. #9
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    A tu essaillé de passé le handle de la fenetre parent a ta DLL ? pour apres l'utiliser dans le premier parametre de la fonction MessageBox.

  10. #10
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    Alors le programme appelant n'est pas en plein écran. Je n'ai pas essayé avec le handle de la fenetre, non plus.
    J'ai oublié de vous préciser que je ne peux pas éditer le programme appelant, je n'ai que l'exe. Donc je pense que je ne peut pas récupérer le Handle de la fenetre. Par contre je peux avoir son nom.
    Faut t'il essayer de minimiser la fenetre du programme parent pour afficher ma messageBox et la maximiser après ?

  11. #11
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Essaye les autres flags avec MessageBox en particulier:
    MB_SETFOREGROUND
    MB_TASKMODAL (?)

  13. #13
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    Super, merci Albenejean.

    Ca marche donc en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox(NULL, "bla bla", "titre", MB_SETFOREGROUND);
    Juste pour info, ou as tu trouvé la liste des flags de MessageBox. J'ai eu beau chercher dans la doc de C++ Builder, je n'ai absolument rien trouvé.

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par marcootz Voir le message
    Juste pour info, ou as tu trouvé la liste des flags de MessageBox. J'ai eu beau chercher dans la doc de C++ Builder, je n'ai absolument rien trouvé.
    C'est une fonction Windows, c'est dans la MSDN qu'il faut chercher.

  15. #15
    Membre confirmé Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Par défaut
    Ok c'est noté. Merci !

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

Discussions similaires

  1. [MySQL] probleme avec le retour d'une selection dans une base de donnees
    Par sovo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/02/2010, 18h00
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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