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

Tutoriais

Na Aldeia

Há 106 visitantes online

3630 registros
0 hoje
14 nesta semana
4 neste mês

Boas vindas: flor

Estatística

Membros: 3639
Artigos: 1045
Links: 90
Leituras: 6681044

Login



Kanji da hora




Faça contato






Qui

20

Dez

2007


07:03

Cap. VI - Caixas de Diálogo PDF Imprimir Indique esta página
(5 votos, média 4.2 de 5)
Escrito por Alan Moreno   


Í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

vovo Vicki 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 ( Qui, 18.06.2009 11:26 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons