Tässä olis tällänen vaikeamman luontoinen kysymys. Eli miten saisin ohjelman ikkunan läpinäkyväksi? Planetsourcecode.com ista jotain selailin, mutta yksikään ei kääntynyt devcpp:llä.
Väännä ensin SetWindowLongilla Layered-bitti päälle (tai jos läpinäkyistät oman softasi ikkunoita voit tehdä tuon jo ikkunan luonnin yhteydessä) ja sen jälkeen voit säätää läpinäkyvyysastetta SetLayeredWindowAttributesilla.
Ks. esim. https://www.ohjelmointiputka.net/koodivinkit/
(Ja joo, se on VB:tä, joten et voi suoraan copypasteta, mikä minusta ainakin on vain positiivinen asia.)
Hmm... tää herjaa et
19 D:\Cpp-ohjelmointi\ohjelmat\Untitled5.cpp `SetLayeredWindowAttributes' undeclared (first use this function)
Mikä on outoa nimittäin katoin et tuol winuser.h ssa on toi "SetLayeredWindowAttributes". eli ettei tollast komenta mukamas ole. Missäköhän mahtaa olla vika?
Includeta suoraan Windows.h, ei mitään outoheadereita.
Se valittaa sit samaa silti.:(
jopa tällasses coodissa:
#include <windows.h> int main() { SetLayeredWindowAttributes(0,0,0,0); return 0; }
toi SetWindowLong -jutskasta se ei kyl valita..
Onkohan tos mun devcpp jotai vikaa..
Ennen tuota näyttäisi olevan, että #if (_WIN32_WINNT >= 0x0500)
. En tiedä, miten Dev-C++ nuo määrittelee, mutta pääpointti on se, että Win2k:ta vanhemmissa tuo funktio ei edes toimi. Jos siitä ei ole kysymys, niin voit kokeilla kopioida sen funktiomäärittelyn oman ohjelmasi alkuun.
Dev-C++ tuskin laittaa windows version defineitä päälle eli itse pitäisi sellainen lisätä omaan koodiin.
Järkevin tapa on tehdä funktiopointteri, ja hakea tuo funktio LoadLibrarylla ja GetProcAddressilla. Jos GetProcAddress palauttaa virheen, tiedetään, että softaa ajetaan käyttöjärjestelmässä, joka ei tue kyseisestä funktiota. Tällöin voidaan käyttää jotain vaihtoehtoista tapaa, kuten regioneja.
Jos et käytä LoadLibrarya ja GetProcAddressia, ei softasi suostu edes käynnistymään vanhemmilla Windowseilla.
EDIT: Niin, ja osittain läpinäkyvää ikkunaa ei vanhemmissa saa ilman suuremman luokan häksäyksiä.
fawkz kirjoitti:
Järkevin tapa on tehdä funktiopointteri, ja hakea tuo funktio LoadLibrarylla ja GetProcAddressilla. Jos GetProcAddress palauttaa virheen, tiedetään, että softaa ajetaan käyttöjärjestelmässä, joka ei tue kyseisestä funktiota. Tällöin voidaan käyttää jotain vaihtoehtoista tapaa, kuten regioneja.
Jos et käytä LoadLibrarya ja GetProcAddressia, ei softasi suostu edes käynnistymään vanhemmilla Windowseilla.
EDIT: Niin, ja osittain läpinäkyvää ikkunaa ei vanhemmissa saa ilman suuremman luokan häksäyksiä.
Saahan vanhemmissakin windowseissa vaikka millaisen ikkunan, mutta silloin pitää kikkailla. Ottaa kokoruudun hanskan selville ja piirtelee siihen sitten. Jos haluaa läpinäkyvää niin ottaa ensin ruudun senkohdan pikselin värin selville.
Meitsi kirjoitti:
Saahan vanhemmissakin windowseissa vaikka millaisen ikkunan, mutta silloin pitää kikkailla.
AKA suuremman luokan häksäys.
Aihe on jo aika vanha, joten et voi enää vastata siihen.