Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Läpinäkyvät windows ikkunat? (C++)

Sivun loppuun

Jarkko-C++ [13.10.2005 15:50:55]

#

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ä.

Blaze [13.10.2005 16:06:24]

#

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/23996-vb6-osittain-läpinäkyvä-formi
(Ja joo, se on VB:tä, joten et voi suoraan copypasteta, mikä minusta ainakin on vain positiivinen asia.)

Jarkko-C++ [13.10.2005 16:44:36]

#

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?

Blaze [13.10.2005 16:53:23]

#

Includeta suoraan Windows.h, ei mitään outoheadereita.

Jarkko-C++ [13.10.2005 17:01:38]

#

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..

Metabolix [13.10.2005 18:26:45]

#

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.

rutkis [14.10.2005 14:23:25]

#

Dev-C++ tuskin laittaa windows version defineitä päälle eli itse pitäisi sellainen lisätä omaan koodiin.

thefox [16.10.2005 21:35:54]

#

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ä.

Meitsi [16.10.2005 22:45:15]

#

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.

thefox [19.10.2005 13:32:34]

#

Meitsi kirjoitti:

Saahan vanhemmissakin windowseissa vaikka millaisen ikkunan, mutta silloin pitää kikkailla.

AKA suuremman luokan häksäys.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta