lefool007
Messages postés10Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention18 février 2004
-
8 févr. 2004 à 11:53
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 2015
-
11 févr. 2004 à 10:57
Bonjour,
Voila mon probleme :
Je souhaite afficher un PNG n'importe ou sur mon écran (un peu comme une icone).
J'ai trouvé le code pour afficher un PNG dans une fentre en passant un hDC. jusque là tout va bien si je passe un hDC d'un DialogBox. Mais si je passe le hDC du Desktop (GetDesktopWindow), quand je déplace mon objet, celui ci laisse des traces (pas de "ReDraw" du desktop).
AU SECOURS !!!
J'ai essayé beaucoup de truc (Passer par un Static etc ...) mais je n'y arrive pas.
lefool007
Messages postés10Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention18 février 2004 9 févr. 2004 à 01:16
Bonjour, et merci pour la réponse, mais malheureusement ça ne marche pas.
Existe t-il une classe ou un exemple simple (je suis débutant) pour afficher un bitmap sur le desktop un peu comme une icone (et éventuellement de pouoir la déplacer).
lefool007
Messages postés10Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention18 février 2004 9 févr. 2004 à 14:10
Encore Merci, mais ce n'est toujours pas ce que je souhaite ...
J'ai fais de nouveaux essai ...
Création d'une classe dérivée de CStatic qui affiche par OnPaint une image.
Dans une DLG, je crée une instance de cette classe avec
this->mStat = new CStat ;
this->mStat->Create("test",WS_CHILD,CRect(0,0,60,60),this,NULL) ;
Dans ce cas, tout est OK. Quand je déplace mon CStat, le fond est bien repaint et j'ai bien un "layer" qui se déplace. Mais c'est seulement dans ma fenetre mère (La DLG en locurence ...)
Quand je crée mon instance en passant le hWnd du desktop, j'arrive toujours à déplacer mon "layer", j'arrive à ce que le desktop se redessine, mais pas l'interieur de mon layer (CStat). J'ai essyé beaucoup de chose mais ... Rien ne marche.
Merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
lefool007
Messages postés10Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention18 février 2004 10 févr. 2004 à 16:05
Yop, merci ...
J'ai déja vu cette source, mais c'est du SDK et je n'y connais pas grand chose. J'ai essayé de m'en inspirer, pour créer une classe MFC, mais le fond de ma fenetre invisible n'est jamais remis à jour.
J'ai mème chargé GDI+, mais je n'y comprend rien ...
Bref, c'est la galère et je vais abandonner cette idée qui semble infaisable ...
Merci en tout cas pour vos coup de main.
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 10 févr. 2004 à 16:10
Mais non, mais non! Il ne faut pas désespérer si facilement !
Pour passer du SDK au MFC il y a deux solutions:
1) Partout où c'est marqué que la fonction n'a pas les bons paramètres, ajoute :: devant la fonction.
OU
2) Trouve les classes MFC correspondantes grace à MSDN : toutes les fonctions du SDK se retrouvent dans les classes MFC. La seule différence entre les fonctions du SDK et les fonctins MFC c'est que le SDK utilise les handles alors que MFC utilise des pointeurs sur des objets.
Bon courage
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 10 févr. 2004 à 16:28
AAAAAH ça y est j'ai compris ce que tu essayais de faire...
Tu veux créer une fenêtre contenant uniquement une image et la faire bouger, c'est ça ?
Dans ce cas c'est tout-à-fait différent! La méthode que j'utilise pour le calendrier c'est de dessiner dans la fenêtre du bureau. Toi tu veux créer une autre fenêtre!
Avec les MFC : très facile
Tu crées une fenêtre tu y ajoute un Picture tout en haut à gauche, dans les Propriétés de la Picture choisis le type Bitmap et selectionne le bitmap que tu auras préalablement ajouté aux ressources. Dans les propriétés de la fenêtre va dans l'onglet Style, Et dans la zone Border choisis None. C'est tout!
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
lefool007
Messages postés10Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention18 février 2004 10 févr. 2004 à 16:50
ARGGGG,
Si c'était aussi simple, ça ferai pas 1 semaine que je passerai mes nuits dessu !!!
J'ai essayé, mais le PB, c'est que la fenètre est PAS transparente. Si on lui dit "WS_EX_TRANSPARENT", elle se crée transparente en recopiant en fait le background sous la fenetre. Mais dès qu'on déplace cette fenetre, ce background n'est pas remis à jour ...
D'ou mon problème ...
A bientot, mais ça fait une semaine que je galère la dessus alors que ça existe, que ça doit etre super simple, mais que je suis super "une nouille" !!!
lefool007
Messages postés10Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention18 février 2004 10 févr. 2004 à 17:06
Merci pour le tuyau, mais j'ai déja essayé ...
En fait, mon image est de type PNG avec la gestion de la transparence. Si mon image comporte par exemple une ombre qui fusionne le fond, et bien cette ombre reste avec le fond initial. Ce qui ne me convient pas.
Je sais que je suis compliqué, mais il existe plusieurs applis qui gère cela. Entre autre ClocX, qui est une horloge que l'on met sur le bureau.
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 10 févr. 2004 à 17:34
Tu ne pourras pas utiliser la fonction transparence du format PNG à moins de la programmer toi-même.
Pour ce qui est de ClocX, je ne connais pas mais je pense que ça utilise le même principe que ma source avc le calendrier
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac