Continuando, vamos trabalhar com alguns campos editáveis:
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:
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:
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.