Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .386
- .MODEL FLAT, STDCALL
- include grafika.inc
- ExitProcess Proto :DWORD
- CSstyle EQU CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
- WNDstyle EQU WS_CLIPCHILDREN + WS_OVERLAPPEDWINDOW + WS_HSCROLL+WS_VSCROLL
- EDTstyle EQU WS_VISIBLE+WS_CHILD+WS_TABSTOP+WS_BORDER
- .data
- hinst DWORD 0
- msg MSGSTRUCT <?>
- wndc WNDCLASS <?>
- cname BYTE "MainClass", 0
- hwnd DWORD 0
- hdc DWORD 0
- tytul BYTE "Cegielka",0
- naglow2 BYTE "Kliknięto przycisk",0
- naglow BYTE "Kamil",0
- rozmN DWORD 0
- nagl BYTE "Komunikat", 0
- terr BYTE "blad!", 0
- terr2 BYTE "blad2!", 0
- ziemniaczek DWORD 0
- BSstyle EQU BS_PUSHBUTTON+WS_VISIBLE+WS_CHILD+WS_TABSTOP
- tstart BYTE "Start", 0
- tbutt BYTE "BUTTON", 0
- hbutt DWORD 0
- tstart2 BYTE "Kopiuj", 0
- hbutt2 DWORD 0
- hedt DWORD 0
- tedt BYTE "EDIT", 0
- tnazwaedt BYTE "POTATO", 0
- ttekst BYTE "tekst", 0
- bufor BYTE 128 dup(0)
- .code
- WndProc PROC uses EBX ESI EDI windowHandle:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
- .IF uMSG == WM_CREATE
- ;ZAD3
- INVOKE CreateWindowExA , 0, OFFSET tbutt, OFFSET tstart ,BSstyle , 10, 50, 100, 40, windowHandle , 0, hinst, 0
- MOV hbutt,EAX
- ;ZAD5
- INVOKE CreateWindowExA , 0, OFFSET tedt, OFFSET tnazwaedt ,EDTstyle , 10, 150, 100, 40, windowHandle , 0, hinst, 0
- mov hedt, EAX
- INVOKE SendMessageA , hedt,WM_SETTEXT ,0,OFFSET ttekst
- INVOKE SetFocus ,hedt
- ;ZAD6
- INVOKE CreateWindowExA , 0, OFFSET tbutt, OFFSET tstart2 ,BSstyle , 200, 50, 100, 40, windowHandle , 0, hinst, 0
- MOV hbutt2,EAX
- jmp wndend
- .ENDIF
- .IF uMsg == WM_COMMAND
- mov EAX,lParam
- ;ZAD4
- .IF EAX == hbutt
- INVOKE lstrlenA,OFFSET naglow2
- mov rozmN,EAX
- INVOKE TextOutA,hdc,200,100,OFFSET naglow2,rozmN
- INVOKE UpdateWindow,hwnd
- .ENDIF
- ;ZAD6
- .IF EAX == hbutt2
- INVOKE SendMessageA ,hedt,WM_GETTEXT ,128,OFFSET bufor
- INVOKE lstrlenA,OFFSET bufor
- mov rozmN,EAX
- INVOKE TextOutA,hdc,200,150,OFFSET bufor,rozmN
- INVOKE UpdateWindow,hwnd
- .ENDIF
- .ENDIF
- ;ZAD1
- INVOKE DefWindowProcA, windowHandle, uMsg, wParam, lParam
- wndend:
- ret
- WndProc ENDP
- main proc
- ;wypelnienie struktury wndc WNDClass
- ;pdf 4.1
- mov [wndc.clsStyle], CSstyle ;ustawienie pierwszego pola struktury
- mov [wndc.clsLpfnWndProc], OFFSET WndProc ;ustawieinie drugiego pola struktury
- INVOKE GetModuleHandleA, 0
- mov hinst, EAX
- mov [wndc.clsHInstance], EAX
- ;mov [wndc.clsCbClsExtra], 0
- ;mov [wndc.clsCbWndExtra], 0
- INVOKE LoadIconA,0,IDI_APPLICATION
- mov [wndc.clsHIcon], EAX
- INVOKE LoadCursorA,0,IDC_ARROW
- mov [wndc.clsHCursor], EAX
- INVOKE GetStockObject, LTGRAY_BRUSH
- mov [wndc.clsHbrBackground], EAX
- mov DWORD PTR [wndc.clsLpszClassName], OFFSET cname
- Invoke RegisterClassA, OFFSET wndc
- ;obsluga bledow
- .IF EAX == 0
- jmp err0
- .ENDIF
- ;utworzenie okna glownego aplikacji
- ;pdf 4.
- INVOKE CreateWindowExA, 0, OFFSET cname, OFFSET tytul, WNDstyle, 50, 50, 600, 400, 0, 0, hinst, 0
- ;sprawdzenie rejestru eax czy nastapil blad podczas tworzenia okna aplikacji
- .IF EAX == 0
- jmp err2
- .ENDIF
- ;zapis uchwytu do okna glownego do zmiennej, uchwyt w eax
- mov hwnd, EAX
- ;wyswietlenie okna
- ;4.9
- INVOKE ShowWindow, hwnd, SW_SHOWNORMAL
- ;ZAD2
- ;Pobranie kanwy głównego okna
- INVOKE GetDC,hwnd
- mov hdc,EAX
- INVOKE lstrlenA ,OFFSET naglow
- mov rozmN,EAX
- INVOKE TextOutA ,hdc,100,100,OFFSET naglow,rozmN
- INVOKE UpdateWindow , hwnd
- ;ponizej glowna petla komunikatow
- msgloop:
- INVOKE GetMessageA, OFFSET msg, 0, 0, 0
- .IF EAX == 0
- jmp etkon
- .ENDIF
- .IF EAX == -1
- jmp err0
- .ENDIF
- INVOKE TranslateMessage, OFFSET msg
- INVOKE DispatchMessageA, OFFSET msg
- jmp msgloop
- ;ponizej wstawiamy breakpoint by okno nam sie nie zamknelo
- err0:
- INVOKE MessageBoxA,0,OFFSET terr,OFFSET nagl,0
- jmp etkon
- err2:
- INVOKE MessageBoxA,0,OFFSET terr2,OFFSET nagl,0
- etkon:
- push 0
- call ExitProcess
- main endp
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement