Tein C++-kielellä ja Win32-funktioilla kontrollin. Kontrolli on ikkuna, jonka toiminnot on paketoitu luokaksi. Kontrollissa on mm. LoadPicture-metodi, jonka avulla voi ladata esimerkiksi jpg-tyyppisen kuvan ikkunan piirtopinnalle.
Kontrollissa on myös Drag-toiminto, jonka avulla ikkunaa voi raahata sen äiti-ikkunan päällä hiiren avulla.
Eräs ongelma johon en ole keksinyt syytä on seuraava: Raahaan ikkunan jonkun toisen samalla äiti-ikkunalla olevan kontrollin päälle (esimerkiksi painonapin). Kun kontrollin ikkuna saa seuraavan kerran PAINT-tapahtuman, kopioituvat tämän toisen kontrollin (painonapin) pikselit raahatun ikkunan piirtopinnalle. Näin tapahtuu, vaikka kontrollin ikkunan PAINT-metodissa ei olisi ollenkaan koodia.
Mistä tämä voisi johtua ja miten asian voi estää?
Kai sen WNDCLASS-struktuurissa on määritelty nuo normaalit CS_HREDRAW ja CS_VREDRAW? Seuraavaksi voisi kokeilla CS_OWNDC:tä. Ja Paint-metodiin voisi laittaa jotakin, vaikka BeginPaint ja EndPaint. En tiedä, selitän vain :)
CS_HREDRAW ja CS_VREDRAW liput on asetettu WNCLASS-struktuurissa. Kokeilin myös tuota CS_OWNDC mutta sekään ei vaikuttanut.
Myös Paint-funktiossa on BeginPaint ja EndPaint.
Vika ei siis ole tässä.
Ratkaisevaa näyttäisi olevan se, että missä järjestyksessä kontrollit on luotu. Mikäli kontrolli on luotu raahattavan kontrollin jälkeen, kopioituvat sen pikselit raahattavan kontrollin piirtopinnalle. Mutta jos kontrolli on luotu ennen raahattavaa kontrollia, ei tätä kopioitumista tapahdu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.