1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Programa em C++ que ñ faz o k devia

Discussão em 'Programação' iniciada por Master_piece, 28 de Março de 2008. (Respostas: 14; Visualizações: 1375)

  1. Master_piece

    Master_piece Power Member

    Pessoal eu tenho andado a "estudar" C++ e estava aqui a tentar fazer um programa (com a ajuda de uns toturiais) com a formula resolvente (como treino), mas não acontece o que devia acontecer. As vezes não calcula, não respeita o if, etc.

    Código:
    #include <windows.h>
    #include <stdlib.h>
    #include <math.h>
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Formula Resolvente",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               350,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    #define ID_BUTTONcalcular 1000
    HINSTANCE g_inst;
    HWND EditNum1,EditNum2,EditNum3,EditTotal1,EditTotal2,EditTotal3,EditTotal4,ButtonCalcular;
    void DesenharObjectos(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         EditNum1 = CreateWindowEx (
                  WS_EX_CLIENTEDGE,
                  "EDIT",
                  " ",
                  WS_VISIBLE|WS_CHILD|WS_BORDER|ES_RIGHT ,
                  50,50,50,20,
                  hwnd,
                  NULL,
                  g_inst,
                  NULL
                  );
                  
         EditNum2 = CreateWindowEx (
                  WS_EX_CLIENTEDGE,
                  "EDIT",
                  " ",
                  WS_VISIBLE|WS_CHILD|WS_BORDER|ES_RIGHT,
                  50,100,50,20,
                  hwnd,
                  NULL,
                  g_inst,
                  NULL
                  );
                  
          EditNum3 = CreateWindowEx (
                  WS_EX_CLIENTEDGE,
                  "EDIT",
                  " ",
                  WS_VISIBLE|WS_CHILD|WS_BORDER|ES_RIGHT,
                  50,150,50,20,
                  hwnd,
                  NULL,
                  g_inst,
                  NULL
                  );
                  
          EditTotal1 = CreateWindowEx (
                  WS_EX_CLIENTEDGE,
                  "STATIC",
                  " ",
                  WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  50,250,100,20,
                  hwnd,
                  NULL,
                  g_inst,
                  NULL
                  );
                  
          EditTotal2 = CreateWindowEx (
                  WS_EX_CLIENTEDGE,
                  "STATIC",
                  " ",
                  WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  50,300,100,20,
                  hwnd,
                  NULL,
                  g_inst,
                  NULL
                  );
                  
          EditTotal3 = CreateWindowEx (
                  WS_EX_CLIENTEDGE,
                  "STATIC",
                  "X1=",
                  WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  8,250,40,20,
                  hwnd,
                  NULL,
                  g_inst,
                  NULL
                  );
                  
         EditTotal4 = CreateWindowEx (
                  WS_EX_CLIENTEDGE,
                  "STATIC",
                  "X2=",
                  WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  8,300,40,20,
                  hwnd,
                  NULL,
                  g_inst,
                  NULL
                  );                                            
                  
         ButtonCalcular = CreateWindowEx (
                  0,
                  "BUTTON",
                  "Calcular",
                  WS_VISIBLE|WS_CHILD,
                  150,70,100,100,
                  hwnd,
                  (HMENU)ID_BUTTONcalcular,
                  g_inst,
                  NULL
                  );
                  
        SendMessage((HWND) EditNum1,
            (UINT) WM_SETFONT,
            (WPARAM) GetStockObject(DEFAULT_GUI_FONT),
            (LPARAM) lParam
            );
            
        SendMessage((HWND) EditNum2,
            (UINT) WM_SETFONT,
            (WPARAM) GetStockObject(DEFAULT_GUI_FONT),
            (LPARAM) lParam
            );                                                         
        SendMessage((HWND) EditNum3,
            (UINT) WM_SETFONT,
            (WPARAM) GetStockObject(DEFAULT_GUI_FONT),
            (LPARAM) lParam
            );
        SendMessage((HWND) EditTotal1,
            (UINT) WM_SETFONT,
            (WPARAM) GetStockObject(DEFAULT_GUI_FONT),
            (LPARAM) lParam
            );
        SendMessage((HWND) EditTotal2,
            (UINT) WM_SETFONT,
            (WPARAM) GetStockObject(DEFAULT_GUI_FONT),
            (LPARAM) lParam
            );
        SendMessage((HWND) ButtonCalcular,
            (UINT) WM_SETFONT,
            (WPARAM) GetStockObject(DEFAULT_GUI_FONT),
            (LPARAM) lParam
            );
    }        
      
    char s_valor1[20] = "0", s_valor2[20] = "0", s_valor3[20] = "0", s_valortotal1[20] = "0", s_valortotal2[20] ="0";
    double valor1, valor2, valor3, D, valortotal1, valortotal2;                                                                                           
    /*  This function is called by the Windows function DispatchMessage()  */
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_CREATE:
                 DesenharObjectos(hwnd,message,wParam,lParam);
            break;
            case WM_COMMAND:
                 if ((HIWORD(wParam) == BN_CLICKED))
                 {
                                     
                       SendMessage(
                           (HWND) EditNum1,
                           (UINT) EM_GETLINE,
                           (WPARAM) 1,
                           (LPARAM) &s_valor1
                           );
                           
                       SendMessage(
                           (HWND) EditNum2,
                           (UINT) EM_GETLINE,
                           (WPARAM) 1,
                           (LPARAM) &s_valor2
                           );
                           
                        SendMessage(
                           (HWND) EditNum3,
                           (UINT) EM_GETLINE,
                           (WPARAM) 1,
                           (LPARAM) &s_valor3
                           );
                           
                        valor1 = atoi(s_valor1);
                        valor2 = atoi(s_valor2);
                        valor3 = atoi(s_valor3);
                        
                        switch (LOWORD(wParam))
                        {
                            case ID_BUTTONcalcular:
                                 D = (valor2*valor2)+(-4*valor1*valor3);
                                 if (D<0)
                                 
                                         SendMessage(
                                                     (HWND) EditTotal1,
                                                     (UINT) WM_SETTEXT,
                                                     (WPARAM) 0,
                                                     (LPARAM) "Impossivel"
                                                     );
                                 else                                                   
                                 
                                 valortotal1 = ((-valor2)+sqrt(D))/(2*valor1);
                                 valortotal2 = ((-valor2)-sqrt(D))/(2*valor1);
                        }
                        
                        
                        itoa (valortotal1,s_valortotal1,10);
                        itoa (valortotal2,s_valortotal2,10);
                        
                        SendMessage(
                                 (HWND) EditTotal1,
                                 (UINT) WM_SETTEXT,
                                 (WPARAM) 0,
                                 (LPARAM) &s_valortotal1
                                 );  
                        SendMessage(
                                 (HWND) EditTotal2,
                                 (UINT) WM_SETTEXT,
                                 (WPARAM) 0,
                                 (LPARAM) &s_valortotal2
                                 );
                                 
                        }
                        break;                                                             
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
        return 0;
    }
    
    Como disse sou mt novo nisto e é provavel que tenha ai uns "belos" erros.

    Cumps.
    Master
     
    Última edição pelo moderador: 30 de Março de 2008
  2. hYpe

    hYpe [email protected] Member

    Isto tem ambiente gráfico?

    Coloca só a parte de fazer os cálculos, porque não tenho nada aqui comigo q indente o código, e tal como está é quase ilegível.
    BTW, tenta usar a tag PHP em vez de QUOTE.
     
  3. Master_piece

    Master_piece Power Member

    Sim tem ambiente gráfico, mas vou deixar aqui a parte principal onde se emquadram os cálculos (os cálculos ficam a negrito).



    Código:
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch (message) /* handle the messages */
    {
    case WM_CREATE:
    DesenharObjectos(hwnd,message,wParam,lParam);
    break;
    case WM_COMMAND:
    if ((HIWORD(wParam) == BN_CLICKED))
    {
    
    SendMessage(
    (HWND) EditNum1,
    (UINT) EM_GETLINE,
    (WPARAM) 1,
    (LPARAM) &s_valor1
    );
    
    SendMessage(
    (HWND) EditNum2,
    (UINT) EM_GETLINE,
    (WPARAM) 1,
    (LPARAM) &s_valor2
    );
    
    SendMessage(
    (HWND) EditNum3,
    (UINT) EM_GETLINE,
    (WPARAM) 1,
    (LPARAM) &s_valor3
    );
    
    valor1 = atoi(s_valor1);
    valor2 = atoi(s_valor2);
    valor3 = atoi(s_valor3);
    
    switch (LOWORD(wParam))
    {
    case ID_BUTTONcalcular:
    D = (valor2*valor2)+(-4*valor1*valor3);
    if (D<0)
    
    SendMessage(
    (HWND) EditTotal1,
    (UINT) WM_SETTEXT,
    (WPARAM) 0,
    (LPARAM) "Impossivel"
    );
    else 
    
    valortotal1 = ((-valor2)+sqrt(D))/(2*valor1);
    valortotal2 = ((-valor2)-sqrt(D))/(2*valor1);
    }
    
    
    itoa (valortotal1,s_valortotal1,10);
    itoa (valortotal2,s_valortotal2,10);
    
    SendMessage(
    (HWND) EditTotal1,
    (UINT) WM_SETTEXT,
    (WPARAM) 0,
    (LPARAM) &s_valortotal1
    ); 
    SendMessage(
    (HWND) EditTotal2,
    (UINT) WM_SETTEXT,
    (WPARAM) 0,
    (LPARAM) &s_valortotal2
    );
    
    }
    break; 
    case WM_DESTROY:
    PostQuitMessage (0); /* send a WM_QUIT to the message queue */
    break;
    default: /* for messages that we don't deal with */
    return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
    } 
    Aviso que numa tentativa de resolver o problema alterei um pouco a parte dos calculos.
    Um dos problemas é que no if quando o if é falso ele avança para o else, mas quando o if é verdadeiro ele faz o k deve mas continua e faz tambem o que está no comando else.


    Cumps.
    Master

    ___"""___"""___

    Desculpem la mas não consigo alterar a cor em PHP.
     
    Última edição pelo moderador: 30 de Março de 2008
  4. acfryx

    acfryx Power Member

    Porque é que puseste a parte de conversão dos valores em string fora do else? Tenta por esse código dentro do else ou depois de definires o texto de EditTotal1 como "Impossivel" fazes um "return 0;".
     
  5. Master_piece

    Master_piece Power Member


    Pensando bem vejo que tens razão e penso que as send mesage sepois do else tambem devem passar la para dentro.

    Mas o poblema~não se deve a isso, pois continua a não dar.

    Cumps.
    Master
     
  6. acfryx

    acfryx Power Member

    Se passas-te bem o código...

    O erro é... o código a seguir ao else tem que estar entre por { }. Corrigindo isto e fazendo o que eu disse no post anterior acho que tens o problema resolvido.

    NOTA: só não é preciso "rodear" o código por { } quando existe só uma linha de código, que é o que acontece no if (D < 0) mas no else já existem duas linhas de código daí que tenhas que pôr esse código entre { }.

    Se funcionar diz alguma coisa...
     
  7. Master_piece

    Master_piece Power Member

    Um dos erros ja esta corrigido ja aparece o impossivel, mas quando deve ser executado o k esta no else os resultados dão errados.
    Deixo aqui o código actual:
    PHP:
    #include <windows.h>
    #include <stdlib.h>
    #include <math.h>
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWNDUINTWPARAMLPARAM);
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        
    HINSTANCE hPrevInstance,
                        
    LPSTR lpszArgument,
                        
    int nFunsterStil)
    {
        
    HWND hwnd;               /* This is the handle for our window */
        
    MSG messages;            /* Here messages to the application are saved */
        
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
        /* The Window structure */
        
    wincl.hInstance hThisInstance;
        
    wincl.lpszClassName szClassName;
        
    wincl.lpfnWndProc WindowProcedure;      /* This function is called by windows */
        
    wincl.style CS_DBLCLKS;                 /* Catch double-clicks */
        
    wincl.cbSize sizeof (WNDCLASSEX);
        
    /* Use default icon and mouse-pointer */
        
    wincl.hIcon LoadIcon (NULLIDI_APPLICATION);
        
    wincl.hIconSm LoadIcon (NULLIDI_APPLICATION);
        
    wincl.hCursor LoadCursor (NULLIDC_ARROW);
        
    wincl.lpszMenuName NULL;                 /* No menu */
        
    wincl.cbClsExtra 0;                      /* No extra bytes after the window class */
        
    wincl.cbWndExtra 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        
    wincl.hbrBackground = (HBRUSHCOLOR_BACKGROUND;
        
    /* Register the window class, and if it fails quit the program */
        
    if (!RegisterClassEx (&wincl))
            return 
    0;
        
    /* The class is registered, let's create the program*/
        
    hwnd CreateWindowEx (
               
    0,                   /* Extended possibilites for variation */
               
    szClassName,         /* Classname */
               
    "Formula Resolvente",       /* Title Text */
               
    WS_OVERLAPPEDWINDOW/* default window */
               
    CW_USEDEFAULT,       /* Windows decides the position */
               
    CW_USEDEFAULT,       /* where the window ends up on the screen */
               
    350,                 /* The programs width */
               
    375,                 /* and height in pixels */
               
    HWND_DESKTOP,        /* The window is a child-window to desktop */
               
    NULL,                /* No menu */
               
    hThisInstance,       /* Program Instance handler */
               
    NULL                 /* No Window Creation data */
               
    );
        
    /* Make the window visible on the screen */
        
    ShowWindow (hwndnFunsterStil);
        
    /* Run the message loop. It will run until GetMessage() returns 0 */
        
    while (GetMessage (&messagesNULL00))
        {
            
    /* Translate virtual-key messages into character messages */
            
    TranslateMessage(&messages);
            
    /* Send message to WindowProcedure */
            
    DispatchMessage(&messages);
        }
        
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
        
    return messages.wParam;
    }
    #define ID_BUTTONcalcular 1000
    HINSTANCE g_inst;
    HWND EditNum1,EditNum2,EditNum3,EditNum4,EditNum5,EditNum6,EditNum7,EditTotal1,EditTotal2,EditTotal3,EditTotal4,ButtonCalcular;
    void DesenharObjectos(HWND hwndUINT messageWPARAM wParamLPARAM lParam)
    {
         
    EditNum1 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "EDIT",
                  
    " ",
                  
    WS_VISIBLE|WS_CHILD|WS_BORDER|ES_RIGHT ,
                  
    50,50,50,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
         
    EditNum2 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "EDIT",
                  
    " ",
                  
    WS_VISIBLE|WS_CHILD|WS_BORDER|ES_RIGHT,
                  
    50,100,50,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
          
    EditNum3 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "EDIT",
                  
    " ",
                  
    WS_VISIBLE|WS_CHILD|WS_BORDER|ES_RIGHT,
                  
    50,150,50,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
    EditNum4 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    "A=",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    8,50,40,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
    EditNum5 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    "B=",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    8,100,40,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
    EditNum6 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    "C=",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    8,150,40,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
    EditNum7 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    " ",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    50,200,50,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                                
          
    EditTotal1 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    " ",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    50,250,100,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
          
    EditTotal2 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    " ",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    50,300,100,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
          
    EditTotal3 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    "X1=",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    8,250,40,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );
                  
         
    EditTotal4 CreateWindowEx (
                  
    WS_EX_CLIENTEDGE,
                  
    "STATIC",
                  
    "X2=",
                  
    WS_VISIBLE|WS_CHILD|ES_RIGHT,
                  
    8,300,40,20,
                  
    hwnd,
                  
    NULL,
                  
    g_inst,
                  
    NULL
                  
    );                                            
                  
         
    ButtonCalcular CreateWindowEx (
                  
    0,
                  
    "BUTTON",
                  
    "Calcular",
                  
    WS_VISIBLE|WS_CHILD,
                  
    150,70,100,100,
                  
    hwnd,
                  (
    HMENU)ID_BUTTONcalcular,
                  
    g_inst,
                  
    NULL
                  
    );
                  
        
    SendMessage((HWNDEditNum1,
            (
    UINTWM_SETFONT,
            (
    WPARAMGetStockObject(DEFAULT_GUI_FONT),
            (
    LPARAMlParam
            
    );
            
        
    SendMessage((HWNDEditNum2,
            (
    UINTWM_SETFONT,
            (
    WPARAMGetStockObject(DEFAULT_GUI_FONT),
            (
    LPARAMlParam
            
    );                                                         
        
    SendMessage((HWNDEditNum3,
            (
    UINTWM_SETFONT,
            (
    WPARAMGetStockObject(DEFAULT_GUI_FONT),
            (
    LPARAMlParam
            
    );
        
    SendMessage((HWNDEditTotal1,
            (
    UINTWM_SETFONT,
            (
    WPARAMGetStockObject(DEFAULT_GUI_FONT),
            (
    LPARAMlParam
            
    );
        
    SendMessage((HWNDEditTotal2,
            (
    UINTWM_SETFONT,
            (
    WPARAMGetStockObject(DEFAULT_GUI_FONT),
            (
    LPARAMlParam
            
    );
        
    SendMessage((HWNDButtonCalcular,
            (
    UINTWM_SETFONT,
            (
    WPARAMGetStockObject(DEFAULT_GUI_FONT),
            (
    LPARAMlParam
            
    );
    }        
      
    char s_valor1[20] = "0"s_valor2[20] = "0"s_valor3[20] = "0"s_valortotal1[20] = "0"s_valortotal2[20] ="0"s_D[20]="0";
    double valor1valor2valor3Dvalortotal1valortotal2;                                                                                           
    /*  This function is called by the Windows function DispatchMessage()  */
    LRESULT CALLBACK WindowProcedure (HWND hwndUINT messageWPARAM wParamLPARAM lParam)
    {
        switch (
    message)                  /* handle the messages */
        
    {
            case 
    WM_CREATE:
                 
    DesenharObjectos(hwnd,message,wParam,lParam);
            break;
            case 
    WM_COMMAND:
                 if ((
    HIWORD(wParam) == BN_CLICKED))
                 {
                                     
                       
    SendMessage(
                           (
    HWNDEditNum1,
                           (
    UINTEM_GETLINE,
                           (
    WPARAM1,
                           (
    LPARAM) &s_valor1
                           
    );
                           
                       
    SendMessage(
                           (
    HWNDEditNum2,
                           (
    UINTEM_GETLINE,
                           (
    WPARAM1,
                           (
    LPARAM) &s_valor2
                           
    );
                           
                        
    SendMessage(
                           (
    HWNDEditNum3,
                           (
    UINTEM_GETLINE,
                           (
    WPARAM1,
                           (
    LPARAM) &s_valor3
                           
    );
                           
                        
    valor1 atoi(s_valor1);
                        
    valor2 atoi(s_valor2);
                        
    valor3 atoi(s_valor3);
                        
                        switch (
    LOWORD(wParam))
                        {
                            case 
    ID_BUTTONcalcular:
                                 
    = (valor2*valor2)+(-4*valor1*valor3);
                                 
                                 
    itoa (D,s_D,10);
                                 
                                
    SendMessage(
                                                     (
    HWNDEditNum7,
                                                     (
    UINTWM_SETTEXT,
                                                     (
    WPARAM0,
                                                     (
    LPARAM)&s_D
                                                     
    ); 
                                 
                                 if (
    D<0)
                                 
                                         
    SendMessage(
                                                     (
    HWNDEditTotal1,
                                                     (
    UINTWM_SETTEXT,
                                                     (
    WPARAM0,
                                                     (
    LPARAM"Impossivel"
                                                     
    );
                                                                  
                                 else 
                                 {                                                  
                                 
                                 
    valortotal1 = ((-valor2)+sqrt(D))/(2*valor1);
                                 
    valortotal2 = ((-valor2)-sqrt(D))/(2*valor1);
                                
                                
    itoa (valortotal1,s_valortotal1,10);
                                
    itoa (valortotal2,s_valortotal2,10);
                          
                          
    SendMessage(
                                 (
    HWNDEditTotal1,
                                 (
    UINTWM_SETTEXT,
                                 (
    WPARAM0,
                                 (
    LPARAM) &s_valortotal1
                                 
    );  
                           
    SendMessage(
                                 (
    HWNDEditTotal2,
                                 (
    UINTWM_SETTEXT,
                                 (
    WPARAM0,
                                 (
    LPARAM) &s_valortotal2
                                 
    );          
                                 }
                                 
                        }
                        
                        
                                                             
                        }  
                                                 
                        break;                                                             
            case 
    WM_DESTROY:
                
    PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                
    break;
            default:                      
    /* for messages that we don't deal with */
                
    return DefWindowProc (hwndmessagewParamlParam);
        }
        return 
    0;
    }
    Cumps.
    Master
     
  8. acfryx

    acfryx Power Member

    Da primeira so fiz uma analise rápida do código... Agora que analisei o código com mais atenção vejo que contêm varios erros.

    1º A variável g_inst nunca é inicializada e como fazes isso no XP ou no Vista não dá erro porque esse valor é ignorado mas se fizesses isso no Windows 95 dava erro de certeza.

    Para resolver o problema quando crias as janelas com CreateWindowEx substituis os parâmetros g_inst por NULL (como usas um SO recente não a problema).

    2º Quando usas a função para mudar a fonte (SendMessage(WM_SETFONT)) o último parâmetro não tem qualquer lógica porque esse parâmetro é analisado da seguinte forma: a low-order word se for 1 o objecto/control e actualizado imediatamente senão é só actualizado daqui a "bocado".

    Como vez pela descrição o último parâmetro pode ser 0.

    3º O código que usas para obter e converter os valores que estão nas caixas de testes devia estar dentro do case ID_BUTTONcalcular.

    Quanto ao erro que falas ainda não consegui encontra-lo... Mas faz o que te digo (principalmente o 3º) e diz alguma coisa...
     
  9. AragTey

    AragTey Power Member

    O itoa recebe um int como o valor a ser convertido para string, ai estas a passar um double, deve ser a razão do erro nos valores. Experimenta usar o sprintf().
     
  10. acfryx

    acfryx Power Member

    Tens razão só pode ser esse o erro...
     
  11. Master_piece

    Master_piece Power Member

    Desculpem la mas é assim que se usa o sprintf()???
    É que não conheço.
    Para o itoa estou a usar a stdlib, para a sprintf () é a mesma ou tenho que utilizar outra.
     
  12. Baderous

    Baderous Banido

  13. AragTey

    AragTey Power Member

  14. Master_piece

    Master_piece Power Member

  15. samouco

    samouco Power Member

    Mas eu cliquei no link e está lá tudo!! uma página dedicada ao sprintf, e de lado tens várias outras funções do stdio.h

    Desculpem lá mas pq não utilizam o google, ou o msdn http://msdn2.microsoft.com/en-us/default.aspx para pesquisar??

    O que eu vejo é que não se esforçam o minimo para procurar as coisas, já que nem postando um link directo para a página da ajuda da função, voces se orientam... :(
     

Partilhar esta Página