Stránka: 2 z 2
| [ Príspevkov: 46 ] | 1, 2 |
Autor | Správa |
---|
Registrovaný: 11.01.09 Prihlásený: 20.02.25 Príspevky: 1397 Témy: 10 | 10 Bydlisko: Hrinova |
No presne tak. A potom už iba pracuješ s funkciami MoveToEx a LineTo.
|
|
Registrovaný: 20.11.07 Prihlásený: 04.07.12 Príspevky: 405 Témy: 89 | 89 |
a kde zozenem API funkcie na assembler MASM32 ked na C++ su api ale oni sa nejako lisia v parametroch od tych s assembleru co davas push
|
|
Registrovaný: 11.01.09 Prihlásený: 20.02.25 Príspevky: 1397 Témy: 10 | 10 Bydlisko: Hrinova |
Moment, moment. API funkcie máš určite na počítači  Nachádzjú sa v knižniciach user32.dll a kernel32.dll. (Myslím, že tu patria aj gdi32.dll, advapi32.dll a iné, ale to je teraz nepodstatné). Stačí, ak v projekte assembleru pripojíš pomocou direktívy INCLUDELIB danú knižnicu a možeš používať všetky jej funkcie. Tie ale musíš najprv uviesť direktívou EXTERN.
V assemlberi je štandardne použitá stdcall konvencia predávania parametrov (to je to hore - .MODEL stdcall). To znamená, že funkcii sú predávané parametre sprava doľava. Teda opačne. Preto sa ti možno zdalo, že je to odlišné ako v C++ (i keď aj C++ využíva túto konvenciu, tam sa o to netreba starať).
Malý príklad:
Volanie funkcie v C++:
Kód: myFunction(firstParameter, secondParameter);
Volanie funkcie v assembleri: Kód: push secondParameter push firstParameter call myFunction
|
|
Registrovaný: 08.03.09 Prihlásený: 17.01.25 Príspevky: 1116 Témy: 88 | 88 Bydlisko: 00100100 |
AKO sa robí ten PNG textúra a co to je??
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 11.01.09 Prihlásený: 20.02.25 Príspevky: 1397 Témy: 10 | 10 Bydlisko: Hrinova |
Otvoríš si krelenie, nakreslíš si niečo a uložíš to ako *.png
A máš textúru ...
Textúra je dvojrozmerný alebo jednorozmerný obrázok. To je to, čo "vidíš" pri akejkoľvek hre (2D či 3D, to je jedno)
|
|
Registrovaný: 02.11.07 Prihlásený: 18.03.15 Príspevky: 470 Témy: 22 | 22 Bydlisko: Zilinska Un... |
necital som o com tu pisete, nemam cas, ale ak ces robit grafiku, tak OpenGL a tu najdes uplne vsetko, od kreslenia, pohybu, texturovania + multitexturing, blendingu, praca s textom. Nie je problem nieco vykreslit, ale neprogromovat tomu pohyb a cool fyziku.
http://nehe.ceske-hry.cz/tut_obsah.php
_________________ Notebook: HP EliteBook 8740w
You can see my work in my www |
|
Registrovaný: 08.03.09 Prihlásený: 17.01.25 Príspevky: 1116 Témy: 88 | 88 Bydlisko: 00100100 |
diky
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
Registrovaný: 20.11.07 Prihlásený: 04.07.12 Príspevky: 405 Témy: 89 | 89 |
pisal si mi ten mousemove v assemblery pomocou api moveto a lineto nemohol by si mi to dat teraz ako by to vyzeralo v c++ aj s oknom kompletne ako program
cize a ake by tam boli funkcia na to vykreslenie a ako sa tam robi slucka sprav neviem si to dat dokopy tu jednu formulku ako je
registracia + vytvorenie
slucka
a procedura
a to iste dokola to bezi ako by to bolo???
pls.
|
|
Registrovaný: 11.01.09 Prihlásený: 20.02.25 Príspevky: 1397 Témy: 10 | 10 Bydlisko: Hrinova |
Kód: #include <windows.h>
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "WindowsApp";
bool lbtn_down = 0; HDC__ * hDC;
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{ HWND hwnd; MSG messages; WNDCLASSEX wincl;
wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof (WNDCLASSEX); wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if (!RegisterClassEx (&wincl)) return 0;
hwnd = CreateWindowEx ( 0, szClassName, "Windows App", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hThisInstance, NULL );
ShowWindow (hwnd, nFunsterStil);
while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); }
return messages.wParam; }
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: PostQuitMessage (0); break; case WM_CREATE: hDC = GetDC(hwnd); break; case WM_LBUTTONDOWN: lbtn_down = 1; MoveToEx(hDC, LOWORD(lParam), HIWORD(lParam), NULL); break; case WM_MOUSEMOVE: if (lbtn_down) LineTo(hDC, LOWORD(lParam), HIWORD(lParam)); break; case WM_LBUTTONUP: lbtn_down = 0; break; default: return DefWindowProc (hwnd, message, wParam, lParam); }
return 0; }
|
|
Registrovaný: 20.11.07 Prihlásený: 04.07.12 Príspevky: 405 Témy: 89 | 89 |
vysvetlite mi este raz co to je
v datovom segmente sa pise za napr.
lenstr1 "ahoj",0,13
co to je to 0 a 13???
dalej napr.
lenstr2 dd <?>
co je to ten otaznik???
dalej napr.
mov dword ptr [ebx+0ch]
co je to v tej zatvorke a co je dword ptr??
napr.
wm_command equ 1
co je to equ??a preco 1 preco nie 215123
|
|
Registrovaný: 19.09.06 Prihlásený: 09.01.25 Príspevky: 749 Témy: 31 | 31 Bydlisko: Ružomberok&... |
0 je ukoncovaci znak retazca, 13 je znak, ktory vrati kurzor na zaciatok riadku.
? znamena neinicializovane data
dword ptr [ebx+0ch] znamena, ze sa vezme dword z adresy ebx+Ch,
equ znamena deklarovanie konstanty
|
|
Registrovaný: 11.01.09 Prihlásený: 20.02.25 Príspevky: 1397 Témy: 10 | 10 Bydlisko: Hrinova |
Citácia: co to je to 0 a 13???
Nulou sa ukončuje každý reťazec (aby bolo jasné, kde končí). 13 značí ENTER, teda znak nového riadku. Presnejšie vysvetlenie. Každý reťazec je iba zhluk ASCII znakov. Teda reťezec "Ahoj" môžeš napísať takto:
Kód: pozdrav DB 'Ahoj', 0 ale aj takto: Kód: pozdrav DB 65, 104, 111, 106, 0
Všimni si, že nula je v oboch prípadoch.
? - znamená, že danú premennú neinicializuješ. To znemená, aká hodnota bola na danom pamäťovom mieste pred tým, tá tam bude aj teraz - teda v tejto premennej.
DWORD PTR - Ak pracuješ s pamäťovým miestom (napríklad so zásobníkom), musíš uviesť direktívu PTR. DWORD znamená, že chceš preniesť hodnotu o veľkosti DWORD (DD). Bez tejto direktívy by totiž nebolo jasné, aký veľký údaj hodláš preniesť.
EQU - klasická konštanta. Jej obsah sa nedá zmeniť. Preto 1
Dúfam, že už je všetko jasné, ak nie, pýtaj sa.
// EDIT - sorry Stopa27, keď som dopísal, už tu bol tvoj príspevok. Ale svoj som nezmazal, lebo som mu trocha presnejšie vysvetlil
|
|
Registrovaný: 19.09.06 Prihlásený: 09.01.25 Príspevky: 749 Témy: 31 | 31 Bydlisko: Ružomberok&... |
13 neznamena enter, enter je kombinaciou 13 a 10, cize navrat na zaciatok riadku a posun o riadok nizsie.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Kde ako. Pokial viem, v DOSe (a Windowse) robis novy riadok pomocou CR+LF = 13 a 10, zatial co v Unixe len pomocou LF = 10 a v Mac je to zas CR = 13.
|
|
Registrovaný: 19.09.06 Prihlásený: 09.01.25 Príspevky: 749 Témy: 31 | 31 Bydlisko: Ružomberok&... |
isteze, ale pokial viem, tak sme sa az doteraz bavili o windowse.
|
|
Registrovaný: 20.11.07 Prihlásený: 04.07.12 Príspevky: 405 Témy: 89 | 89 |
existuje nieco potrebujem informácie ohladne tohoto
medziapplikacia medzi os a aplikaciou nainstalovanou
konkretne o portoch kto sa pripája ako je v linuxe nejaky bash ktory komunikuje s portami a aplikaciou
tak daj nejaky zdroj
neviem este sa nad tym pozamyslam ale neviem v cmd je to nieco ako netstat ze? tot vlastne aplikacia
tak potom by som chcel spravit nejaky shell vo win ktory by to kontroloval a ked by sa niekto pripojil tak by to zapisovalo do suboru alebo vyhadzovalo okienko.
comand ok s popisom atd.no radsej ten command ok s popisom prave sa niekto pripojil a tak
|
|
Stránka: 2 z 2
| [ Príspevkov: 46 ] | 1, 2 |
|