|
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í... |
|