[ 6ypek @ 24.11.2004. 09:35 ] @
Pozdrav,

treba mi kod/primer ili bilo sta sto moze da mi pomogne oko toga
da bi napravio proceduru kojom bih iscrtavao neki logo, direktno na ekran.
Konkretno, taj logo, slicica, ili bilo sta sto budem hteo da iscrtam bi
trebalo da je NON STOP na ekranu, bez obzira da li korisnik igra igru,
pise neki dokument, surfuje internetom...
Resenja tipa pravljenja transparentnih prozora nisu ono sto mi treba,
dakle, treba mi info o tome kako se nesto salje direktno na ekran, a ne
ono GetDesktopWindow i tako to..

Hvala unapred svima koji budu znali nesto na ovu temu..
[ sasas @ 24.11.2004. 10:27 ] @
Direktno crtanje po ekranu u Windowsima ne postoji.
Za pisanje dokumenata, surfanje i sl. mozes razmisliti da napravis svoj prozor sa StayOnTop atributom.

Nesto ovako:

SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or
SWP_NOMOVE);

Za igre mislim da to ne mozes uraditi.

ss.
[ Rapaic Rajko @ 24.11.2004. 12:32 ] @
Dakle, ovako nesto:
Code:

  var acanvas: TCanvas;
       aDC: HDC;

  begin
    acanvas := TCanvas.Create;
    aDC := GetDC(0);   // ovo ti daje DC desktopa
    acanvas.Handle := aDC;
    ....  // neko crtanje
  end;


Medjutim, nije sve tako jednostavno. Treba ti i neki app/thread koji ce konstantno da iscrtava to sto treba itd. itd. uglavnom ima posla.

Rajko
[ milika @ 24.11.2004. 14:13 ] @
Uglavnom je nemoguce, sem ako neces da pravis wrapper za OpenGL i za directX
sve vaznije verzije
znaci - zaboravi. ili ako si genije molio bih source kod ....

pozdrav..
[ 6ypek @ 24.11.2004. 21:27 ] @
Joj narode..

Sad ce se mnogi naljutiti, ali zaista ne bih da se svadjam, prosto
samo da kazem to da sam video da je jedan decko to uradio i to
je perfektno radilo.. Samo sto je decko malo umobolan, i toliko je
ljubomoran na to sto radi, tako da mi je prosto ispod chasti da
njega pitam za bilo kakvu pomoc...

Elem, za crtanje po desktopu, to znam, radio sam programe koji
iscrtavaju kojekave animacije po desktopu (one sexy devojke i sl)
tako da razumem u potpunosti taj kod sto ste mi kopirali, ali..

Hmh.. ma dobro, nije propao svet.. naci cu ja sigurno kako se to
radi, ionako dosad nista sto sam naumio nisam ostavio
nedovrseno :) U svakom slucaju hvala sto ste bar procitali
pitanje.. :(
[ neor @ 25.11.2004. 07:22 ] @
Ako je neko napravio program koji to radi u svakoj situaciji onda to nije radio u Delphiju.
Verovatno je napisao drajver a to Delphi ne moze.
Bez toga ostaje ti samo da zalepis nalepnicu na monitor :)
[ sasas @ 25.11.2004. 07:38 ] @
Citat:
neor: Verovatno je napisao drajver a to Delphi ne moze.


Zasto ne moze? Imas neka iskustva s tim?

ss.
[ 6ypek @ 25.11.2004. 10:37 ] @

Ma ima dosta ljudi, koji su pre par godina culi da je razlika izmedju
C-a i Pascal-a u tome sto se u Pascal-u ne mogu pisati drajveri..
Medjutim, i te kako se danas mogu pisati drajveri u Pascalu (citaj
Delphi-u), samo sto pri pisanju drajvera dolazi do pretrpavanja
ekrana silnim typecast-ovima, pa to ne lichi vishe ni na shta..

Dodushe video sam dosta lepih strukturiranih primera, gde ljudi
lepo izdeklarishu gomilu novih tipova i struktura i koriste ih
prilikom typecast-a.. Tako da to ipak moze i lepo da izgleda..

Elem, poenta je da se u Delphi-u mogu pisati drajveri :)
Zato sam u prvi mah i pitao ovde za ovaj moj problem, mada
moram priznati da mi je ona ideja sa nalepnicom sve bliza :)))
[ neor @ 25.11.2004. 10:50 ] @
Nekoliko puta na Borlandovim news grupama je bilo to pitanje i odgovor je da Delphi samo zna da iskompajlira obicne windows PE izvrsne fajlove (exe i dll).
Drajveri imaju drugaciju strukturu kakvu Delphi ne moze da napravi.
Nikad nisam pisao drajvere pa ne znam konkretno sta su razlike.

Postoje neki zaobilazni putevi ali su obicno specijalizovani za odredjeni hardver kao sto su WinPcap, WinDriver, PortIO koji se instaliraju kao drajveri ali su otvoreni za kontrolu od strane drugih aplikacija preko parametara ili callback procedura.
Ne znam da li postoji nesta slicno za video drajvere.
[ Rapaic Rajko @ 25.11.2004. 14:38 ] @
Hm, da...sad sam tek skontao pitanje. Crtanje na EKRANU, a ne na desktop-u, tako je trebalo reci. Ne vidim kako drugacije bez driver-a; znaci, nemam sta da dodam vec recenom.

Rajko
[ milika @ 25.11.2004. 23:11 ] @
Daj ne pricaj svasta od drivera postoji, u winu, jos samo vxd struktura za
koju
sam video primere u Delphiju.....

A sto se tice ovog direktnog iscrtavanja ni driver bas ne bi pomogao,
morao bi da pravis GDI, DirectX, OpenGL wrapper i to za sve
majro verzije istih, poso tipa 8meseci il slicno...

Pozdrav..
[ 6ypek @ 26.11.2004. 01:29 ] @

Ok, dakle, shvatili smo koliko mi vremena treba za to, a da li bi mogli samo
jos da ulozite toliko napora, samo da mi kopirate par linkova, makar gde bih
mogao da potrazim info o tome, jer zaista nemam ideju ni odakle da pocnem
pa ako iko zna makar toliko, pliz nek me uputi..

Hvala unapred, a i hvala svima koji su bar probali da pomognu, zaista mi
znaci ovo, jer dosad nigde nisam imao ovoliko odgovora.. uglavnom je ta
tema bila ignorisana..

:)
[ sasas @ 26.11.2004. 08:39 ] @
Citat:
milika: Daj ne pricaj svasta od drivera postoji, u winu, jos samo vxd struktura za
koju
sam video primere u Delphiju.....


Ovo mi nije jasno, mozes li ovo malo da preformulises ovu recenicu, da dobije kakvog smisla?

Citat:

A sto se tice ovog direktnog iscrtavanja ni driver bas ne bi pomogao,
morao bi da pravis GDI, DirectX, OpenGL wrapper i to za sve
majro verzije istih, poso tipa 8meseci il slicno...


Jel' imas kakva iskustva s ovim, ili pricas 'nako? Imas li bar kakav link na kom bi se moglo procitai nesto malo vise o ovome?

ss.
[ mack @ 26.11.2004. 08:39 ] @

Gledaj ako hoces pravo resenje onda Je Milika u pravu moras da se igras
sa directX-om.Pisati kompletan drajver za video karticu je malo naporno
eventualno u linuxu da malo tumbas source,ali to ti je onda namensko resenje
svaka kartica drugi drajver!

Polovicno resenje mozes postici sa api funkcijom setwindowpos i ona ce to da
radi u nekim igrama (npr CS),u nekima nece uopste(npr. neke stare igrice iz dos-a)
a negde mozes postici vidljivo iscrtavanje drzeci neki taster i stalno pozivajuci
tu f-ju(npr scroll lock->Milika :-))

Lepo resenje za ovo se nalazi u nvidijinim drajverima,znate ono "display nvidia logo"
u drajveru.E sad ako bi se kontaktirao neki od programera sa nvidinog foruma pa da
on dropne malo sourcea nama serbima...

p.s. pozdrav za Miliku
[ morlic @ 26.11.2004. 10:05 ] @
Odstampaj logo na malu nalepnicu i zalepi je na zeljeni deo ekrana. Ovim resenjem cak ne opterecujes dodatno cpu, a radi cak i kad je komp iskljucen :)
[ sasas @ 26.11.2004. 10:10 ] @
@morlic
To resenje je vec bilo predlozeno (a izgleda da ce biti i usvojeno ;)

ss.
[ milika @ 26.11.2004. 12:57 ] @
Pa za windows postoji sledeca executabilne structure
exe dll i vxd - eto jel to sad jasnije

Za ovo drugo - da imam iskustva ja sam autor jednog od
programa za igraone i prikazujem njihovo preostalo
vreme ali samo na zahtev (scroll lock :))) ) to radi u 99%
programa ali koristi timer petlju za prikaz i flickeruje...

pozdrav svima...
[ milika @ 26.11.2004. 12:57 ] @
Ajd ne sali se ... :)
[ vladab @ 26.11.2004. 13:14 ] @
A mozda da se obrati screen bufferu ili kako se to vec zove? Treba da sazna adresu buffera i da u njega periodicno upisuje tekst koji treba da se ispisuje. Ja ovo nisam probao, ali mi je pominjao jedan drug, pa nisam siguran kako radi, ali mi deluje kao dobra ideja.
[ 6ypek @ 26.11.2004. 13:32 ] @
mh :)
zasad GetDC(0) radi posao i flikeruje, ali video sam da je jedan decko
uradio tako nesto, i toliko je to perfektno izgledalo, i stabilno na ekranu
da je prosto licilo kao da je zalepljeno na ekran :) jos je stavio i neki
alpha blending, da bude malo providno..

jednom recju super je izgledalo, mada.. za overlay, mislim da je za to
potreban isto neki region, bas kao i sa transparentim prozorima, tj
tako skrecem sa teme.. cilj je nekako uloviti ekran.. :)

jedan lik sa EFneta mi je dao zanimljivu ideju, naime, covek je radio
nekakav pristup paralelnom portu i bakcjao se sa tim, pa mi je
predlozio da pogledam tu oblast, ako mi ne bude previse otezala
posao.. E sad.. jos nisam stigao to da pogledam, jer sam probavao
nesto sa GDI da budzim, i ako uspem, javicu vam :)
[ mack @ 26.11.2004. 18:45 ] @
Kakve veze ima pristup LPT portu sa overlayem?
[ Srki_82 @ 28.11.2004. 03:00 ] @
Da li si 100% siguran da to nije bila neka poluprovidna (alphablending) nalepnica na ekranu? :) Ako kad prevuces prst preko ekrana osetic neku neravninu (bumpmaping) verovatno samo nisi video da je to bila nalepnica. Ako mislis da samo zezas nekog sa tim onda je ok i ako treperi... to ce ga dodatno nervirati. Ako ti treba kao reklama firme ljudi ce te samo zamrzeti zbog toga jer verujem da vrlo mali broj ljudi zeli da na svom ekranu ima slicicu koja mu prekriva desktop, igru ili neki film ma koliko ta slicica bila mala i neprimetna. U tom slucaju ti je bolje da napravis nalepnice i da je oni koji zele zalepe na ekran (pitam se ko bi to uradio) ili na negi drugi deo hardware-a ili ko zna cega.
[ 6ypek @ 28.11.2004. 16:56 ] @
Joj, narode, al mnogi likovi na forumima imaju ruznu naviku da kad nesto
ne znaju da odgovore, onda pocnu ili da diskredituju autora pitanja, ili da
diskredituju pitanje..

Slazem se i da je nametljivo, i da je cudan zahtev i da ga je jaaaaaaako
tesko izvesti.. Ali i pored svega, programerska elita i jeste uvek bila elita,
bas zbog toga sto je neke stvari znala da izvede, za razliku od ostalih..
Samo mi je krivo, sto ta elita sad cjuti.. Da li zato sto ljubomorno cuvaju
to svoje znanje, ili prosto nisu trenutno tu, ili ko zna sta, a ja svaki dan
citam odgovore tipa, to ti ne treba, ne mere to bez kabla, itd itd. :)

Jedno je sigurno, a to je da se to moze uraditi, i uopste nije nikakav
posao od 8 meseci i tako te gluposti.. Dobio sam par primera, od jednog
lika iz australije, i to treba malo da proucim, pa da vidim jel to ono pravo.
A dotle, najljubaznije molim da ako ne mozete pomoci pri resavanju
nekog problema, nemojte ga bar komplikovati i skretati sa teme i
jos vise odmagati.. Ne znam zasto je toliko interesantno davati odgovor
samo da bi nesto pisalo, a da se pri tom nista ne odgovori na temu..

Jos jednom, pitanje nije da li je u redu da ja to tako nalepim na ekran i
time nerviram ljude i da li je to moralno, i da li pingvini mozda imaju neku
repliku na sve to, da mozda nije i njih pogodilo to, jer necu da radim
preko GetDesktopWindow... Pitanje je bilo i ostaje, na koji nacin se nesto
moze crtati DIREKTNO na ekranu.. Ne preko Canvas-a.. Ne preko
providnih prozora, nego, direktno. (sto bi reko moj drug, ruchno!) :)

ok? :)
[ Almedin @ 28.11.2004. 20:43 ] @
Cyber Caffe (program za kontrolu računara u internet klubovima) to uredno radi i nema ni treperenja. Znači da je moguće.
[ Srki_82 @ 28.11.2004. 22:06 ] @
Zar ne moze nekako kao u starom DOS-u da se direktno pise u memorijsku lokaciju koja predstavlja pixele koji se vide na ekranu? U zavistnosti o rezolucije i color depth ekrana odredjujes u kojoj lokaciji treba da setujes koji bit. Ne znam koliko je to prakticno i izvodljivo, ali mozda moze tako da se uradi.

