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

ajuda no dev-c++

Discussão em 'Programação' iniciada por GustavoHCardoso, 19 de Setembro de 2008. (Respostas: 7; Visualizações: 2298)

  1. Estou aprendendo a programar, alguem poderia me ajudar com este erro.


    C:\Dev-Cpp\main.cpp In function `LRESULT WindowProcedure(HWND__*, UINT, WPARAM, LPARAM)':

    197 C:\Dev-Cpp\main.cpp `itoa' undeclared (first use this function)

    (Each undeclared identifier is reported only once for each function it appears in.)

    C:\Dev-Cpp\Makefile.win [Build Error] [main.o] Error 1

    Código:
    #include <windows.h>
    #include <stdlib.h>
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    {
        HWND hwnd;              
        MSG messages;          
        WNDCLASSEX wincl;        
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = "WindowsApp";
        wincl.lpfnWndProc = WindowProcedure;
        wincl.style = CS_DBLCLKS;          
        wincl.cbSize = sizeof (WNDCLASSEX);
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL; 
        wincl.cbClsExtra = 0;  
        wincl.cbWndExtra = 0;  
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
        if (!RegisterClassEx (&wincl))
            return 0;
        hwnd = CreateWindowEx (
            0,                 
            "WindowsApp",        
            "Calculadora",       
            WS_OVERLAPPEDWINDOW, 
            350,      
            250,      
            300,               
            100,               
            HWND_DESKTOP,    
            NULL,              
            hThisInstance,      
            NULL                
            );
        ShowWindow (hwnd, nFunsterStil);
        while (GetMessage (&messages, NULL, 0, 0))
        {
            TranslateMessage(&messages);
            DispatchMessage(&messages);
        }
     
        return messages.wParam;
    }
    #define ID_BUTTONmais 1001
    #define ID_BUTTONmenos 1002
    #define ID_BUTTONvezes 1003
    #define ID_BUTTONdividir 1004
    HINSTANCE g_inst;
    HWND EditNum1,EditNum2,EditTotal,ButtonMais,ButtonMenos,ButtonVezes,ButtonDividir;
    void DesenharObjectos(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        EditNum1 = CreateWindowEx (
            WS_EX_CLIENTEDGE,  
            "EDIT",        
            "5",       
            WS_VISIBLE|WS_CHILD|WS_BORDER|ES_RIGHT , 
            30, 30, 50, 20,                 
            hwnd,       
            NULL,           
            g_inst,      
            NULL                 
            );
     
        EditNum2 = CreateWindowEx (
            WS_EX_CLIENTEDGE,"EDIT", "3",       
            WS_VISIBLE|WS_CHILD|WS_BORDER, 
            160, 30, 50, 20,                
            hwnd, NULL, g_inst, NULL );
        EditTotal = CreateWindowEx (
            WS_EX_CLIENTEDGE,"EDIT", "",       
            WS_VISIBLE|WS_CHILD|WS_BORDER, 
            220, 30, 50, 20,                
            hwnd, NULL, g_inst, NULL );
        ButtonMais = CreateWindowEx (
            0,  
            "BUTTON",        
            "+",       
            WS_VISIBLE|WS_CHILD, 
            80, 30, 20, 20,                
            hwnd,    
            (HMENU)ID_BUTTONmais,          
            g_inst,      
            NULL           
            );
     
        ButtonMenos = CreateWindowEx (
            0, "BUTTON", "-",       
            WS_VISIBLE|WS_CHILD, 
            100, 30, 20, 20,             
            hwnd, (HMENU)ID_BUTTONmenos, g_inst, NULL);
     
        ButtonVezes = CreateWindowEx (
            0, "BUTTON", "*",       
            WS_VISIBLE|WS_CHILD, 
            120, 30, 20, 20,             
            hwnd, (HMENU)ID_BUTTONvezes, g_inst, NULL);
     
        ButtonDividir = CreateWindowEx (
            0, "BUTTON", "/",       
            WS_VISIBLE|WS_CHILD, 
            140, 30, 20, 20,
            hwnd, (HMENU)ID_BUTTONdividir, g_inst, NULL);
     
        CreateWindowEx (
            0, 
            "STATIC", 
            "=",       
            WS_VISIBLE|WS_CHILD, 
            212, 31, 5, 20,
            hwnd, 
            NULL, 
            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) EditTotal,(UINT) WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),(LPARAM) lParam); 
     
        SendMessage(
            (HWND) ButtonMais,
            (UINT) WM_SETFONT, 
            (WPARAM) GetStockObject(DEFAULT_GUI_FONT),
            (LPARAM) lParam
            ); 
     
        SendMessage((HWND) ButtonMenos,(UINT) WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),(LPARAM) lParam);
        SendMessage((HWND) ButtonVezes,(UINT) WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),(LPARAM) lParam); 
        SendMessage((HWND) ButtonDividir,(UINT) WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),(LPARAM) lParam);         
    }
    char s_valor1[20] = "0", s_valor2[20] = "0", s_total[20] = "0";
    int valor1, valor2, total;
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)
        {
            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);
     
                    valor1 = atoi(s_valor1);
                    valor2 = atoi(s_valor2); 
     
                    switch (LOWORD(wParam))
                    {
                        case ID_BUTTONmais:  
                            total = valor1+valor2;
                        break;
                        case ID_BUTTONmenos:        
                            total = valor1-valor2;                     
                        break;
                        case ID_BUTTONvezes:        
                           total = valor1*valor2;                     
                        break;
                        case ID_BUTTONdividir:        
                            total = valor1 / valor2;                     
                        break;
                    }    
                    itoa (total,s_total,10);
     
                    SendMessage(
                     (HWND) EditTotal,
                     (UINT) WM_SETTEXT, 
                     (WPARAM) 0,
                     (LPARAM) &s_total
                        );
     
                }   
                break;
            case WM_DESTROY:
                PostQuitMessage (0);
            break;
            default:                     
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
        return 0;
    }
     
    
     
    Última edição: 19 de Setembro de 2008
  2. Peter V5

    Peter V5 Folding Member

    Esse codigo está nos exemplos ou sacaste da net? Se sacaste da net é normal que tenha umas cenas dessas, pode ser uma biblioteca que o programador fez e que tu nhão tenhas, quanto aos exemplos já me aconteceu umas barracas dessas.
     
  3. Este é um exemplo que encontrei aqui no forum para criar uma calculadora.
     
  4. Peter V5

    Peter V5 Folding Member

    Quando gravaste o ficheiro gravaste em C ou C++

    EDIT: Experimentei com os dois e não deu.
     
    Última edição: 20 de Setembro de 2008
  5. raVemjr

    raVemjr I'm cool cuz I Fold

    Bem, se não tens, podes a contruir que não é muito complicada. Pelo nome parece apenas ser uma função que converte um int em array...

    Na wiki tens uma entrada disso...aqui está o itoa:
    Código:
    void itoa(int n, char s[])
    {
        int i, sign;
    
        if ((sign = n) < 0)  /* record sign */
            n = -n;          /* make n positive */
        i = 0;
        do {       /* generate digits in reverse order */
            s[i++] = n % 10 + '0';   /* get next digit */
        } while ((n /= 10) > 0);     /* delete it */
        if (sign < 0)
            s[i++] = '-';
        s[i] = '\0';
        reverse(s);
    } 
    ...e a função reverse aí utilizada:
    Código:
    void reverse(char s[])
    {
        int c, i, j;
    
        for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
            c = s[i];
            s[i] = s[j];
            s[j] = c;
        }
    }
     
  6. Como isso fica no codigo, aqui não deu
     
  7. raVemjr

    raVemjr I'm cool cuz I Fold

    Eu não experimentei, porque tou em linux. Mas deve bastar copiar as duas funções...
     
  8. MPalhas

    MPalhas Power Member

    de lembrar que têm de ficar declaradas antes do resto do código, se não, não será detectadas na mesma
     

Partilhar esta Página