Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Заполнение структуры WNDCLASSEX требуемыми параметрами
mov wc.cbSize, sizeof WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, offset WndProc
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
push hlnst
pop wc.hlnstance
mov wc.hbrBackground, C0L0R_WIND0W-2
mov wc. IpszMenuName, NULL
mov wc.IpszClassName, offset szClassName
push IDI_APPLICATION
push NULL
call Loadlcon
mov wc.hlcon, EAX
push IDC_ARROW
push NULL
call LoadCursor
mov wc.hCursor, EAX
mov wc.hlconSm, 0
lea ЕАХ, wc
push ЕАХ
call RegisterClassEx
push NULL
push hlnst
push NULL
push NULL
push CW_USEDEFAULT
push CWJJSEDEFAULT
push CWJJSEDEFAULT
push CWJJSEDEFAULT
push WS_OVERLAPPEDWINDOW
push offset szDisplayName
push offset szClassName
push WS_EX_OVERLAPPEDWINDOW
call CreateWindowEx
mov hWnd, EAX
push SW_SHOWNORMAL
push hWnd
call ShowWindow
push hWnd
call Updatewindow

Цикл обработки сообщений
StartLoop:
push 0
push 0
push NULL
lea EAX, msg
push EAX
call GetMessage
cmp EAX, 0
lea EAX, msg
push EAX
call TranslateMessage
lea EAX, msg
push EAX
call DispatchMessage
jmp StartLoop
ExitLoop:
mov EAX, msg.wParam
ret
WinMain endp

Оконная процедура
WndProc proc hWin :DWORD,
uMsg :DWORD,
wParam :DWORD,
lParam :DWORD

Локальные переменные
LOCAL hdc :HDC
LOCAL ps :PAINTSTRUCT
LOCAL rect :RECT
LOCAL coord :DWORD
LOCAL hMenu :HMENU
cmp uMsg,WM_COMMAND
jne next_l
mov EAX, wParajm
cmp AX, IDM_TEXT11
jne check_textl2
invoke MessageBox, NULL, ADDR Textll, offset AppName, MB_OK
jmp ex_wmsys
je ExitLoop
check_textl2:
cmp АХ,IDM_TEXT12
jne check_exl
invoke MessageBox, NULL, ADDR Text12, offset AppName, MB_OK
jmp ex_wmsys
check_exl:
cmp AX,IDM_EXIT1
jne check_mesl
invoke MessageBox, NULL, ADDR Exl, offset AppName, MB_OK
jmp ex_wmsys
check_mesl:
cmp AX, IDM_MESSAGE1
jne next_menu
invoke MessageBox, hWin, ADDR Mesl, offset AppName, MB_OK
jmp ex_wmsys
next_menu:
cmp AX,IDM_TEXT21
jne check_text22
invoke MessageBox, NULL, ADDR Text21, offset AppName, MB_OK
jmp ex_wmsys
check_text22:
cmp AX,IDM_TEXT22
jne check_ex2
invoke MessageBox, NULL, ADDR Text22, offset AppName, MB_OK
jmp ex_wmsys
check_ex2:
cmp AX,IDM_EXIT2
jne check_mes2
invoke MessageBox, NULL, ADDR Ex2, offset AppName, MB_OK
jmp ex_wmsys
check_mes2:
cmp AX, IDM_MESSAGE2
jne ex_wmsys
invoke MessageBox, hWin, ADDR Mes2, offset AppName, MB_OK
ex_wmsys: ret
next_l:
cmp uMsg, WM_LBUTTONDOWN
jne next_2
invoke LoadMenu, hlnstance, ADDR MenuName2
mov hMenu, EAX
invoke SetMenu, hWin, hMenu
ret
next_2:
cmp uMsg, WM_RBUTTONDOWN
jne next_3
invoke LoadMenu, hlnstance, ADDR MenuNamel
mov hMenu, EAX
invoke SetMenu, hWin, hMenu
ret
next_3:
cmp uMsg, WM_DESTROY
jne next_4
push NULL
call PostQuitMessage
xor EAX, EAX
ret
next_4:
push lParam
push wParam
push uMsg
push hWin
call DefWindowProc
ret
WndProc endp
end start
}

Содержимое файла описания ресурсов этого приложения должно быть следующим:
#define IDM_TEXT11 1
#define IDM_TEXT12 2
#define IDM_EXIT1 3
#define IDMJMESSAGE1 4
#define IDM_TEXT21 5
#define IDM_TEXT22 б
#define IDM_EXIT2 7
#define IDM_MESSAGE2 8
MenuDemol MENU
{
POPUP "&TEXT1"
{
MENUITEM "&TEXT11", IDM_TEXT11
MENUITEM "T&EXT12", IDM_TEXT12
MENUITEM SEPARATOR
MENUITEM "E&xitl", IDM_EXIT1
}
MENUITEM "&MESSAGE1", IDM_MESSAGE1
}
MenuDemo2 MENU
{
POPUP "&TEXT2"
{
MENUITEM "&TEXT21", IDM_TEXT21
MENUITEM "T&EXT22", IDM_TEXT22
MENUITEM SEPARATOR
MENUITEM "E&xit2", IDM_EXIT2
}
MENUITEM "&MESSAGE2", IDM_MESSAGE2
380


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru