WinAPI C++

poruka: 5
|
čitano: 1.073
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
12 godina
neaktivan
offline
WinAPI C++ - pitanja

Nisam našao nikakvu temu striktno decidiranu za winapi, ako ima nešto mergajte molim vas :)

Pitanja nisu striktno vezana za C++, a već mi je bad tolko spamat C++ temu :D

 

Imam par pitanja:

 

1. Da li je moguće kreirati link u ListView itemu?

 

2. SleepEx(); - jel moguće koristiti za pauziranje threada. recimo SleepEx(INFINITE,ContinueWorking); koliko vidim prema dokumentaciji bi trebalo biti moguće, no ja nekako ne dobivam to ponašanje. Funkcija se vrati nakon 20-tak ms iako je 2. arg=0

 

3. AnimateWindow() - za što to točno služi? jel bi mogao recimo pri resizanje windowa dobiti neke efekte?

kad korisnik pritisne neki gumb, ja proširim window s nekih 400 na 1000 pixela. no to izgleda onako prilično surovo. probao sam i resizati ga po malo, recimo svakih 10 ms 15 px ili tako nešto, no tada je bilo problema i s flickanjem, te ne izgleda nešto posebno.

 

4. SetPhysicalCursorPos() - kakva je točno razlika u odnosu na SetCursorPos()? kakve su to fizikalne koordinate?

 

To je to, za sada :D

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: WinAPI C++ - pitanja
C je programski jezik kaže...
1. Da li je moguće kreirati link u ListView itemu?

Objasni. Misliš na web url?

 

C je programski jezik kaže...
2. SleepEx(); - jel moguće koristiti za pauziranje threada. recimo SleepEx(INFINITE,ContinueWorking); koliko vidim prema dokumentaciji bi trebalo biti moguće, no ja nekako ne dobivam to ponašanje. Funkcija se vrati nakon 20-tak ms iako je 2. arg=0

Meni šljaka kako treba. Thread se potpuno zaglavi :)

SleepEx(INFINITE, FALSE);

 

Pogledaj si i SuspendThread, ResumeThread i WaitForSingleObject/WaitForMultipleObjects

 

C je programski jezik kaže...
3. AnimateWindow() - za što to točno služi? jel bi mogao recimo pri resizanje windowa dobiti neke efekte?

kad korisnik pritisne neki gumb, ja proširim window s nekih 400 na 1000 pixela. no to izgleda onako prilično surovo. probao sam i resizati ga po malo, recimo svakih 10 ms 15 px ili tako nešto, no tada je bilo problema i s flickanjem, te ne izgleda nešto posebno.

Kada se window prikaže na ekranu može to učiniti sa nekakvim animiranim efektom (ništa pretjerano fancy). Isto se može i na animirani način sakriti.

 

U biti funkcija radi istu stvar što i ShowWindow samo se nakelji i animacija na to sve. Npr klasični start menu se prikazao tako da je "izrastao" iz taskbara, to je ostvareno upravo pomoću AnimateWindow. Ja imam jedan programčić u kojemu imam custom tooltip window koji "izraste" iz kontrole na koju se odnosi.

 

Btw. imaj na umu da su i kontrole strogo gledano prozori, stoga se ovo i na njih može primijeniti.

 

C je programski jezik kaže...
kakve su to fizikalne koordinate?

Čitaj:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633536%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ff684173%28v=vs.85%29.aspx

To understand what recursion is, you must first understand recursion.
12 godina
neaktivan
offline
Re: WinAPI C++ - pitanja

 

 

C je programski jezik kaže...
2. SleepEx(); - jel moguće koristiti za pauziranje threada. recimo SleepEx(INFINITE,ContinueWorking); koliko vidim prema dokumentaciji bi trebalo biti moguće, no ja nekako ne dobivam to ponašanje. Funkcija se vrati nakon 20-tak ms iako je 2. arg=0

Meni šljaka kako treba. Thread se potpuno zaglavi :)

SleepEx(INFINITE, FALSE);

 

