Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda referente a programa com interface gráfica em C


Josemberg

Pergunta

Bom dia!

Sou estudante de sistemas de informação acabei de vê C no semestre passado, mas estou querendo aprender sobre uso interface gráfica em, seguindo o livro C completo e total utilizei o exemplo do livro e tem dados uns erros, gostaria que alguém me ajudasse, o código é para criação do esqueleto de uma janela, o programa executa + não como deveria. Segue o código abaixo

#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>

LRESULT CALLBACK WindowFunc(HWND, UINT,WPARAM, LPARAM);

char szWinName[] = "Minha_Janela";//nome da classe da janela

int WINAPI WinMain (HINSTANCE hThisInst, HINSTANCE prevInst, LPCSTR lpszArgs, int nWinMode){

    HWND hwnd;
    MSG msg;
    WNDCLASSA wcl;

    wcl.hInstance = hThisInst;//handle desta instância
    wcl.lpszClassName = szWinName;//nome da classe da janela
    wcl.lpfnWndProc = WindowFunc;//funão da janela
    wcl.style = 0;//estilo padrão

    wcl.hIcon = LoadIcon(NULL,IDI_APPLICATION);//estilo do icone
    wcl.hCursor = LoadCursor(NULL,IDC_ARROW);//estilo do cursor 
    wcl.lpszMenuName = NULL;//sem menu

    wcl.cbClsExtra = 0;//nenhuma informação
    wcl.cbWndExtra = 0;//extra é necessario

    wcl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); //faz o fundo da tela ficar branco
    //Registra a classe de janela
    if(!RegisterClassA(&wcl)) return 0;

    //Apos registrar a classe - cria a janela
    hwnd = CreateWindowA(
        szWinName, //nome da classe da janela
        "Esqueleto Windows",//título
        WS_OVERLAPPEDWINDOW,//estilo da janela - normal
        CW_USEDEFAULT, //coordenada x, deixa o windows decidir
        CW_USEDEFAULT,//coordenada y, deixa o windows decidir
        CW_USEDEFAULT,//largura - deixa o windows decidir
        CW_USEDEFAULT,//altura - deixa o windows decidir
        HWND_DESKTOP, //sem janela pai
        NULL,//sem menu
        hThisInst, //handle desta instancia do programa
        NULL, //nehum argumento adicional
        );
    //exibe a janela
    ShowWindow(hwnd, nWinMode);
    UpdateWindow(hwnd);

    //cria a repetição da mensagem
    while (GetMessage(&msg, NULL, 0, 0)){
        TranslateMessage(&msg);//permite uso de teclado
        DispatchMessage(&msg);//retorna o controle do windows
    }
    return msg.wParam;
}

//função chamada pelo windows que recebe as mensagens da fila de mensagem
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
    switch(message){
        case WM_DESTROY: //encerra o rograma
            PostQuitMessage(0);
            break;
        default:
            //deixa owindows processar qualquer mensagem não especificadas no switch acima
            return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}

Ele tem apresentado as mensagens de erro abaixo:

warning: C4028: parâmetro formal 3 diferente da declaração linha 9

warning: C4002: muitos parâmetros reais para macro 'CreateWindowA' linha 4

Mesmo com essas mensagens o programa executa e exibe a janela com o título da janela em símbolos e não letras.

Eu uso o Visual Studio 2010 Ultimate, quem puder me ajudar eu agradeço muito

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Fiz algumas modificações no seu código (usei o Dev-C++) como a ultima virgula do hwnd = CreateWindowA aquele NULL la não existe akela virgula nele!! Em int WINAPI WinMain não é LPCSTR é LPSTR confira o código abaixo espero ter ajudado ^_^

#include <Windows.h>

#include <stdio.h>

#include <stdlib.h>

LRESULT CALLBACK WindowFunc(HWND, UINT,WPARAM, LPARAM);

char szWinName[] = "Minha_Janela";//nome da classe da janela

int WINAPI WinMain (HINSTANCE hThisInst, HINSTANCE prevInst, LPSTR lpszArgs, int nWinMode){

HWND hwnd;

MSG msg;

WNDCLASSA wcl;

wcl.hInstance = hThisInst;//handle desta instância

wcl.lpszClassName = szWinName;//nome da classe da janela

wcl.lpfnWndProc = WindowFunc;//funão da janela

wcl.style = 0;//estilo padrão

wcl.hIcon = LoadIcon(NULL,IDI_APPLICATION);//estilo do icone

wcl.hCursor = LoadCursor(NULL,IDC_ARROW);//estilo do cursor

wcl.lpszMenuName = NULL;//sem menu

wcl.cbClsExtra = 0;//nenhuma informação

wcl.cbWndExtra = 0;//extra é necessario

wcl.hbrBackground = (HBRUSH) 0; //faz o fundo da tela ficar branco

//Registra a classe de janela

if(!RegisterClassA(&wcl)) return 0;

//Apos registrar a classe - cria a janela

hwnd = CreateWindowEx(

0,

szWinName, //nome da classe da janela

"Esqueleto Windows",//título

WS_OVERLAPPEDWINDOW,//estilo da janela - normal

CW_USEDEFAULT, //coordenada x, deixa o windows decidir

CW_USEDEFAULT,//coordenada y, deixa o windows decidir

CW_USEDEFAULT,//largura - deixa o windows decidir

CW_USEDEFAULT,//altura - deixa o windows decidir

HWND_DESKTOP, //sem janela pai

NULL,//sem menu

hThisInst, //handle desta instancia do programa

NULL //nehum argumento adicional

);

//exibe a janela

ShowWindow(hwnd, nWinMode);

UpdateWindow(hwnd);

//cria a repetição da mensagem

while (GetMessage(&msg, NULL, 0, 0)){

TranslateMessage(&msg);//permite uso de teclado

DispatchMessage(&msg);//retorna o controle do windows

}

return msg.wParam;

}

//função chamada pelo windows que recebe as mensagens da fila de mensagem

LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){

switch(message){

case WM_DESTROY: //encerra o rograma

PostQuitMessage(0);

break;

default:

//deixa owindows processar qualquer mensagem não especificadas no switch acima

return DefWindowProc(hwnd, message, wParam, lParam);

}

return 0;

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...