рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ MASM рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

2001 рдореЗрдВ рд╡рд╛рдкрд╕, рдореИрдВрдиреЗ Win32 рдХреЗ рддрд╣рдд рд╡рд┐рдзрд╛рдирд╕рднрд╛ рднрд╛рд╖рд╛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ред рдлрд┐рд░, рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рд╕реМ рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдкреАрдбрд╝рд╛ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рднрд╛рдЧреНрдп рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд░рд╛рд╣рдд рджреЗрдирд╛ рдФрд░ рдХреЛрдб рдХреЗ рд╡рд┐рд╢рд╛рд▓ рддреМрд▓рд┐рдпреЗ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВред



рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрдпрд╛ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╢рд╛рдпрдж рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ ...







рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛


рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рд╕рдВрд▓рдЧреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИред



\ _ рдореИрдХреНрд░реЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдХреИрдЯрд▓реЙрдЧ
Macros.Inc рдпрд╣рд╛рдВ рд╡реЗ рдмреБрдирд┐рдпрд╛рджреА рдореИрдХреНрд░реЛ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА Win32 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдореЗрдореЛрд░реА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ, рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢рди рдХреА рд╕реБрд╡рд┐рдзрд╛, рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдЗрддреНрдпрд╛рджрд┐ рд╣реИрдВред
Window.Mac рдореИрдХреНрд░реЛрдЬрд╝ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ
Status.Mac рдкрдВрдХреНрддрд┐ рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝
Menu.Mac рдореЗрдиреВ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝
Quake.Bmp рдЕрдкрд▓реЛрдб рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ
Scull.Ico рдЫрд╡рд┐ рдЪрд┐рд╣реНрди (рд╕рд┐рд░реНрдл рдПрдХ рд╢рд╛рд░реНрдж)
Rsrc.rc рд╕рдВрд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓
Window.Asm рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓
Window.Exe рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо
WndExample.Asm рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ "рдЙрджрд╛рд╣рд░рдг" рд╡рд┐рдВрдбреЛ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ


Window.Exe рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд┐рдВрдбреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:



рдЫрд╡рд┐



рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо, рдХреЛрдИ рдЦрд┐рдбрд╝рдХреА рдирд╣реАрдВ




include macros\macros.inc @Start @Uses kernel32 .code WinMain Proc invoke ExitProcess, 0 WinMain Endp End WinMain
      
      







рдпрд╣рд╛рдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореБрдЦреНрдп рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реИ, рдлрд┐рд░ рд╕реНрдЯрд╛рд░реНрдЯ рдореИрдХреНрд░реЛ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдореЙрдбрд▓, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрд╕реЗрд╕рд░, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдЙрдкрдпреЛрдЧ рдореИрдХреНрд░реЛ рд╣реИ, рдЗрд╕рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдХрд░реНрдиреЗрд▓ 32.dll рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХреНрдЬрд╝рд┐рдЯрдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИред



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд .code рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЛрдб рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрдк рдЬреЛ рдЪрд╛рд╣реЗрдВ рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдмреБрд▓рдбреЛрдЬрд░ рд╕реЗ рд╕рд┐рд░реНрдл WinMain рдирд╛рдо рджрд┐рдпрд╛ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ {Input_function_name_name} рд╣реИ



рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ - рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб:

 include macros\macros.inc IDC_MAINSTATUS Equ 1 IDC_MENUEXIT Equ 10 @Start @Uses gdi32, user32, comctl32, kernel32 .xlist include macros\Menu.mac include macros\Window.mac include macros\Status.mac .list .data? hIcon Dd ? hBrush Dd ? hCursor Dd ? hImage Dd ? hInstance Dd ? @DefineMenu Menu @DefineStatus Example @DefineWindow Example .code ; Main program cycle WinMain Proc mov hInstance, @Result(GetModuleHandle, NULL) mov hIcon, @Result(LoadIcon, hInstance, 100) mov hCursor, @Result(LoadCursor,NULL,IDC_ARROW) mov hBrush, @Result(GetSysColorBrush, COLOR_APPWORKSPACE) @CreateWindow Example, hInstance, NULL,'Example_wnd', \ WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_VISIBLE, \ WS_EX_APPWINDOW, 'Example', \ hIcon, hBrush, hCursor, NULL @SetWndSize Example, 700, 600 @MoveWnd Example, 100, 100 @CreateMenu Menu @AppendMenu Menu, 'Exit', IDC_MENUEXIT @AttachMenu Example, Menu @CreateStatus Example, Example, IDC_MAINSTATUS @SetStatusParts Example, 2,300,-1,0,0,0,0,0,0,0,0 @SetStatusText Example, 'Example program window...', 0, 0 @SetStatusText Example, 'The CHEMI$T Copyright(C)2001', 0, 1 @ProcessMsgs Example, FALSE @DestroyMenu Menu @DestroyWindow Example invoke ExitProcess, 0 WinMain Endp End WinMain
      
      







