Jump to content
Fórum Script Brasil
  • 0

Ajuda referente a programa com interface gráfica em C


Josemberg

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...