Haluaisin tehdä ohjelman, joka pyörittää ruudulla näkyviä ikkunoita. Luullakseni tarvitsisin tämän ihmeen toteuttamiseen API-käskyn, joka antaa minulle ruudulla näkyvien ikkunoiden kahvat ja sitten pitäisi saada vielä ikkunoiden muoto muuttumaan. Anybody wanna help me??
Siis ohjelma, joka pyörittää ikkunaa ruudulla? Muodonmuuttamiseen en ole perehtynyt, mutta kaavailetko jotain tämän tapaista? Tuota ei saa sitten lopetettua kuin Task Managerista.
hunajavohveli kirjoitti:
Hohhoh, oli kova työ mun maskotilla pysyä perässä :P
Mitä itse aiheeseen tulee, niin minä käsitin, että alkup. postaaja haluaa pyörittää formia sen keskipisteen ympäri, ASCII-"taiteena" jokseenkin näin:
__ __ | | --> / \ --> | | |__| \ / |__|
...mikä saattaa osoittautua hankalaksi
Ulkopuolisten prosessien ikkunoita tuskin saat pyöriteltyä, ja omasikaan ei välttämättä pyöri ihan helposti. Toiminta on kuitenkin tämä, olettaen, että käytät C:tä:
1. Piirrä ikkuna ylimääräiselle HDC:lle
2. Täytä itse ikkuna läpinäkyvällä. HBRUSH 0
3. Käännä ja piirrä kuva.
Kääntäminen onnistuu ainakin SDL_gfx:llä, DirectX:llä ja OpenGL:llä.
Läpinäkyvyydestä en tiedä tarkemmin kuin että HBRUSH == 0 on hyvä kokeilla. Delphillä ja CBuilderilla tuo onnistuu helpommin.
No pystyn ainakin liikuttelemaan muiden sovellusten ikkunoita, joten eikös pyöritys olisi ainakin teoriassa mahdollista jos mulla on pyöritettävien ikkunoiden kahvat?
Tuo voi ohjelmakohtaisesti joko toimia tai olla toimimatta. Jos keksit ratkaisun, niin kerro ihmeessä, mutta Windows itsessään ei osaa edes kääntää kuvaa kuin 90º kulmassa tai peilaten, joten WinAPI:lla tuo ei toimi.
Yleensä tuollaiset epäsäännölliset muodot tehdään regioneilla TAI layereilla (2000/XP ainoastaan), eli tuo ikkunan täyttäminen läpinäkyvällä ei taida toimia. Kyllä tuollaisen virityksen periaatteessa varmaankin voisi tehdä mutta siitä tulisi todella hidas (varsinkin regionien tapauksessa) ja melko monimutkainen.
Suosittelisin jättämään sikseen :)
Kyllä se läpinäkyvyys on ihan mahdollinen, katsokaa vaikka. En vain löydä WinAPI:sta oikeaa funktiota.
Siis en tarkoittanut ettei läpinäkyvyys olisi mahdollista, vaan tarkoitin ettei se onnistu niin, että täytetään ikkuna läpinäkyvällä brushilla :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.