P.S.
Pogledao sam Cyber Caffe i vidim da radi samo na Win platformama i to mi nekako mirise da koristi overlay i DirectX. Probaj da pustis DVD dok je pokrenut Cyber Caffe i ako kaze da ne moze da se pusti film zbog zauzetog overlay-a znaci to je. I to je onda problem jer ne podrzavaju sve graficke kartice overlay, a i ako ga podrzavaju postoji samo jedan.
[ 6ypek @ 29.11.2004. 01:37 ] @
Koristio sam Cyber Caffe, i mislim da on nema prikaz vremena non stop
tj ima, ali dok korisnik igra neku igricu, to vreme se ne vidi.. Naravno
kad je korisnik u windowsu i surfuje, tada u dnu stoji onaj njegov
TaskBar, koji na sebi ima i vreme.. tako da mislim da nisi dobro procitao
pitanje, ili ja ne znam za tu opciju da je vreme non-stop vidljivo, cak i
kad igras neku 3D igru..?

A ovaj direktan pristup memoriji, postoji.. Samo koliko sam skontao,
zasticen je.. Tako da ne mozes bas da changrljash po njemu kako hoces :)
[ Srki_82 @ 29.11.2004. 15:38 ] @
Ehhh... sve sto je zasticeno prosto vuce da se ta zastita razbije :) Salim se. Ako postoji nacin za tako nesto sigurno ga mozes pronaci na netu. Probaj da trazis na google "direct video memory access" ili tako nesto... mozda izroni neka zanimljiva tema. Mada... i dalje mislim da je najlakse resenje (bar za pocetak) da koristis overlay. Koliko mi se cini u dokumentacijama pise da se on uvek poslednji iscrtava (tako rade graficke kartice) pa je on uvek vidljiv. Jedino sto onda mozes da se oprostis od ostalih programa koje koriste overlay jer nema sanse da ce raditi na tom racunaru. Moze li se znati zbog cega ti je bas to potrebno? Mozda postoji neko alternativno resenje.
[ Almedin @ 29.11.2004. 22:20 ] @
Ja sam skoro 100 % siguran (ali ću navratiti da ponovo provjerim) da sam vidio kako se na ekranu vrti Counter Strike u full screen modu a u vrhu ekrana je mali plavi pravougaonik koji prikazuje preostalo vrijeme. Znam da sam vidio da je promijenio u crveno kada je ostalo, cini mi se, 15 minuta.
[ milika @ 29.11.2004. 23:40 ] @
E lepo od tebe sto si tako zahvalan, barem
si sada moju pomoc izgubio, a vec ces videti
sta sve treba da uradis...

Nadam se da su i ostali ljudi, koji
su se svesrdno trudili da ti pomognu
nudeci svoje znanje i iskustvo, cak iako
nje bilo potpuno, naucili iz ovoga..


pozdrav....
[ Srki_82 @ 30.11.2004. 00:28 ] @
Malo sam cackao i definitivno pod Windows-om nema sanse (mozda ipak gresim) da direktno pristupas video memoriji (koliko sam shvatio cak ni DirectX i OpenGL nemaju BAS DIREKTAN pristup) nego za sve sto hoces da uradis moras da "zamolis" drajver za graficku da to uradi za tebe.
[ 6ypek @ 30.11.2004. 09:39 ] @
Milika, ne vidim razlog da se ljutis, nisam nikoga direktno prozvao,
samo sam zamolio ljude da prvo razmisle o odgovoru, pa tek onda
da pisu.. Krivo mi je sto dobijam odgovore tipa, "a jesi siguran da
ti to bas treba?"
Mislim ono.. Da nisam siguran da mi treba mislis da bih se
zamajavao sa registracijom na forumu i tako to...?
Hteo sam samo da kazem da bi bilo dobro da se obrati paznja na
pitanje, i da ako neko zna da odgovori, ili bar da uputi na neki
koristan link, da bih to cenio vise nego rasprave o tome da li ja
sa "prave tacke gledista" gledam problem.. ok?

Izvinjavam se ako sam nekog uvredio, nije mi to bila namera..
[ shaDy @ 30.11.2004. 16:58 ] @
Ja sam jednom na Toriju video komponentu za direktno iscrtavanje na
ekran(tko je barem pisalo u Opisu),
ali nemam pojma detalje...