Invoke LoadCursor,0,IDC_ARROW ; курсор - cтандартна стрілка

mov wc.hCursor,eax

invoke RegisterClassEx,addr wc ; регістрація класу вікна

invoke CreateWindowEx, ; функція створення вікна за зразком

NULL,ADDR ClassName, ; стиль та адреса імені класу

ADDR AppName,WS_OVERLAPPEDWINDOW, ; адреса імені вікна,баз. стиль

500,500,400,120,0,0,hInst,0 ; коорд., дескриптори вікна, меню, програми

mov hwnd,eax

invoke ShowWindow,hwnd,SW_NORMAL

invoke UpdateWindow, hwnd

.WHILE TRUE ; поки істинне, то

invoke GetMessage,AddR msg, NULL,0,0 ; читання повідомлення

or eax,eax

jz Quit

invoke DispatchMessage,AddR msg ; відсилання повідомлення проц. вікна

.ENDW ; закінчення циклу оброблення повідомлень

Quit:

mov eax,msg.wParam

ret ; повернення з процедури

WinMain endp ; закінчення процедури з ім’ям WinMain

 

WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

LOCAL hdc:HDC ; резервування стека під хендл вікна

LOCAL hkey:HKEY

.IF uMsg==WM_DESTROY ; обробка повідомлення про знищення вікна

invoke PostQuitMessage,0 ; передача повідомлення про знищення

.ELSEIF uMsg==WM_COMMAND ; обробка повідомлень від меню

mov eax,wParam ; збереження ідентифікатора кнопки меню

.IF ax==IDM_CREATEKEY ; якщо вибрана кнопка "Создать ключ"

invoke RegCreateKeyEx,HKEY_CURRENT_USER, ADDR szTestKey,0,

ADDR szREGSZ, REG_OPTION_VOLATILE, ; опції ключа

KEY_ALL_ACCESS, ; права доступу до ключа

0,ADDR hKey, ; адреса за запису хендлу створюваного ключа

ADDR lpdwDisp ; місце для зберігання інформації про створений ключ

.IF eax == ERROR_SUCCESS ; ключ створено успішно ?

;invoke RegQueryValueEx,hKey,ADDR szValueName1,0,0,ADDR getValue1,

; ADDR ValSize1 ; функція відновлення типу та даних відкритого ключа

invoke RegSetValueEx, ; встановлення значення для вказаного ключа

hKey,ADDR szValueName1, ; ім'я ключа для установки

0,REG_SZ, ; 0, рядок з назвою ключа має 0 на кінці

ADDR setValue, ; розмір ключа в байтах

ValSize1 ; розмір ключа в байтах

invoke RegCloseKey,hKey ; ідентифікація відкритого ключа для закриття

.ENDIF

.ELSEIF ax==IDM_DELETEKEY ; якщо вибрана кнопка "Удалить ключ"

invoke RegDeleteKey,HKEY_CURRENT_USER,ADDR szTestKey

.IF eax == ERROR_SUCCESS ; ключ створено успішно ?

invoke RegCloseKey,hKey ; закриття ключа в системному реєстрі