Informática Numaboa - Tutoriais e Programação
Cap. VI - Caixas de Diálogo
Qui 20 Dez 2007 08:03 |
- Detalhes
- Categoria: MASM + RadASM
- Atualização: Quinta, 18 Junho 2009 11:26
- Autor: Alan Moreno
- Acessos: 9693
Masm32+RadASM
Capítulo VI: Caixas de Diálogo
Escrito por: ^A|An M0r3N0^ Conselheiro: RedH@wk Tradução: ~Uglinho~O presente texto foi escrito para fins educacionais e de pesquisa e é de livre distribuição contanto que se preserve o conteúdo e os direitos do autor.
Caixas de Diálogo
Esta é uma outra maneira de criar janelas. Utilizando o editor de recursos que vem com o RadASM pode-se criá-las de forma fácil e rápida. Vejamos o seguinte vídeo:
Para assistir ao vídeo, faça o download de prog13.exe.
Como observamos no vídeo, o código para mostrar uma janela simples utilizando as caixas de diálogo é mais curto do que quando o fazemos com APIs puras. Vejamos o código do arquivo prog13.inc:
Esta é a função principal do nosso programa porque é a responsável por mostrar a janela que está nos recursos. Além disto, ela indica o endereço onde se encontram seus processos. Vejamos para que serve cada um dos parâmetros:
- hInstance - especificamos o manipulador da instância do módulo.
- lpTemplate - especificamos a ID da nossa caixa de diálogo. Podemos determinar esta ID nas propriedades da caixa:
A ID da nossa caixa é 101 e o nome é IDD_DIALOG1. Estes dados devem ser declarados no nosso arquivo INC, na seção const:
- hWndParent - definimos o handle ao qual pertence a janela. Aqui colocamos NULL porque nossa janela é a principal. Caso fosse a segunda janela, especificaremos o handle da primeira janela (mãe).
- lpDialogFunc - definimos o endereço da etiqueta onde se encontram os procedimentos:
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM mov eax,uMsg .if eax==WM_INITDIALOG .elseif eax==WM_COMMAND .elseif eax==WM_CLOSE invoke EndDialog,hWin,0 .else mov eax,FALSE ; movemos para EAX o valor 0 para reciclar as mensagens que não ; utilizamos. Se não fizermos isto, não será ;compatível com windows XP e NT ret .endif mov eax,TRUE ret DlgProc endp Como observamos, este procedimento nos é familiar pois é parecido com os processos das janelas feitas com APIs puras que criamos no capítulo anterior. Toda janela gerencia as mesmas mensagens, com exceção de algumas que são apenas para Dialog. Por exemplo, a mensagem WM_INITDIALOG é enviada antes de mostrar a caixa de diálogo no desktop. Como diferenciamos as mensagens que são apenas para caixas de diálogo? Simples, porque no final da mensagem aparece a palavra DIALOG. - dwInitParam - definimos o valor inicial que queremos para o parâmetro lParam. Como isto não será usado, colocamos o valor NULL.
- Anterior
- Próximo >>