A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Cap.V - Nossa primeira janela

Seg

17

Dez

2007


19:40

(4 votos, média 4.75 de 5) 


Seguimos com o programa da Fig 5.

Vídeo
prog011.exe

vovo Para assistir ao vídeo, faça o download de prog011.exe.

Encontramos 2 funções da API novas:

Biblioteca kernel32.lib GetWindowText, hwnd_edit01,addr buffer,100

Esta função pega o texto das janelas e tem 3 parâmetros. São eles:

  • hWnd - identificamos a janela colocando o manipulador de controle.
  • lpString - endereço da memória onde o texto será armazenado.
  • nMaxCount - número máximo de caracteres que serão guardados.

Biblioteca kernel32.lib SetWindowText,hwnd_edit02,addr buffer

Com esta função enviamos o texto para as janelas. Ela tem 2 parâmetros:

  • hWnd - onde identificamos a janela colocando o manipulador do controle.
  • Lpsz - o endereço da memória onde se encontra o texto.

Nos dois programas definimos ícones diferentes para as janelas. A seção .const serve para colocar constantes, que são apenas para leitura. Quando declaramos um objeto que está nos recursos, é importante colocar a mesma ID que definimos no recurso.

Sintaxe:

Etiqueta equ valor

Nos exemplos:

app equ 100 ;programa Fig.4 Icono equ 100 ;programa Fig.5

Nos damos conta de que a etiqueta não importa, o que serve na verdade é o valor 100 que é a ID de nosso ícone no recurso.

Utilizando a mensagem WM_CLOSE: Fonte prog012

Vamos criar uma janela que, quando Image for clicado, a seguinte mensagem seja mostrada:

Mensagem
Fig. 6

Com a condição de que se pressionamos o botão Sim/Yes para fechar e Não/No para não fechar a janela, no modelo que temos devemos adicionar esta menssagem:

WM_CLOSE

Esta mensagem se envia quando a janela deve ser fechada mas ainda está no desktop. Depois desta mensagem segue:

WM_DESTROY

para que a mensagem da figura Fig.06 seja mostrada. Chamamos a função MessageBox desta maneira:

invoke MessageBox,hWnd,addr MsgSair,addr TitSair, MB_YESNO+MB_ICONINFORMATION

Depois, para comparar qual botão foi pressionado, chamamos o bloqueio .if e nosso código ficará assim:

.elseif uMsg == WM_CLOSE invoke MessageBox,hWnd,addr MsgSair,addr TitSair, MB_YESNO + MB_ICONINFORMATION .if eax == IDYES invoke DestroyWindow,hWnd .endif

Com isto comprovamos qual botão que foi pressionado.

Informações adicionais