Programa em C++ que ñ faz o k devia

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:
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.
 
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:
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;".
 
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;".


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
 
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...
 
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 (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,EditNum4,EditNum5,EditNum6,EditNum7,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
              );
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((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", s_D[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);
                             
                             itoa (D,s_D,10);
                             
                            SendMessage(
                                                 (HWND) EditNum7,
                                                 (UINT) WM_SETTEXT,
                                                 (WPARAM) 0,
                                                 (LPARAM)&s_D
                                                 ); 
                             
                             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;
}

Cumps.
Master
 
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...
 
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.

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().
 
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().

Desculpem la mas é assim que se usa o sprintf()???
É que não conheço.
sprintf (valortotal1,s_valortotal1,10);
sprintf (valortotal2,s_valortotal2,10);

Para o itoa estou a usar a stdlib, para a sprintf () é a mesma ou tenho que utilizar outra.
 
Eu estive nesse mesmo site e não encontrei a sprintf().:blubomte:
Obrigado

Cumps.
Master

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... :(
 
Back
Topo