Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Home Informática Tutoriais MASM Cap. VI - Caixas de Diálogo

Na Aldeia

Há 113 visitantes online

2796 registros
0 hoje
6 nesta semana
4 neste mês

Boas vindas: delilah

Estatística

Artigos: 847
Artigos lidos: 3919054
Arquivados: 41
Downloads: 416
Baixados: 161778
Glossário: 1198
Bibliografia: 24
JoomlaWatch Stats 1.2.7 by Matej Koval

Visitas de onde?

88,3%Brasil Brasil
9,2%Portugal Portugal
0,8%EUA EUA
0,2%Espanha Espanha
0,1%Alemanha Alemanha

Visitantes

Hoje: 484
Ontem: 1940
Esta semana: 2424
Semana passada: 12942
Este mês: 2424
Mês passado: 52379
Total: 123709

Registro/Login

Para fazer login ou registrar-se

Usuários registrados têm algumas regalias!

Qui

20

Dez

2007


08:03

Cap. VI - Caixas de Diálogo PDF Imprimir Indique esta página
Avaliação: / 2
PiorMelhor 
Tutoriais - MASM + RadASM
Escrito por vovó Vicki   


Índice do Artigo
Cap. VI - Caixas de Diálogo
Exercício
Mais um exercício
Exercícios e Download
Todas as páginas

Nível Intermediário

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:

Vídeo 1
prog13.exe

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:

Biblioteca user32.lib
 
DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL

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:
    Propriedades
    Fig. 1

    A ID da nossa caixa é 101 e o nome é IDD_DIALOG1. Estes dados devem ser declarados no nosso arquivo INC, na seção const:
    Declarações
    Fig. 2

  • 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.


Última atualização ( Sáb, 26.04.2008 21:35 )
 

Topo

Topo