рдЕрдм рдореИрдВ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд╕реНрд░реЛрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЗрдиреВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝, рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░, рдФрд░ рд╡рд┐рдВрдбреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдореИрдХреНрд░реЛ рдЕрд╕реЗрдореНрдмрд▓рд░ рдХреА рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдбреНрд╕ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдлрдВрд╕рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реВрдЪреА (рд╕реВрдЪреА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛) рдФрд░ рд╕реВрдЪреА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ (рдпрд╣ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрджрд┐ рд╕реВрдЪреА рдХреЛ рдореИрдХреНрд░реЛ рдЕрд╕реЗрдореНрдмрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рдерд╛ / рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдкрд╛рд░реНрд╕рд▓ / рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдЕрд╕рдорд╛рди рдмреНрд▓реЙрдХ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдбреЗрдЯрд╛ рдбреЗрдЯрд╛ ? , рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдЪрд░ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдмрд╕ рдЗрд╕реЗ рд░реАрд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдмрд┐рдирд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рднреА рдореЗрдореЛрд░реА рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ WinMain рдкрджреНрдзрддрд┐ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИред

рдореИрдХреНрд░реЛрдЬрд╝ @DefineMenu, @DefineStatus рдФрд░ @DefineWindow рдЙрди рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ / рдореЗрдиреНрдпреВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░, рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд╡рд┐рдВрдбреЛ, рдХреНрд░рдорд╢рдГ, рд╕реНрдЯреЛрд░ / рд╣реЛрдВрдЧреЗ

рдФрд░ рд╕рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХрддрд╛рдУрдВ рдХреЗ рдмрд╛рдж, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рд╣реЛрддреА рд╣реИред

рдкрд╣рд▓реА рдЪрд╛рд░ рдкрдВрдХреНрддрд┐рдпрд╛рдБ

  mov hInstance, @Result(GetModuleHandle, NULL) mov hIcon, @Result(LoadIcon, hInstance, 100) mov hCursor, @Result(LoadCursor,NULL,IDC_ARROW) mov hBrush, @Result(GetSysColorBrush, COLOR_APPWORKSPACE)
      
      





рд╡рд┐рдВрдбреЛ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЖрдЗрдХрди, рдХрд░реНрд╕рд░, рдмреНрд░рд╢ рдХреЗ рдЪрд░ / рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореИрдХреНрд░реЛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ EAX рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдореИрдХреНрд░реЛ рдирд╣реАрдВ рдерд╛, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рд╕рдорд╛рди рдХреЛрдб рдореЗрдВ рдЯреВрдЯ рдЧрдИ рдереА:

  invoke GetModuleHandle, NULL mov hInstance, eax
      
      





рд╡рд┐рдВрдбреЛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, @CreateWindow - рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддрд╛ рд╣реИ, @SetWndSize - рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, @Move рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЗрдЪреНрдЫрд┐рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, @ProcessMsgs рдЖрдкрдХреА рд╡рд┐рдВрдбреЛ рдкрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдореБрдЦреНрдп рдЪрдХреНрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, @DestroyWindow - delete рдПрдХ рдЦрд┐рдбрд╝рдХреАред рдЬрдм рдЖрдк рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдпрд╣ WndExample.Asm рдлрд╝рд╛рдЗрд▓ рд╣реИред рдпрд╣ рдирд╛рдо рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдорд╛рд╕реНрдХ Wnd <window_name> .Asm рджреНрд╡рд╛рд░рд╛ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдП

рдореИрдВрдиреЗ рдореЗрдиреВ рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕реНрдЯреЗрдЯрд╕ рд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЬрд╝рд░реВрд░рдд рдереАред

рдореЗрдиреВ рдСрдкрд░реЗрд╢рди рдореИрдХреНрд░реЛрдЬрд╝:

@CreateMenu {Menu_name}

рд╡рд╛рдВрдЫрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдиреВ рдмрдирд╛рдПрдВ



@AppendMenu {Menu_name}, {Menu item_name рд╣реИрдбрд░}, {Message_code}

рд╡рд╛рдВрдЫрд┐рдд рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдиреВ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛ред рдЗрд╕ рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рд╕рдВрджреЗрд╢ рдХреЛрдб рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдЧрд╛ред



@AttachMenu {WindowName}, {MenuName}

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рдореЗрдиреВ рдЬреЛрдбрд╝рдирд╛ред



рд╕реНрдерд┐рддрд┐ рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ / ComCtl32 / рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

@CreateStatus {String_StatusName}, {Window_Name}, {String_StatusName}

рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдирд╛



@SetStatusParts {String_Status_name}, {Of_parts}, {Part_width}, {}, {}, {}, {} / рджрд╕ рднрд╛рдЧреЛрдВ рддрдХ, рдЕрдВрддрд┐рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░ -1/1 рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЦрд┐рдВрдЪрд╛рд╡ /

рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдЗрд╕ рдореИрдХреНрд░реЛ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддрдм рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛



@SetStatusText {String_Status_name}, {рдкрд╛рда}, {рд╢реИрд▓реА / рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рдХреНрдпреЛрдВ /}, {String_status_part}

рд╕реНрдЯреЗрдЯрд╕ рд▓рд╛рдЗрди рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рдЧ рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕ рд╕реЗрдЯ рдХрд░рдирд╛





рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рд╛рдЗрд▓


рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВрдбрд▓рд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рдореЗрдиреВ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рднреА рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдВрдбреЛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

@WndHandlerStart {WindowName}, {рд╣реИрдВрдбрд▓рд░рдирд╛рдо}



Mov eax, TRUE

@WndHandlerEnd {WindowName}, {рд╣реИрдВрдбрд▓рд░рдирд╛рдо}



рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

 @WndProcedureBegin Example, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT ; Menu handlers @WndMenuHandler IDC_MENUEXIT, Exit ; Sample user handler @WndUserHandler Example, WM_SIZING @WndProcedureEnd Example
      
      





рдпрд╣рд╛рдВ, рдПрдХ рдореЗрдиреВ рдЖрдЗрдЯрдо рд╣реИрдВрдбрд▓рд░ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ Exit рдирд╛рдордХ рдПрдХ Message_Code IDC_MENUEXIT рд╣реИрдВрдбрд▓рд░ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдПрдХ рдХрд╕реНрдЯрдо WM_SIZING рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рднреА рдкрдВрдЬреАрдХреГрдд рд╣реИред рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрд╛рд╕ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХрд╛ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХрд╛ рд╡рд╣ рд╕рдВрд╕рд╛рдзрди рд╣реИред рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ Window.Mac рдлрд╝рд╛рдЗрд▓ рдореЗрдВ @WndProcedureBegin рдореИрдХреНрд░реЛ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдХреНрд▓реЛрдЬ, рдкреЗрдВрдЯ, рд╣реЗрд▓реНрдк, рдПрдХреНрдЯрд┐рд╡реЗрдЯ, рдбреАрдПрдХреНрдЯреАрд╡реЗрдЯ, рд╕реАрд╕рдореЛрдореИрдВрдб, рд╢реЛ, рд╣рд╛рдИрдб, рдХреНрд░рд┐рдПрдЯ, рдирд╖реНрдЯ, рдХреАрдбрд╛рдЙрди, рдХреАрдк, рд░рд┐рд╕рд╛рдЗрдЬ, рдбрдмреНрд▓рд┐рдХ, рдорд╛рдЙрд╕рдЕрдк, рдорд╛рдЙрд╕рдбрд╛рдЙрди, рд╡реНрд╣реАрд▓рдбрд╛рдЙрди, рд╡реНрд╣реАрд▓рдЕрдкред рдЗрди рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд░реЛрдд рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдЖрдк рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдл 1 рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдХреЛ рд╕реНрдкрд┐рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрди рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдм рдХреБрдЫ MSDN рдФрд░ рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред





рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрдХрд▓рди




рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП masm32 рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ( рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )ред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрде рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд▓рд┐рдП masm32 \ bin рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ masm32 / bin / build.bat рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ ред рдПрдордПрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдордВрдЧрд▓рд╛рдЪрд░рдг рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрдереЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдХреЛрдб рдореЗрдВ рдкрде рдбреЗрдЯрд╛ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред



рдЗрд╕рд▓рд┐рдП ML.Exe рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ / IF: \ masm32 \ _ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - F: \ masm32 рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдЙрд╕ рдкрде рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ masm32 рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдФрд░ Link.exe рд▓рд┐рдВрдХрд░ рдХреА рджреЛ рдХреЙрд▓ рдореЗрдВ, рдЖрдкрдХреЛ / LIBPATH рд╡рд┐рдХрд▓реНрдк: F: \ masm32 \ lib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрде рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рд╕реЗ, рдЙрд╕ рдкрде рдХреЛ рдмрджрд▓реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред



рдЕрдЧрд▓рд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рд╣рдо рджреЛ рдХрдорд╛рдВрдб рджреЗрддреЗ рд╣реИрдВ: bres ( bres.bat рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ rsrc.rc рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдлрд┐рд░ рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ ( рдмрд┐рд▓реНрдб.bat - рд╕рдВрдХрд▓рди рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИ)ред



рдЧрд┐рдЯрд╣рдм рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ



All Articles