Tutorial de C para Windows
(para iniciantes)
Estrutura inicial e MessageBox

  Esse tutorial é para você que já sabe programar em C, e apenas quer migrar para o Windows. Bons compiladores comerciais de C/C++ pra Windows são Visual C++ e Borland C++, mas há um compilador grátis na Internet, o LCC. 

Eu mesmo sou extremamente iniciante em programação para Windows, portanto, não garanto que este tutorial vá ensinar a melhor ou mais rápida maneira de programar para Windows, mas estou aberto a sugestões. 

Vamos começar logo com um exemplo prático e clássico: o "Hello World" 



/* EX01.C - Como abrir uma caixa de mensagens */ 
#include <windows.h> 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   char *comandos, int Visualizacao) 
{ 
  MessageBox(NULL, "Alô Mundo!", "Sem Título", MB_OK); 
  return 0; 
} 


Se esse exemplo não funcionar, realmente tem alguma coisa errada com suas configurações, seu compilador ou maneira que você usou para compilar... Eu testei aqui com o LCC e funcionou, e deve funcionar com você também. 

Quando você executar, vai aparecer uma simples caixa de mensagem assim: 

(Não clique no botão OK, isso é só um GIF) :-)

Simples e sem muita utilidade, mas, veja só, você já fez seu primeiro programa! =) 

Agora vamos analisar o código fonte, passo a passo: 

#include <windows.h> 
Inclui o arquivo windows.h, que contém funções e definições para o Windows. Se vai fazer um programa para Windows, inclua o windows.h 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char *comandos, int Visualizacao) 
No programa eu dividi em duas linhas, mas não há problema nenhum em colocar tudo em uma linha só. 
Não é importante você entender isso agora, apenas copie (mude os nomes das variáveis se quiser). Mas é bom saber. 
Para começar, no Windows você não usa main, em lugar disso, usa WinMain. Na verdade você pude usar main se você quiser, mas há certas vantagens em se usar WinMain. 
Agora vamos ver o que significam os parâmetros (que o Windows passa para WinMain ao iniciar o programa): 
hInstance - é uma variável do tipo HINSTANCE que identifica o seu programa. 
hPrevInstance - é uma variável do tipo HINSTANCE que identifica o programa anterior. 
*comandos - ponteiro do tipo char que indica os parâmetros que foram passados ao programa quando ele foi chamado. Parecido com o *argv do DOS. 
Visualizacao - indica como a janela vai ser mostrada (maximizada, minimizada, normal, etc). 

MessageBox(NULL, "Alô Mundo!", "Sem Título", MB_OK); 
Mostra uma caixa de mensagem. Tem 4 parâmetros. 
O primeiro informa a que janela pertence essa caixa de mensagem. No caso, como nosso programa não tem nenhuma janela, usamos NULL. 
O segundo informa qual é o texto que vai aparecer. 
O terceiro informa o título (o título que aparece na barra azul, no canto superior esquerdo) 
O quarto indica algumas propriedades da sua caixa de mensagem. Como por exemplo quais os botões vão estar disponíveis ou de que tipo é a caixa de mensagem (alerta, erro, etc). Você pode encontrar outras opções além do MB_OK, no arquivo win.h (ou talvez windows.h). Todas as outras opções também começam com MB_. Se você quiser, por exemplo, uma caixa com ícone de interrogação com os botões Sim e Não, você poderia fazer algo do tipo: MessageBox(NULL, "Você é maior de idade?", "Pergunta", MB_YESNO + MB_ICONQUESTION). Ou seja, basta somar. Mas atenção! Você não pode somar o mesmo tipo de opção... Por exemplo, você não pode somar MB_YESNO com MB_OKCANCEL (são duas configurações de botão - isso vai resultar em uma configuração diferente). Mas pode somar um ícone com uma configuração de botao (MB_YESNO + MB_ICONQUESTION, por exemplo). 
Outra coisa que é importante saber sobre o MessageBox é que ele retorna um valor. E esse valor indica qual botão foi pressionado pelo usuário (ou se ele clicou em fechar). Você pode encontrar os nomes dos botões também no arquivo win.h. Por exemplo, IDOK, IDCANCEL, IDYES, entre outros (todos comecam com ID e terminam com o nome do botão em inglês)...

Agora que entendemos o programa e aprendemos outros detalhes (especialmente sobre o MessageBox), podemos até arriscar um pequeno avanço. Com o que você aprendeu até agora, você pode até fazer um adventure apenas com texto (e os ícones do Windows), ainda que simples. Mas isso cabe a você, se você quiser... Eu vou apenas mostrar um exemplo simples de como você pode aproveitar o valor que o MessageBox retorna. Não necessita explicações, creio eu. 

 



/* EX02.C - Como abrir e interpretar uma caixa de mensagem */
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                  char *comandos, int Visualizacao)
{
  int botao;

  botao = MessageBox(NULL, "Instruções em Português?", 
          "Ajuda", MB_YESNO + MB_ICONQUESTION);

  if (botao==IDYES)
     MessageBox(NULL, "Aperte OK para finalizar", 
               "Instruções", MB_OK + MB_ICONEXCLAMATION);

  if (botao==IDNO)
     MessageBox(NULL, "Press OK to exit", 
               "How to use", MB_OK + MB_ICONEXCLAMATION);

  return 0;
}


O resultado é bem previsível: 

O que acontece se você
escolhe "Sim"
A primeira caixa de
mensagem do programa
Aparece quando você
escolhe "Não"

Acaba aqui a primeira lição. Você pode aprender só isso e ainda assim fazer um jogo legal, ou até um utilitário simples (usando os comandos que você aprendeu com programação em DOS). Mas eu tenho certeza de que você não vai querer parar por aí...

 
 
E-mail
Copyright © 1998 - Rodrigo Rocha Gomes e Souza
ICQ: 7745525 | Nickname: xROD
1