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

Windows Discussion :

probème avec boite de dialogue


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Points : 35
    Points
    35
    Par défaut probème avec boite de dialogue
    bonjour,

    je commencer à améliorer mon programme qui chercher des fenêtres, puis les renommes ... (je vais pas expliquer mon projet)

    J'utilise les boites de dialogue pour récupérer le nom de la fenêtre puis l'envoyer à une fonction dans lequel on vérifie si elle existe ou pas.

    mais j'ai un léger souci, je crois que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DialogBoxParam(hinst, "DIALOG2" , hwnd,(DLGPROC)Dialog2Proc, (LPARAM)hwnd);
    a un problème avec la fonction, le compilo m'indique rien mais je vois pas.

    voilà je met où il y aurais surement un problème:

    main.c
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    CHAR st[256]="";
    
    HINSTANCE hinst;
    LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
    BOOL APIENTRY Dialog2Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
    
    ----------------------------
    
    LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        HWND hEdit;
    HWND hWindow = 0;
    
    char chercher[30]="";
    
        switch (uMsg)
        {
            case WM_CREATE:
    
            return 0;
    
    
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                case IDM_YENI:
    
                DialogBoxParam(hinst, "DIALOG2" , hwnd,(DLGPROC)Dialog2Proc, (LPARAM)hwnd);
                sprintf(chercher, "%s ",st);
                MessageBox(hwnd,chercher,"Résultat", MB_OK);
                break;
    
    
                case IDM_QUIT:
                SendMessage(hwnd, WM_DESTROY, 0, 0);
                break;
    
                }
    
                return 0;
    
            case WM_SIZE:
                MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                return 0;
    
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
    
            default:
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
    }
    
    BOOL APIENTRY Dialog2Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        static HWND hParent;
         HWND hEdit;
        HWND hwnd;
        HWND hWindow = 0;
        switch (uMsg)
        {
          case WM_INITDIALOG:
              {
              /*  CHAR st[256]=""; */
                hParent = (HWND)lParam;
                SetDlgItemText(hDlg, IDE_EDIT1, st);
                MessageBox(hwnd,"tab","Résultat", MB_OK);
              }
             return TRUE;
    
          case WM_COMMAND:
             if (LOWORD(wParam) == IDOK )
                    {
                       CHAR st[256];
                       char tab[30]="" ;
                       char i[30]="" ;
    
                       SetDlgItemText(hDlg, IDE_EDIT1, st);
                       hWindow = FindWindow(NULL,st);
                       if (!hWindow)
                       {
    
                       sprintf(tab, "%s n a pas été trouver",i);
                       MessageBox(hwnd,tab,"Résultat", MB_OK);
                       }
    
                       else
                       {
                       sprintf(tab, "%s a été trouver",i);
    				   MessageBox(hwnd,tab,"Résultat", MB_OK);
    
    				   }
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
             if (LOWORD(wParam) == IDCANCEL )
                    {
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
          default:
             return FALSE;
        }
    }
    ressources.rc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DIALOG2 DIALOG
        60, 60, 182, 70
              STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
                                                             CAPTION "Chercher"
    BEGIN
        DEFPUSHBUTTON "OK", IDOK, 36, 42, 42, 12
        PUSHBUTTON "Cancel", IDCANCEL, 96, 42, 42, 12
        EDITTEXT IDE_EDIT1, 88, 15, 74, 12
        LTEXT "Titre", -1, 24, 18, 60, 10
    END
    Constantes.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #define IDM_QUIT  1
    #define IDM_NEW   2
    #define IDM_ABOUT 3
    #define IDM_YENI 4
    
    #define IDE_EDIT1 101
    ne faites pas attention au nom, et détails j'ai modifier, et garde principalement où il peut y avoir une erreur.


    bon ba j'obtiens qu'un seul msgbox, et dans ça il n'y a comme titre Résultat, puis comme texte rien.

    je pense qu'il y a un problème dans la fonction.
    mais un peu d'aide ne serais guère refus..



    merci

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Dans Dialog2Proc, hWnd n'est pas initialisé quand tu appelles ta MessageBox().

    Et aussi: Supprime le cast en (DLGPROC) : Dès qu'on caste un pointeur de fonction, c'est mauvais signe.

    Si le compilo gueule, c'est que le type de retour doit désormais être INT_PTR et non plus BOOL.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Points : 35
    Points
    35
    Par défaut
    j'ai essayer de faire ce que tu as dis mais sans succès, le compilo n'y peut rien :d


    voilà je redonne le bout de code source, pour que tu vérifie si c'est bien ça qu'il failler faire.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    char st[256]="";
    
    HINSTANCE hinst;
    LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
    INT_PTR APIENTRY Dialog2Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
    ------------------------------------------------------
    LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        HWND hEdit;
    HWND hWindow = 0;
    
    char chercher[30]="";
    
        switch (uMsg)
        {
            case WM_CREATE:
    
            return 0;
    
    
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
               case IDM_YENI:
    
                DialogBoxParam(hinst, "DIALOG2",(HWND)hwnd,Dialog2Proc, hwnd);
                sprintf(chercher, "%s ",st);
                MessageBox(hwnd,chercher,"Résultat", MB_OK);
                break;
    
    
                case IDM_QUIT:
                SendMessage(hwnd, WM_DESTROY, 0, 0);
                break;
    
                }
    
                return 0;
    
            case WM_SIZE:
                MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                return 0;
    
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
    
            default:
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
    }
    
    INT_PTR APIENTRY Dialog2Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        static HWND hParent;
         HWND hEdit;
        HWND hwnd;
        HWND hWindow = 0;
        switch (uMsg)
        {
          case WM_INITDIALOG:
              {
              /*  CHAR st[256]=""; */
                HWND hwnd;
                hParent = (HWND)lParam;
                SetDlgItemText(hDlg, IDE_EDIT1, st);
                MessageBox(hwnd,"tab","Résultat", MB_OK);
              }
             return TRUE;
    
          case WM_COMMAND:
             if (LOWORD(wParam) == IDOK )
                    {
                       char st[256];
                       char tab[30]="" ;
                       char i[30]="" ;
                       HWND hnwd;
    
                       SetDlgItemText(hDlg, IDE_EDIT1, st);
                       hWindow = FindWindow(NULL,st);
                       if (!hWindow)
                       {
    
                       sprintf(tab, "%s n a pas été trouver",i);
                       MessageBox(hwnd,tab,"Résultat", MB_OK);
                       }
    
                       else
                       {
                       sprintf(tab, "%s a été trouver",i);
    				   MessageBox(hwnd,tab,"Résultat", MB_OK);
    
    				   }
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
             if (LOWORD(wParam) == IDCANCEL )
                    {
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
          default:
             return FALSE;
        }
    }
    voilà j'ai apporter quelques modifications.
    j'ai donner juste un bout de main.c, parce que les autres fichiers je ne l'ai pas modifier.


    donc voilà dis moi si c'est bien cela qui failler faire.


    merci

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {
              /*  CHAR st[256]=""; */
                HWND hwnd;
                hParent = (HWND)lParam;
                SetDlgItemText(hDlg, IDE_EDIT1, st);
                MessageBox(hwnd,"tab","Résultat", MB_OK);
              }
    Quelle partie de "hwnd n'est pas initialisé" ne comprends-tu pas ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Points : 35
    Points
    35
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {
              /*  CHAR st[256]=""; */
                HWND hwnd;
                HWND hParent;
                hParent = (HWND)lParam;
                SetDlgItemText(hDlg, IDE_EDIT1, st);
                MessageBox(hwnd,"tab","Résultat", MB_OK);
              }
    j'ai mis HWND hParent; mais ça change rien.

    non je vois pas, pourtant j'ai relus le cours plusieurs fois :s

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Quelle partie du mot "initialiser" ne comprends-tu pas ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Points : 35
    Points
    35
    Par défaut
    ah oui, c'est bon j'ai compris regarde :d

    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
    37
    case WM_INITDIALOG:
              {
               CHAR st[256]="";
                HWND hwnd;
                HWND hParent;
                hParent = (HWND)lParam;
                hwnd = (HWND)lParam;
                SetDlgItemText(hDlg, IDE_EDIT1, st);
    
              }
             return TRUE;
    
          case WM_COMMAND:
             if (LOWORD(wParam) == IDOK )
                    {
                       char st[256];
                       char tab[256]="" ;
    
                       HWND hnwd;
                        hwnd = (HWND)lParam;
                       SetDlgItemText(hDlg, IDE_EDIT1, st);
                       hWindow = FindWindow(NULL,st);
                       if (!hWindow)
                       {
    
                       sprintf(tab, "%s n'a pas été trouver",st);
                       MessageBox(hwnd,tab,"Résultat", MB_OK);
                       }
    
                       else
                       {
                       sprintf(tab, "%s a été trouver",st);
    				   MessageBox(hwnd,tab,"Résultat", MB_OK);
    
    				   }
                       EndDialog(hDlg,0);
                       return TRUE;
    mais y a un problème, pour toutes les fenêtres, il me met:

    "des signes bizares genre carré, lettres, n'importe quoi, c'est pas ce que j'ai écrit" n'a pas été trouver.

    Il y a surement une erreur dans la communication entre l'user et la boite de dialogue, qui fait qu'il enregistre mal les données, du n'importe quoi, genre "5¤l" mais c'est pas ce que j'écris.

    J'en suis un peu sure, parce que si j'écris directement le nom de la fenêtre dans le code source puis compile sa le trouve.


    donc comment faire pour améliorer la communication


    merci

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Points : 35
    Points
    35
    Par défaut
    ah c'est bon j'ai réussi,

    il me manquer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItemText(hDlg, IDE_EDIT1, st, 256);

    voilà merci bcp pour ton aide


    cordialement

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

Discussions similaires

  1. Importation avec boite de dialogue
    Par dams95190 dans le forum VBA Access
    Réponses: 16
    Dernier message: 07/09/2007, 12h45
  2. Problème avec boite de dialogue pour fermer JFrame
    Par adn013 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/09/2007, 16h37
  3. Pb avec boite de dialogue
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 26/12/2006, 16h15
  4. [VBA-E] Petit souci avec boites de dialogues
    Par SybVicious dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/09/2006, 22h18
  5. [MFC] DLL avec boite de dialogue
    Par ricky78 dans le forum MFC
    Réponses: 2
    Dernier message: 17/06/2005, 13h06

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