Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsiyi.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
188.29 Кб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]