Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Utilizando Win32 pt. 1

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Utilizando Win32 pt. 1

    [Equipe de tradução]
    Iniciando

    Sobre

    Este tutorial tem como intenção apresentar a você o básico (e usos comuns) do desenvolvimento de programas utilizando o Win32 API. A linguagem usada é C, a maioria dos compiladores C++ também compilam. De fato, a maioria das informações são aplicáveis em qualquer outra linguagem que possa acessar a API, incluindo JAVA, Assembly e Visual Basic. De qualquer forma, não vou apresentar nenhum código relacionado a essas linguagens e você terá de se virar, mas a maioria das pessoas que usaram esse documento nas linguagens citadas tiveram algum sucesso.

    Esse tutorial não vai te ensinar a linguagem C, nem te dizer um compilador particular para se usar (Borland C++, Visual C++, LCC-Win32, etc...) Porém, eu vou pegar alguns momentos no aprendizado para passar algumas considerações sobre os compiladores que eu tenho conhecimento.

    Se você não sabe o que é macro ou typedef, ou como um switch() funciona, então dê meia volta e vá ler um bom livro ou um tutorial de linguagem C primeiro.

    Observações importantes

    As vezes no meio do texto eu vou indicar certas coisas IMPORTANTES para ler. Porque elas assustam muitas pessoas, se você não leu isso, você provavelmente vai se assustar também. A primeira coisa é isso:

    O arquivo .ZIP fornecido no exemplo não é opcional! Eu não incluo todos os códigos no texto, apenas o que é relevante para o que eu estiver discutindo. Para poder ver como o código se encaixa no resto do programa, você terá de dar uma olhada no código disponibilizado no arquivo .ZIP.

    Segunda coisa:

    Leia tudo! Se você tiver dúvida durante alguma parte do tutorial seja um pouco paciente e isso poderá ser respondido mais tarde. Se você simplesmente não está aguentando ficar sem saber, pesquise (Sim, computadores podem fazer isso) o resto do documento antes de perguntar para os parceiros do IRC ou por e-mail.

    Outra coisa a se lembrar é que a pergunta que você possa ter sobre uma matéria A pode terminar em uma discussão sobre B ou C, ou até L. Então entenda um pouco sobre o assunto.

    Certo, acho que isso é tudo que tenho a dizer nesse momento, agora vamos tentar programar.

    O programa Win32 mais simples

    Se você é totalmente iniciante, vamos ter certeza que você é capaz de compilar uma aplicação windows básica. Cole o seguinte código no seu compilador e se tudo der certo você terá um dos programas mais copiados do mundo escrito.

    Lembre-se: Compilar isso em C, não C++. Provavelmente não muda nada, mas como todo o código aqui é apenas C, faz sentido começar da maneira correta. Na maioria dos casos, só precisa é colocar um ".c" ao invés do ".cpp" no arquivo. Se isso machuca sua cabeça, apenas renomeia o arquivo para "teste.c".

    #include <windows.h>

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);
    return 0;
    }
    Se isso não funcionar, o primeiro passo é ler qualquer erro que você tiver e se não entende-los, procure sobre eles no help ou qualquer documento que acompanhar o compilador. Tenha certeza que você escolheu um projeto Win32 GUI ( Não "Console" ). Infelizmente eu não poderei ajudar nessa parte também, como o erro e como conserta-lo varia de compilador pra compilador (e pessoa pra pessoa).

    Você pode ter alguns warnings por não ter passado os parâmetros pedido pelo WinMain(). Não se preocupe. Agora que descobrimos que você de fato pode compilar um programa, vamos entender cada bit de código.

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    WinMain() é para o windows equivalente ao main() do DOS ou do UNIX. Aqui é onde todo programa inicia. Os parâmetros são os seguintes:

    HINSTANCE hInstance
    Cuida de programa executável (O arquivo .exe na memória).
    HINSTANCE hPrevInstance
    Sempre NULL para programas Win32.
    LPSTR lpCmdLine
    A linha de comando onde passa argumentos como string. NÃO inclui o nome do programa.
    int nCmdShow
    Um valor integer que pode passar pro ShowWindow(). Vamos ver isso mais tarde.

    hInstance é usado para coisas como carregar recursos e qualquer outra tarefa onde é feita um pré-módulo básico. Um módulo é tanto um .EXE ou um .DLL carregado no seu programa. Para boa parte (Se não toda) desse tutorial, só vamos nos preocupar com um módulo, o EXE.

    hPrevInstance é usado pra cuidar da instância anterior do seu programa (Se houver) no Win16. Isso não se aplica mais. No Win32 você ignora esse parâmetro.

    Convenção chamada

    WINAPI especifica a convenção chamada e define como _stdcall. Se você não sabe o que isso significa, não se preocupe que não veremos isso nessa parte do tutorial. Apenas lembre-se que é necessária.

    Win32 Tipos

    Você vai encontrar muitos das palavras normais ou tipos que o Windows define, UINT para unsigned int, LPSTR para char*, etc... Qual você vai escolher é com você. Se você se sente mais confortável usando char* ao invés de LPSTR, sinta-se a vontade para usa-lo. Apenas tenha certeza de saber o que é aquele tipo antes de substituir mais alguma coisa.

    Apenas lembre-se de algumas coisas e elas serão fáceis de interpretar, Um prefixo LP significa um ponteiro long. Em Win32 a parte Long é inútil então não se preocupe. Se você não souber o que é um ponteiro, você pode 1) Procurar um livro ou tutorial em C, ou 2) Apenas continuar com o tutorial e que se dane. Eu realmente recomendo o #1, mas a maioria das pessoas vão pelo #2 (Eu iria). Mas não diga que eu não te avisei.

    A próxima coisa é o C que vem depois do LP, que indica um ponteiro constante. LPCSTR indica um ponteiro pra uma string constante, que não pode e não vai ser modificado. LPSTR por outro lado não é constante e pode ser modificado.

    Você pode ver também um T misturado ali. Não se preocupe com isso agora, a menos que você esteja trabalhando com Unicode, isso significa nada.


    _______________________________________________
    Site: Winprog
    Anexo .ZIP citado no documento: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    O tutorial se divide em 9 partes. Quando tiver tempo vou traduzindo e passando pra cá pro pessoal estudar sobre API
    sigpic

    Decidi deixar de ser usuário e virar desenvolvedor
X
Working...
X