Search

segunda-feira, 14 de abril de 2014

Win32 Hello World!!

Imaginando que o leitor já conheça uma aplicação console escrita em c ou c++, vamos estudar um pouco uma aplicação C++ Win32 básica e compara-la a uma aplicação Console.

Aplicação Console: método main()

#include "stdio.h"
int main ()
{
   printf ("hello, world\n") ;
   return 0 ;
}
Ou então
#include "stdafx.h"
#include "iostream.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
 cout << "Hello World";
 return 0;
}





Para criar uma aplicação Console, abra o Visual Studio, no menu file-> New Project -> Na Aba Visual C++ escolha Win32 Console Application







Esse será o resultado da execução do código.






O equivalente em Win32

Segue abaixo um código bem básico utilizando Win32

#include "windows.h"
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    MessageBox (NULL, TEXT ("Hello world"), TEXT ("Hello Program"), 0) ;
    return 0 ;
}

A função WinMain é a função de entrada para um programa Win32.

Podemos notar algumas diferenças entre um programa utilizando a WinAPI e uma aplicação console;


 A função WinMain sempre terá sempre 4 parametros:
 int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE prevInstance,LPWSTR cmdLine, int cmdShow );

HINSTANCE hInstance -> É o handle(*) para a instancia da aplicação;
HINSTANCE prevInstance -> É o handle da instancia anterior da aplicação, segundo MSDN deverá ser sempre NULL. Nas versões mais antigas do windows, quando você rodava o mesmo programa, ao mesmo tempo, você poderia compartilhar recursos da memória.
LPWSTR cmdLine(LPSTR se for ANSICHAR) -> Linhas de comando para a aplicação, podemos passar parametros de como a janela será iniciada, ou qualquer outra coisa que quisermos informar.

(*)Um handle é um número usando pelo windows para identificar alguma coisa, pode ser um componente, um processo até mesmo uma janela.

No caso de hInstance esse número representa um programa.


Nenhum comentário:

Postar um comentário