Dosad sam ucio programirati samo u C/C++. Vise-manje sam ucia neke elementarne algoritme, rekurzije, strukture i takve stvari. No vec odavno zelim krenit na Windows programiranje. Tako sam nabavia knjigu "C Windows programiranje" od Tihomira Tucakovica, a zasad mi se cini kao najbolje rjesenje za moje potrebe. Iako je sve detaljno objasnjeno i dostupno u obliku koda nakon svake lekcije, neke stvari me jos muce i nerazumljive su mi. Cak bi reka da su mi previse nerazumljive, jer toliko je toga novoga i razlikuje se od klasicnog programiranja na koje sam navika. Pa ako neko ima volje da mi odgovori na moja pitanja, ili barem na neka koja zna, bia bi zahvalan. Krenut cu redom nekakvim, i gdje bude potrebno potkrijepit screenshotom.
1) Pojavljivanje Command Prompta
Ako kompajlan kod stvoren u editoru kao source file, kad god pokrenem program, prati ga command prompt u pozadini. Ako pak stvorim projekt, i odaberem Windows Application, ovaj problem se nece dogodit.
U cemu je razlika, i zasto moram stvarat projekt da bi izbjega pojavljivanje cmd-a? (Zasad se ne obazirem na to, i pisem svaki program kao zaseban source code, bez ikakvih dodatnih fileova)
2) Mađarska notacija
Kaze da ime varijabli pocinje malim slovom ili slovima koja oznacavaju kojeg je tipa podatka varijabla. (n - short integer, s - string, h - handle itd.) Ali negdje mi je to skroz nerazumljivo, pokazat cu kasnije u kojem dijelu.
Zanima me je li nuzno ispred imena svake varijable stavljati ova mala slova?
3) LRESULT CALLBACK, WINAPI itd. (pretpostavljan da ce ih bit jos..)
Sto tocno znace ove sintakse. Zanima me jesu to nekakvi predodređeni tipovi podataka ili slicno?
4) RAZLIKA IZMEĐU HINSTANCE I HWND
Ja to tumacim da je HINSTANCE rukovatelj mojim cijelim programom, a HWND svakog nekog manjeg dijela programa. Ali to mi je jos mutno, pa ako moze netko razradit malo?
5) WNDCLASSEX i CreateWindowEx
typedef struct _WNDCLASSEXA {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEXA,*LPWNDCLASSEXA,*PWNDCLASSEXA;
WINUSERAPI HWND WINAPI CreateWindowExA(
DWORD,
LPCSTR,LPCSTR,
DWORD,
int,int,
int,int,
HWND,
HMENU,
HINSTANCE,
LPVOID
);
U WNDCLASSEX me muce nazivi varijabli npr. lpfnWndProc(gdje bi po mađ. notaciji lpfn trebao biti prefiks, al sta on oznacuje?, ista stvar za cbSize, lpszMenuName itd.)
Jos me zanima ima li ikakve veze ova funkcija CreateWindowEx sa WNDCLASSEX. Jesu li povezane ikako?
7) PETLJA PORUKE
Ovde su glavne ove dvije funkcije TranslateMessage i DispatchMessage. Ako moze ko malo prosirit njihovu ulogu kao i ulogu same petlje.
8) WINDOW PROCEDURA - LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
Ovo se u knjizi spominje kao mozak programa, sto je meni doslo kao sok jer sam zamislja da ce vecina koda biti u WinMain-u. Kako napredujem dalje, skuzia san da se ugl ovaj dio najvise mijenja, tj. nadograđuje.
Isto ako netko moze malo prosirit rad ove funkcije. Ova zadnja 2 parametra me malo zbunjuju takodjer.
Za kraj, sam autor je napisao da sve ovo sta ja ovde pitam je zapravo nebitno i da se to zaboravi. Ali ako se vec ovaj kod ispod smatra temeljom windows aplikacije, onda bi ga ja volia temeljno i razumit. Ne volin bas radit nesto sablonski, ako vec moran onda volim znati sta radim u detalj. Sve je ovo meni jos dosta konfuzno s obzirom da se tek 3 dana bavim s ovim, ali ako ocu krenit dalje smatram da bi ovo trialo prozvakat. Trenutno sam dogura do izrade kontrole (Gumbovi, klizne trake, editiranje teksta itd.). Jos jedno pitanje za kraj, jeli mi nuzno poznavanje klasa, bas pravim C++ klasa za rad s Windows programima. Zasad nisam naisao na neku vecu prepreku s njima.
