Sei sulla pagina 1di 3

.

386
.model flat, stdcall ;Modelo de memria 32 bits
option casemap :none ;Modo case sensitive
include
include
include
;include
;include

windows.inc
kernel32.inc
user32.inc
Comctl32.inc
shell32.inc

includelib
includelib
;includelib
;includelib

kernel32.lib
user32.lib
Comctl32.lib
shell32.lib

DlgProc

PROTO

:HWND,:UINT,:WPARAM,:LPARAM

.const
IDD_MAIN

equ 101

BOTAO_SOBRE
equ 1000
BOTAO_SAIR
equ 1001
BOTAO_SOMAR
equ 1002
BOTAO_SUBTRAIR
equ 1003
BOTAO_MULTIPLICAR equ 1004
BOTAO_DIVIDIR
equ 1005
EDIT_VALOR1
equ 102
EDIT_VALOR2
equ 103
EDIT_RESULTADO equ 107
.data
titulo_sobre
texto_sobre

db "Sobre", 0
db "Programa desenvolvido por Eduardo Andr Konzen", 0

titulo_sair
texto_sair
hInstance

db "Aviso",0
db "Voce deseja mesmo Sair?",0
dd
?

valor1
valor2
resultado

dd 0
dd 0
dd 0

.code
start:
invoke GetModuleHandle,NULL; retorna ponteiro dizendo quem o aplicativo
e salva em um registrador
mov
hInstance,eax
;invoke InitCommonControls
invoke DialogBoxParam,hInstance,IDD_MAIN,NULL,addr DlgProc,NULL; regist
ra no sistema operacional
invoke ExitProcess,0
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

mov
.IF

eax,uMsg
eax==WM_INITDIALOG
;coisas a fazer na abertura ou inicio do programa

.ELSEIF eax==WM_COMMAND; botes checkbox ficam nesse comando, mas necessrio


ler ainda o parametro
mov
edx,wParam
movzx eax,dx
shr
edx,16
.IF edx==BN_CLICKED
.IF eax==BOTAO_SAIR
invoke MessageBox, hWin, addr texto_sair, addr t
itulo_sair, MB_YESNO or MB_ICONEXCLAMATION
.IF eax== IDYES
invoke EndDialog,hWin,0
.endif
.ELSEIF eax==BOTAO_SOBRE
INVOKE MessageBox,hWin, addr texto_sobre, addr t
itulo_sobre, MB_OK
.ELSEIF eax==BOTAO_SOMAR
INVOKE GetDlgItemInt, hWin, EDIT_VALOR1, NULL, T
RUE
mov valor1, eax
INVOKE GetDlgItemInt, hWin, EDIT_VALOR2, NULL, T
RUE
mov valor2, eax
add eax, valor1
mov resultado, eax
invoke SetDlgItemInt, hWin, EDIT_RESULTADO, eax,
TRUE
.ELSEIF eax==BOTAO_SUBTRAIR
INVOKE GetDlgItemInt, hWin, EDIT_VALOR2, NULL, T
RUE
mov valor2, eax
INVOKE GetDlgItemInt, hWin, EDIT_VALOR1, NULL, T
RUE
mov valor1, eax
SUB eax, valor2
mov resultado, eax
invoke SetDlgItemInt, hWin, EDIT_RESULTADO, eax,
TRUE
.ELSEIF eax==BOTAO_MULTIPLICAR
INVOKE GetDlgItemInt, hWin, EDIT_VALOR1, NULL, T
RUE
mov valor1, eax
INVOKE GetDlgItemInt, hWin, EDIT_VALOR2, NULL, T
RUE
mov valor2, eax
mov ebx, valor1

mul ebx
mov resultado, eax
invoke SetDlgItemInt, hWin, EDIT_RESULTADO, eax,
TRUE
.ELSEIF eax==BOTAO_DIVIDIR
INVOKE GetDlgItemInt, hWin, EDIT_VALOR2, NULL, T
RUE
mov valor2, eax
INVOKE GetDlgItemInt, hWin, EDIT_VALOR1, NULL, T
RUE
mov valor1, eax
mov ebx, valor2
div ebx
mov resultado, eax
invoke SetDlgItemInt, hWin, EDIT_RESULTADO, eax,
TRUE
.ENDIF
.ENDIF
.ELSEIF eax==WM_CLOSE
invoke EndDialog,hWin,0
.ELSE
mov
eax,FALSE
ret
.ENDIF
mov
eax,TRUE
ret
DlgProc endp
end start

Potrebbero piacerti anche