
- •Idi_application equ 32512
- •Idc_cross equ 32515
- •X word ?
- •Invoke Sleep, 5000
- •X word ?
- •Idi_application equ 32512
- •Idc_cross equ 32515
- •X dword ?
- •Xm dword ?
- •Xp dword ?
- •Idi_icon1 icon "calculator.Ico"
- •Idi_bit1 bitmap "picture1.Bmp"
- •Idi_bit2 bitmap "picture2.Bmp"
- •Idi_icon1 icon "calculator.Ico"
- •Xm dword ?
- •Xp dword ?
- •Idi_icon1 icon "calculator.Ico"
- •Vk_f5, 4, virtkey, alt
- •Xm dword ?
- •Xp dword ?
Idi_icon1 icon "calculator.Ico"
#define IDI_BIT1 2
Idi_bit1 bitmap "picture1.Bmp"
#define IDI_BIT2 3
Idi_bit2 bitmap "picture2.Bmp"
#define WS_SYSMENU 0x00080000L
#define WS_MINIMIZEBOX 0x00020000L
#define WS_MAXIMIZEBOX 0x00010000L
#define WS_POPUP 0x80000000L
#define WS_CAPTION 0x00C00000L
MENUP MENU
{
POPUP "File"
{
MENUITEM "&Open", 1
MENUITEM "R&ename", 2
MENUITEM "&Save", 3
}
POPUP "String"
{
MENUITEM "Firs&t - Help", 4,
POPUP "Seco&nd",
{
MENUITEM "Next punk&t", 5,
}
POPUP "Thir&d", Grayed
{
MENUITEM "Next punk&t", 6, Inactive
}
}
MENUITEM "Ex&it", 9
}
#define STR1 11
#define STR2 12
#define IDI_ICON1 100
Idi_icon1 icon "calculator.Ico"
DIAL1 DIALOG 0, 0, 240, 120
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
CAPTION "Приклад діалогового вікна"
FONT 10, "Arial"
{
}
STRINGTABLE
{
STR1, "Повідомлення"
STR2, "Версія программи 1.00"
}
;сегмент даних
_DATA SEGMENT DWORD PUBLIC USE32 'DATA'
NEWHWND DD 0
MSG MSGSTRUCT <?>
WC WNDCLASS <?>
RC RECT <?>
PNT PAINTSTR <?>
pPoint POINT <?>
HINST DD 0 ;дескриптор додатку
TITLENAME DB 'Малюнки', 0
CLASSNAME DB 'CLASS32', 0
CAP DB 'Повідомлення', 0
MES1 DB 'Ви натиснули ліву кнопку мишки', 0
MES2 DB 'Вихід з програми', 0
HDC DWORD ?
MEMDC DWORD ?
YM DWORD ?
Xm dword ?
P DWORD 0
Xp dword ?
YP DWORD ?
HBMP DWORD ?
BUF1 DB 200 dup (?)
BUF2 DB 200 dup (?)
PA DB 'DIAL1',0
PMENU DB "MENUP",0
_DATA ENDS
;---------------------------------------------------------
; сегмент коду
_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'
START:
;отримати дескриптор додатку
PUSH 0
CALL GetModuleHandleA@4
MOV [HINST], EAX
;------------------------
PUSH 40
PUSH OFFSET BUF1
PUSH 11
PUSH [HINST]
CALL LoadStringA@16
;------------------------
PUSH 40
PUSH OFFSET BUF2
PUSH 12
PUSH [HINST]
CALL LoadStringA@16
;------------------------ створення діалогового вікна
PUSH 0
PUSH OFFSET WNDPROC ;процедура вікна
PUSH 0
PUSH OFFSET PA ;ім'я ресурсу (DIAL1).
PUSH [HINST]
CALL DialogBoxParamA@20
;------------------------
PUSH 0
CALL ExitProcess@4
;------------------------------------------------------------
; процедура вікна
; розташування параметрів у стеку
; [EBP+14H] LPARAM
; [EBP+10H] WPARAM
; [EBP+0CH] MES
; [EBP+8Н] HWND
WNDPROC PROC
PUSH EBP
MOV EBP, ESP
PUSH EBX
PUSH ESI
PUSH EDI
CMP DWORD PTR [EBP+0CH],WM_CLOSE
JNE L1
;закрити діалогове вікно
PUSH 0
PUSH DWORD PTR [EBP+08H]
CALL EndDialog@8
JMP FINISH
L1:
CMP DWORD PTR [EBP+0CH],WM_INITDIALOG
JNE L2
;загрузка піктограми
PUSH 100
PUSH [HINST]
CALL LoadIconA@8
PUSH EAX
PUSH 0
PUSH WM_SETICON
PUSH DWORD PTR [EBP+08H]
CALL SendMessageA@16
;загрузити меню
PUSH OFFSET PMENU
PUSH [HINST]
CALL LoadMenuA@8
;встановлення меню
PUSH EAX
PUSH DWORD PTR [EBP+08H]
CALL SetMenu@8
JMP FINISH
L2:
;перевірка дій з елементами діалогового вікна
;в даному випадку - це меню
CMP DWORD PTR [EBP+0CH],WM_COMMAND
JNE FINISH
;перевірка ідентифікатора пункта меню
CMP WORD PTR [EBP+10H],4
JNE L3
;повідомлення
PUSH 0 ;МВ_ОК
PUSH OFFSET BUF2
PUSH OFFSET BUF1
PUSH 0
CALL MessageBoxA@16
L3:
;перевірка ідентифікатора пункта меню
CMP WORD PTR [EBP+10H],9
JNE FINISH
;закрити діалогове вікно
PUSH 0
PUSH DWORD PTR [EBP+08H]
CALL EndDialog@8
FINISH:
MOV EAX,0
POP EDI
POP ESI
POP EBX
POP EBP
RET 16
WNDPROC ENDP
_TEXT ENDS
END START
#define WS_SYSMENU 0x00080000L
#define WS_MINIMIZEBOX 0x00020000L
#define WS_MAXIMIZEBOX 0x00010000L
#define WS_POPUP 0x80000000L
#define WS_CAPTION 0x00C00000L
#define VK_F5 0x74
MENUP MENU
{
POPUP "File"
{
MENUITEM "&Open", 1
MENUITEM "R&ename", 2
MENUITEM "&Save", 3
}
POPUP "String"
{
MENUITEM "Firs&t - Help", 4,
POPUP "Seco&nd",
{
MENUITEM "Next punk&t", 5,
}
POPUP "Thir&d", Grayed
{
MENUITEM "Next punk&t", 6, Inactive
}
}
MENUITEM "Ex&it", 9
}
#define STR1 11
#define STR2 12
#define IDI_ICON1 100