asm page

asm page

Opisy wybranych funkcji API



Sleep


Funkcja sluzy do przerwania pracy (zasniecia) na okreslony czas.
Wywolujemy ja tylko z jednym parametrem, czasem na jaki ma zasnac, jest on wyrazony w milisekundach.



DialogBoxParamA


Ta funkcja tworzy DialogBox'a. Dialog Box to nic innego niz okienko w ktorym mozemy umiescic rozne rzeczy ale "najwazniejsze" sa te miejsca gdzie mozna wpisywac txt;))). W przeciwienstwie do okien w dialogach mozemy miec kilka tych "miejsc"i zmieniac je za pomoca tab'a. Dialogi mozemy podzielic na dwa rodzaje: systemowe i modalne. Systemowa to sa te ktore bedziemy tworzyli czyli zwykle okienka zrobione przez usera, modalne natomiast to te ktore sa tzw. "Always on top" (aby zrobic modalnego boxa w pliku resource, tam gdzie jest opisany styl pudelka, trzeba dodac DS_SYSMODAL).
Na poczatek kilka informacji o tym co potrzebujemy aby stworzyc takiego Dialoga. Najwarzniejsza rzecza jast plik resource, jest to plik txt z rozszerzeniem .rc lub binarny z .res. Mozna go napisac samemu lub skorzystac z gotowego edytora (ja korzystam z Resource Workshop firmy Borland). Dobrze a teraz przejdziemy do tego co w takim pliku zanjduje sie. Sa tam zawarte informacje o tym jak powinien wygladac nasz dialog, ile i jakie guziki lub/i inne elementy powinien zawierac... . Kazda rzecz zawarta w takim pliku aby mogla byc uzyta (np. chcemy wiedziec o tym czy jakis guzik zostal nacisniety) musi posiadac swoj identyfikator. Identyfikator musimy takze zdefiniowac w pliku asm najlepiej jako stala np.
guzik_1 equ 100
trzeba pamietac ze aby to wszystko dzialalo identyfikator z rc i asm musi byc taki sam, (tzn. numer) a nazwa moze byc dowolna. Zreszta lepiej to zrozumiesz ogladajac przyklad: example
Opis(z jakiegos "helpa" borlanda):

int DialogBoxParam(hinst, lpszTemplate, hwndOwner, dlgprc, lParamInit)
HINSTANCE hinst; /* handle of application instance */
LPCTSTR lpszTemplate; /* identifies dialog box template */
HWND hwndOwner; /* handle of owner window */
DLGPROC dlgprc; /* address of dialog box procedure */
LPARAM lParamInit; /* initialization value */

Teraz przedstawie kilka funkcji ktore pomoga przy dialogu:


EndDialog
Funkcja konczy "dialoga" wywolywana jest z dwoma argumentami:
pierwszy leci na stos "return value" (ja tu klade 0)
drugi to handle naszego naszego dialoga


SendDlgItemMessage
Ta funkcja jest bardzo przydatna, pozwala wykonywac wiele rzeczy z naszym DialogBox'em np. pobrac txt:

push offset bufor ;of. naszego bufora
push 20 ;max liczba znakow do pobrania
push WM_GETTEXT ;wiadomosc o tym ze chcemy zabrac wiadomosc
push edit_id ;identyfikator naszego miejsca na tekst (tenz pliku .rc)
push hwnd ;hwnd naszego Box'a

I jeszcze jedna bardzo wazna rzecz, jezeli jestes leniwy mozesz zamiast klasc wszystkie argumenty na stos wywwolac funkcje call ze wszystkimi argumentami:
call GDZIES ,arg_1, arg_2 ...
ale w tym przypadku argumenty musza isc w kolejnosci takiej jak sa podane (odpowiednik masmowego invoke).
Opis:
SendDlgItemMessage proto hwndDlg:DWORD,\
idControl:DWORD,\
uMsg:DWORD,\
wParam:DWORD,\
lParam:DWORD


------------------
duza czesc materialow pochodzi z tutotriali Iczelona, ktore wszystkim polecam


cdn...

na glowna