[C API Win32] dialogox et double

tophe03 Messages postés 328 Statut Membre -  
tophe03 Messages postés 328 Statut Membre -
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. tophe03 Messages postés 328 Statut Membre 5
     
    Il n'y a personne pour voler à mon secours?
    0
  2. Radek Messages postés 22 Date d'inscription   Statut Membre 6
     
    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
  3. tophe03 Messages postés 328 Statut Membre 5
     
    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
  4. Radek Messages postés 22 Date d'inscription   Statut Membre 6
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tophe03 Messages postés 328 Statut Membre 5
     
    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