Файл, содержащий текст приложения, dlg.asm
IDEAL
P586
RADIX 16
MODEL FLAT
%NOINCL
%NOLIST
include "winconst.inc" ; API Win32
consts
include "winptype.inc" ; API Win32
functions prototype
include "winprocs.inc" ; API Win32
function
include "resource.inc" ; resource
consts
MAX_USER_NAME = 20
DataSeg
szAppName db 'Demo 1', 0
szHello db 'Hello, '
szUser db MAX_USER_NAME dup (0)
CodeSeg
Start: |
call |
GetModuleHandleA, |
0 |
|
call |
DialogBoxParamA, |
eax,
IDD_DIALOG, 0, offset DlgProc,
0 |
|
cmp |
eax,
IDOK |
|
|
jne |
bye |
|
|
call |
MessageBoxA, |
0,
offset szHello, \ |
|
|
|
offset
szAppName, \ |
|
|
|
MB_OK
or MB_ICONINFORMATION |
bye: |
call |
ExitProcess, |
0 |
public |
stdcall
DlgProc |
proc |
DlgProc
stdcall |
arg |
@@hDlg
:dword, @@iMsg :dword, @@wPar
:dword, @@lPar :dword |
|
mov |
eax,[@@iMsg] |
|
cmp |
eax,WM_INITDIALOG |
|
je |
@@init |
|
cmp |
eax,WM_COMMAND |
|
jne |
@@ret_false |
|
|
mov |
eax,[@@wPar] |
|
cmp |
eax,IDCANCEL |
|
je |
@@cancel |
|
cmp |
eax,IDOK |
|
jne |
@@ret_false |
|
|
|
|
call |
GetDlgItemTextA, |
@@hDlg, IDR_NAME,
\ |
|
|
|
offset szUser,
MAX_USER_NAME |
|
mov |
eax,IDOK |
@@cancel: |
call |
EndDialog, |
@@hDlg, eax |
|
@@ret_false: |
xor |
eax,eax |
|
|
ret |
|
@@init: |
call |
GetDlgItem, |
@@hDlg, IDR_NAME |
|
call |
SetFocus, |
eax |
|
jmp |
@@ret_false |
endp DlgProc |
end
Start |
|
Файл ресурсов dlg.rc
#include "resource.h"
IDD_DIALOG DIALOGEX 0, 0, 187, 95
STYLE DS_MODALFRAME | DS_3DLOOK |
WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_CLIENTEDGE
CAPTION "Dialog"
FONT 8, "MS Sans Serif"
BEGIN
|
DEFPUSHBUTTON |
"OK",IDOK,134,76,50,14 |
|
PUSHBUTTON |
"Cancel",IDCANCEL,73,76,50,14 |
|
LTEXT |
"Type your name",IDC_STATIC,4,36,52,8 |
|
EDITTEXT |
IDR_NAME,72,32,112,14,ES_AUTOHSCROLL |
END |
Остальные файлы из данного
примера, приведены в Приложении
1.
|