[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

  • Votes
  • Date
  • Date décroissante
  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
    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.
      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...
        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