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

Tutoriais

Na Aldeia

Há 103 visitantes online

3298 registros
0 hoje
3 nesta semana
35 neste mês

Boas vindas: sis.renato

Estatística

Artigos: 1063
Leituras: 6031562
Arquivados: 21
Downloads: 533
Baixados: 172135
Glossário: 1208
Bibliografia: 25
Links: 90

Visitas de onde

Top 5:
Brasil flag 73%Brasil (45653)
Portugal flag 5%Portugal (2911)
EUA flag 3%EUA (2059)
Rússia flag 0%Rússia (254)
Holanda flag 0%Holanda (237)
62522 visitas de 100 países

Hoje:117
Ontem:2517
No mês:36707
Mês passado:25815
Total:62522
Recorde:3037
No dia:04.03.10
Leituras hoje:17241
Leituras Total:271114
Bots hoje:36
Dados desde:16.02.2010

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