Ассемблер для Windows


         

определение диалогового окна DIAL1 DIALOG


// идентификаторы #define STR1 1 #define STR2 2 #define IDI_ICON1 3

// определили иконку IDI_ICON1 ICON "ico1.ico"

// определение диалогового окна DIAL1 DIALOG 0, 0, 240, 120 STYLE WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX CAPTION "Пример диалогового окна" FONT 8, "Arial" { }

// определение строк STRINGTABLE { STR1, "Сообщение" STR2, "Версия программы 1.00" }

; файл dial.inc ; константы

; сообщение приходит при закрытии окна WM_CLOSE equ 10h WM_INITDIALOG equ 110h WM_SETICON equ 80h ; прототипы внешних процедур EXTERN MessageBoxA@16:NEAR EXTERN ExitProcess@4:NEAR EXTERN GetModuleHandleA@4:NEAR EXTERN DialogBoxParamA@20:NEAR EXTERN EndDialog@8:NEAR EXTERN LoadStringA@16:NEAR EXTERN LoadIconA@8:NEAR EXTERN SendMessageA@16:NEAR ; структуры ; структура сообщения MSGSTRUCT STRUC MSHWND DD ? MSMESSAGE DD ? MSWPARAM DD ? MSLPARAM DD ? MSTIME DD ? MSPT DD ? MSGSTRUCT ENDS

;файл dial.asm .386P

; плоская модель .MODEL FLAT, stdcall include dial.inc

; директивы компоновщику для подключения библиотек includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib ;--------------------------------------------------

; сегмент данных _DATA SEGMENT DWORD PUBLIC USE32 'DATA' MSG MSGSTRUCT <?> HINST DD 0 ; дескриптор приложения PA DB "DIAL1",0 BUF1 DB 40 dup(0) BUF2 DB 40 dup(0) _DATA ENDS

; сегмент кода _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' START: ; получить дескриптор приложения PUSH 0 CALL GetModuleHandleA@4 MOV [HINST],EAX ;------ ; загрузить строку PUSH 40 PUSH OFFSET BUF1 PUSH 1 PUSH [HINST] CALL LoadStringA@16 ; загрузить строку PUSH 40 PUSH OFFSET BUF2 PUSH 2 PUSH [HINST] CALL LoadStringA@16 ;------------------------------------------------------------ PUSH 0 ; MB_OK PUSH OFFSET BUF1 PUSH OFFSET BUF2 PUSH 0 CALL MessageBoxA@16 ; создать диалоговое окно PUSH 0 PUSH OFFSET WNDPROC ; процедура окна PUSH 0 PUSH OFFSET PA ; название ресурса (DIAL1) PUSH [HINST] CALL DialogBoxParamA@20 CMP EAX,-1 JNE KOL KOL: PUSH 0 CALL ExitProcess@4 ;--------------------------


Содержание  Назад  Вперед