CmdShow это флаг, который определяет,
CmdLine указатель на коммандную строку.
CmdShow это флаг, который определяет, как должно быть показанно окно. (Подробнее об этом, вы можете найти в справочнике API функция ShowWindow).
Теперь мы можем написать наш код инициализации в WinMain:
WinMain proc hInst:DWORD, hPrevInst:DWORD, CmdLine:DWORD, CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL hwnd:DWORD
ret
WinMain endp
Здесь мы резервируем две локальные переменные, они нам понадобятся в этой процедуре.
.data
ClassName db "FirstWindowClass",0
.code
WinMain proc hInst:DWORD, hPrevInst:DWORD, CmdLine:DWORD, CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL hwnd:DWORD
; now set all the structure members of the WNDCLASSEX structure wc:
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 hInst
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon, eax
mov wc.hIconSm, eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, ADDR wc
ret
WinMain endp
Давайте посмотрим, что получается:
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
Размер структуры инициализирован (это требуется RegisterClassEx). Стиль класса установлен в "CS_HREDRAW or CS_VREDRAW", затем установлен указатель оконной процедуры. Позже вы узнаете, что такое оконная процедура, а сейчас запомните, что вам нужен адрес процедуры WndProc, который вы сможете получить 'offset WndProc'. CbClsExtra и cbWndExtra не используются нами, так что установите их в NULL.
push hInst
pop wc.hInstance
В wc.hInstance устанавливается хэндл модуля, параметр процедуры WinMain. А почему мы не используем: mov wc.hInstance, hInst? Потому, что команда mov не позволяет перемещать данные из одной ячейки памяти в другую. Здесь мы копируем методом push/pop, значение помещается в стек, а затем извлекается туда, куда нам надо.
Содержание Назад Вперед