[C API Win32] dialogox et double

Bonjour

J'essaie de récupérer un double à partir d'une boite de dialogue. Pour récupérer un entier, j'ai pas de souci. Mais récupérer un double, j'avoue que je sèche.
Si qqn à la solution...

Merci

5 réponses

  1. salut

    merci pour tes conseils
    je me disais bien que il y avait qui clochait au niveau des pointeurs
    le tuto sur les api je connais
    mais je ne vois quand meme pas comment récupérer un double à partir de la boite de dialogue, je veux l'utiliser ensuite pour des calculs

    tophe
    0
    1. dans la procédure de fenêtre:
      
      double *coef;
      coef = (double*)malloc(sizeof(double));
      char *string3;
      string3 = (char*)malloc(256*sizeof(char));
      
      *string3 = DialogBoxParam(hinst, "DIALOG4", hEdit, (DLGPROC)Dialog4Proc, (LPARAM)hEdit);
      coef = atof(string3);
      free(string3);
      
      Vu que je suis débutant, je comprends pas trop ce qu'il se passe.


      quoi ??? oula !!!! Et tu ne comprends pas trop ce que tu fais je pense ... ;-)

      Bon y a du boulot.
      Avant de te lancer tête baissée dans la programmation un peu de lecture serait nécessaire :

      pour API WIndows : https://chgi.developpez.com/windows/

      Et surtout essai de prendre un bouquin sur le C, parce que la faut tout reprendre à la base ...
      Rien que pour la déclaration de coef, tu n'as pas besoin de le déclarer en pointeur et d'utiliser malloc !
      dans la procédure de fenêtre:
      
      double coef;
      char *string3;
      string3 = (char*)malloc(256*sizeof(char));
      
      /* .... remplissage de string3 */
      
      coef = atof(string3);
      free(string3);
      


      Ca ca marche très bien !

      De plus si tu fais :
      *string3 = ....;
      


      Tu ne vas remplir que le premier caractère de ta chaine de caracteres string3, car *string3 est equivalent à string3[0] !!!

      Et enfin DialogBoxParam ne s'utilise pas comme ca !
      Va faire un tour sur le lien que je t'ai donné et en particulier :
      https://chgi.developpez.com/windows/dlgcom/

      Bon courage...
      0
      1. salut

        J'ai essayé avec strtod et atof et j'ai toujours le même problème : seul le premier caractère est pris en compte.
        Voilà ce que je fais:

        dans la procédure de dialogue:

        case WM_COMMAND:
        {
        if (LOWORD(wParam) == IDOK )
        {

        char *string3;
        string3 = (char*)malloc(256*sizeof(char));

        GetDlgItemText(hDlg, IDE_EDIT3, string3, 256);
        EndDialog(hDlg, *string3);
        }
        return TRUE;
        }

        dans la procédure de fenêtre:

        double *coef;
        coef = (double*)malloc(sizeof(double));
        char *string3;
        string3 = (char*)malloc(256*sizeof(char));

        *string3 = DialogBoxParam(hinst, "DIALOG4", hEdit, (DLGPROC)Dialog4Proc, (LPARAM)hEdit);
        coef = atof(string3);
        free(string3);

        Vu que je suis débutant, je comprends pas trop ce qu'il se passe.
        0
        1. C'est peut etre que personne ne comprends ce que tu veux faire ...
          Essaye avec la fonction strtod

          http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strtod.3.html
          0
          1. Il n'y a personne pour voler à mon secours?
            0