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. VI - Caixas de Diálogo

Qui

20

Dez

2007


08:03

(5 votos, média 4.20 de 5) 


Continuando, vamos trabalhar com alguns campos editáveis:

Vídeo 3
prog15.exe

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

Biblioteca user32.lib GetDlgItemText,hWin,edit01,addr buffer,225

Esta função trabalha com caixas de diálogo. É igual à função GetWindowText com a diferença de que, para obter o texto do controle, necessitamos do manipulador da nossa caixa de diálogo e da ID do controle do qual queremos o texto. Parâmetros:

  • hDlg - especificamos o manipulador da caixa de diálogo.
  • nIDDlgItem - especificamos a ID do nosso Controle.
  • lpString - endereço de memória para armazenar o texto.
  • nMaxCount - número máximo de caracteres que se vai pegar.
Biblioteca user32.lib SetDlgItemText,hWin,edit01,addr buffer

É como a função SetWindowText, que insere texto, mas com a diferença de que especificamos a ID do controle. Parâmetros:

  • hwndDlg - especificamos o manipulador da caixa de diálogo.
  • idControl - identificamos a ID do nosso Controle.
  • lpsz - endereço de memória onde se encontra o texto.

Agregando um Ícone

Agora agregaremos um ícone à nossa aplicação:

Vídeo 4
prog16.exe

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

Biblioteca user32.lib SendMessage,hWin,edit01,addr buffer

Esta função envia mensagens específicas para as nossas janelas sempre e enquanto tivermos o manipular da janela. Parâmetros:

  • hwnd - identificamos o manipulador da janela à qual enviaremos a mensagem.
  • uMsg - especificamos a mensagem a ser enviada.
  • wParam - especificamos informação adicional da mensagem.
  • lParam - especificamos informação adicional da mensagem.

Por exemplo, se quisermos enviar um ícone à nossa janela, especificamos o manipulador da janela, o tipo de mensagem, o tamanho do ícone e o manipulador do ícone.

Foi desta forma que declaramos a função SendMessage para enviar um ícone ao nosso programa:

SendMessage, hWin - Manipulador da janela. WM_SETICON - Tipo de mensagem. ICON_BIG - Tamanho do ícone. hIcone - handle do ícone.

Se quisermos fechar nossa janela principal, um dos vários métodos seria enviar a mensagem WM_CLOSE. Exemplo:

SendMessage, hWin - Manipulador da janela. WM_CLOSE - Tipo de mensagem. 0 - Não especificamos. 0 - Não especificamos.

Faremos mais um exemplo com esta função. Para tanto, criamos um programa igual à esta imagem:

Dois botões
Fig. 3

Estes dois botões fecham a janela e seu funcionamento é o seguinte: o primeiro botão envia uma mensagem para a janela para que execute a função do botão 2 que, por sua vez, envia uma mensagem para encerrar o programa.

Você deve estar se perguntando como isto é feito. O fazemos com o seguinte código:

.elseif eax==WM_COMMAND mov edx,wParam .if edx == botao01 invoke SendMessage,hWin,WM_COMMAND,boton02,0 .elseif edx == botao02 invoke SendMessage,hWin,WM_CLOSE,0,0 .endif .elseif eax==WM_CLOSE invoke EndDialog,hWin,0

No botao01 colocamos a função SendMessage, declarada da seguinte forma:

hWin - Manipulador da janela. WM_COMMAND - Este tipo de mensagem é onde se produzen as funções dos botões. botao02 - Especificamos o valor que deve ter wParam quando enviamos a mensagem. 0 - Não especificamos nada.

Este exemplo é muito resumido e está junto com este documento.

Informações adicionais