LOUPE SIMPLE (WIN32)

neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006 - 12 juin 2004 à 11:14
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007 - 26 mai 2007 à 13:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23624-loupe-simple-win32

julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
26 mai 2007 à 13:22
Euh enfaite je ne comprends pas :
si on souhaite restaurer le bitmap "par défaut", pourquoi ne pas le restaurer dans le DC "par défaut" ; pourquoi ca : SelectObject(hMemDC, hOldMemBmp); et non SelectObject(hdc, hOldMemBmp);
?
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
26 mai 2007 à 13:17
Ah ok je ne savais pas que (HBITMAP) SelectObject(hMemDC, hMemBmp); retournait le bitamp "par défaut". Je comprends mieux merci. Je vais donc réintégrer ces lignes à ma source pour être tout à fait propre ^^
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
25 mai 2007 à 23:06
Salut:

C'est la philosophie de Windows, c'est tout.
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
25 mai 2007 à 23:05
Salut:

Dans la programmation Windows, tu ne peux pas afficher une image directement sur une fenêtre, tu dois passer par une image qui se trouve en mémoire. Les deux premières lignes font ça:

Création d'un contexte d'affichage en mémoire compatible avec celui de la fenêtre.
Création d'une image compatible avec le contexte d'affichage de la fenêtre.

Dans la toisième ligne tu séléctionne ce bitmap dans le hMemDC et ça retourne le bitmap par défaut que tu enregistre dans une variable pour le restaurer après avoir finir le dessin, sinon tu auras une fuite de mémoire [memory leak].

Le 4eme ligne contient la fameuse fonction BitBlt (notament la plus heureuse) qui effectue des transferts de bloques de bits de la mémoire vers la fenêtre pour dessiner l'image en question.
SRCCOPY veut dire transfert sans modification.

La dernière ligne est déja expliquée elle fait retourner le HBITMAP par défaut du hMemDC.

J'espère que ça t'aides au moins.

Bye.
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
25 mai 2007 à 22:34
Bonjour,

je peux savoir à quoi servent ces lignes, stp :

// création DC et bitmap en mémoire
HDC hMemDC = CreateCompatibleDC(hdc);
HBITMAP hMemBmp = CreateCompatibleBitmap(hdc, sizeDst.cx, sizeDst.cy);
HBITMAP hOldMemBmp = (HBITMAP) SelectObject(hMemDC, hMemBmp); //Celle ci

// recopie du DC en mémoire, libération des ressources
BitBlt(hdc, 0, 0, sizeDst.cx, sizeDst.cy, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hOldMemBmp); // Et celle ci

Merci ;)
Utilisateur anonyme
4 août 2006 à 22:59
Tré bonne source pour une fois que je comprend tout dans une source windows :)

Et non pas de FMC !!!! lol
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 avril 2006 à 15:58
Salut :

Pouvez vous m'aidez à convertir votre source en MFC.

Et Merci ...
pnb666 Messages postés 1 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 26 avril 2006
26 avril 2006 à 16:26
je suis peut etre exigent mais serai til possible ke la fenetre de la loupe reste center sur le curseur de la souris ?
comme le plugin de firefox image zoom http://imagezoom.yellowgorilla.net/
merci ! :p
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
15 déc. 2005 à 17:44
Votre source est excellente.
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
10 janv. 2005 à 22:21
Tres bonne source, bien présentée.
Un bon exemple pour les débutants.

Merci

NeoUmbrella Corp.
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
13 juin 2004 à 08:59
marrante ton idée de zoom x4 ^^
En fait la loupe d'XP affiche bien le curseur mais bon, la zone zoomée et très grande !
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 juin 2004 à 00:51
super chouette :)
n'affiche surtout pas le curseur ds la zone zoomée, sinon on verra rien, c'est très bien comme ça!

pr un zomm x4, faut juste mettre la fenetre de zomm à côté de la zone à SuperZoomer. Comme la souris est assez proche de la fenetre, une partie de la fenetre sera rezoomée, et donc on obtient un x4 ^^
cs_Vamps Messages postés 9 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 12 juin 2004
12 juin 2004 à 16:38
Je trouve cela très bien :), la je le lance avec wine sous Linux et sa marche tres bien :)
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
12 juin 2004 à 11:14
et bien que dire à part que cela marche ? ^^
(je suis en train de regarder ce que j'écris ici avec ta loupe en même temps c'est sympa :])

en fait pour les améliorations :

- possibilté de voir le pointeur de la souris (on voit celui quand on clique sur la roulette mais pas la flèche habituelle)
- quand on se dirige vers un coin, ta loupe nous affiche ce coin mais avec du blanc autour alors que normalement, après ce coin il n'y a rien (j'espere que tu as compris :S)

Mais j'ai bien aimé le fait que la fenêtre ne disparaisse pas !
et pour une loupe c'est une super loupe !
Si tu veux fais en sorte qu'on puisse choisir le grossissement :)