logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Explicando a sopa de letrinhas da programação C/C++ para Windows: Win32

Outros posts dessa mesma série:   ATL     COM     MFC

Win32 API: API (Application Programming Interface) das versões do Windows que são 32 bits (95, 98, 98SE, Millenium, NT, 2000, XP, 2003, Longhorn, etc). Nada mais é do que as funções que o sistema operacional exporta para serem usadas pelas aplicações. Cada sistema operacional tem a sua API, e a runtime do C e C++ é implementada em cada plataforma usando essa API. Por exemplo, o malloc da linguagem C acaba chamando HeapAlloc ou VirtualAlloc da API. Para mais detalhes, veja a documentação na MSDN. Código fonte sempre vale mais do que h palavras:

#define UNICODE
#define _UNICODE
#define WIN32
#define _WINDOWS
#define WIN32_LEAN_AND_MEAN

#include <windows.h>

//
// programa Win32 tem como entry point (função inicial) a função WinMain
//
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow)
{
  WCHAR* wzBuffer;
  HANDLE hHeap;
  
  hHeap = GetProcessHeap();

  //
  // usando a função HeapAlloc da API para alocar memória
  //
  wzBuffer = (WCHAR*) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 256);

  //
  // wsprintf também é da API
  //
  wsprintf(wzBuffer, L"TickCount: %d", GetTickCount());

  MessageBox(NULL, wzBuffer, L"Mensagem", MB_OK);

  //
  // se eu usasse ATL eu não precisava fazer isso...
  //
  HeapFree(hHeap, NULL, wzBuffer);

  return 0;
}

Para mais informações sobre Win32, veja o meu post "FAQ: Programação Win32 em C/C++"

Se você não tiver o Visual C++, você pode fazer download do Microsoft Visual C++ Toolkit Compiler e do Microsoft Platform SDK. A compilação em linha de comando fica assim:

C:Temp>cl win.cpp /link user32.lib
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

win.cpp
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:win.exe
user32.lib
win.obj

Depois ainda teremos COM, ATL, WTL e MFC. Alguém tem mais alguma sugestão?


Em 31/05/2005 15:10, por Rodrigo Strauss


  
 
 
Comentários
Charles Schneider Pereira | e-mail | em 16/12/2005 | #
Tenho uma sugestão. Tenho lido muito sobre o Boost no teu site. Se você quiser explicar para os menos experientes o que ele é e para que serve na série Sopa de Letrinhas...
Rodrigo Strauss | website | em 16/12/2005 | #
Sim, eu pretendo escrever bastante sobre boost. Só vai mudar o nome da série, porque essa é sobre Win32. Eu já escrevi sobre o boost::shared_ptr em http://www.1bit.com.br/content.1bit/weblog/cpp_sanidade_shar...
Marcio | em 09/01/2006 | #
OI...
QUANDO TENTO INSTALAR ALGUM PROGRAMA EM MEU COMPUTADOR DA UM ERRO DIZENDO QUE O ARQUIVO WIN32 NAO E VALIDO.. O QUE SIGNIFICA ISSO?
GRATO.
marcia | em 09/02/2006 | #
e de delphi 2006 para o win32
Daniel de Oliveira Andrade | website | em 23/05/2008 | #
Olá,Eu sou iniciante nessa área de programação,no entano,eu me divirto muito programando em pascal,c,vb.
Só que essas linguagens já não estão "divertindo" mais,contudo,eu gostaria de aprender Assembly ,você acha que vale apena me dedicar firmemente a "ASSEMBLY" ,é realmente válido aprender assembly ,me indique um livro caso for válido aprender assembly.
Eu não quero ser um programador mediano entende.
Obrigado Rodrigo.
Rodrigo Strauss | website | em 31/05/2008 | #
Qualquer livro de assembly para iniciantes resolve, eu li um livro sobre assembly faz muito tempo, não lembro o nome.
nilson lana machado pimentel | website | e-mail | em 24/07/2009 | #
Oi..!
Rogrigo, parabéns pelo BELO trabalho, é de criticas construtiva q crescemos não é? aí vai a minha!!!
ìndice:
do lado esquerdo(left)
códigos ex:lição nº 000 Flames do lado direito
lição nº 001 um a um.
<p align="left">
<font style="font-family: tahoma,verdana,arial; font-size: 8pt;">Jogo,
<a href=" http://constructcode.blogspot.com/" target="_blank">clique aquí</a>.</font>
grato pelo ecoespaço, colabore com a nossa causa de sermos GNU/Linux Livres, nilson.lana@uol.com.br e constructcode.blogspot.com, vc é meu passado todinho e sua história também, tenho 44 anos de experiencia e ainda estou apredendo!!! continue assim pra mais. tentei!!!!???

Andre | em 02/06/2012 | #
:D
null | em 12/02/2015 | #
















| em 12/02/2015 | #





Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::