Pogledaj si i SuspendThread, ResumeThread i WaitForSingleObject/WaitForMultipleObjects

 

C je programski jezik kaže...
3. AnimateWindow() - za što to točno služi? jel bi mogao recimo pri resizanje windowa dobiti neke efekte?

kad korisnik pritisne neki gumb, ja proširim window s nekih 400 na 1000 pixela. no to izgleda onako prilično surovo. probao sam i resizati ga po malo, recimo svakih 10 ms 15 px ili tako nešto, no tada je bilo problema i s flickanjem, te ne izgleda nešto posebno.

Kada se window prikaže na ekranu može to učiniti sa nekakvim animiranim efektom (ništa pretjerano fancy). Isto se može i na animirani način sakriti.

 

U biti funkcija radi istu stvar što i ShowWindow samo se nakelji i animacija na to sve. Npr klasični start menu se prikazao tako da je "izrastao" iz taskbara, to je ostvareno upravo pomoću AnimateWindow. Ja imam jedan programčić u kojemu imam custom tooltip window koji "izraste" iz kontrole na koju se odnosi.

 

Btw. imaj na umu da su i kontrole strogo gledano prozori, stoga se ovo i na njih može primijeniti.

 

C je programski jezik kaže...
kakve su to fizikalne koordinate?

Čitaj:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633536%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ff684173%28v=vs.85%29.aspx

 

1. Da, web url

 

2. Vjerojatno sam nešto zeznuo, sad i meni radi

 

3. a kako misliš da bi resizanje bilo najbolje (elegantno) napraviti?

 

 

17 godina
neaktivan
offline
WinAPI C++

1. Moguće je promoću owner draw listview kontrole.

3. Onaj način s kojim radiš je dobar, samo ako nešta iscrtavaš po prozoru, trebao bi imati implemetiranu double-buffer grafiku i koristi WS_CLIPCHILDREN za glavni prozor, tako da ako ti se iscrtava nešta po prozoru (npr. ako se samo jednobojna pozadina ponovo nacrta), da zanemari crtanje preko kontrola (buttoni, edit boxovi, listviewi...), onda ne bi trebalo biti flickanja

0100001001101111011010100110000101101110
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: WinAPI C++ - pitanja
C je programski jezik kaže...

1. Da, web url

Ufff, trebaš sam nacrtati odgovarajuću labelu, odnosno koristiti owner draw... nakon toga je lagano, svaki kliknuti item samo preusmjeriš u browser sa odgovarajućim URL-om (ShellExecute)

 

Dakle ono što moraš napraviti je promijeniti boju teksta u plavu (ili koja god ti je sistemska boja za link), i staviti underline na font tako da izgleda kao link. Nisam siguran kako bi mogao izmijeniti kursor u onaj prst koji se pojavi kada staviš strjelicu na link, odnosno lako je izmijeniti kursor problem je dobiti informaciju da se miš trenutno nalazi iznad "linka".

 

Pogledaj ovdje, tu se koristi owner draw:

http://www.codeproject.com/Articles/2890/Using-ListView-control-under-Win32-API

 

U biti jedina je drama oko tog prikaza teksta da izgleda onako kako su korisnici navikli da link izgleda. Ako ti to nije važno onda možeš preskočiti cijelo kompliciranje sa owner draw.

 

Inače ako ti je listview jako jako jednostavan (jedna kolumna bez headera) onda razmisli o uporabi list boxa, jer u suprotnom samo emuliraš listbox puno kompliciranijom kontrolom.

 

C je programski jezik kaže...

3. a kako misliš da bi resizanje bilo najbolje (elegantno) napraviti?

Animirano? Bojim se da nema nekog posebno elegantnog načina za to.

 

Radiš u biti istu stvar kao i kada animiraš bilo što u prozoru (dakle ili putem dodatnog threada ili koristeći timere), samo što umjesto crtanja u prozor mijenjaš veličinu prozora koristeći SetWindowPos, ili MoveWindow i eto ti animacije :P

To understand what recursion is, you must first understand recursion.
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice