Utilisez SelectObject() sur votre mémoire DC pour sélectionner le bitmap dans celui-ci. Cela me rend perplexe. J'ai lu le msdn mais je ne sais toujours pas comment remplir le second paramètre de SelectObject().Programmation d'API VC++ win32: comment puis-je sortir l'image du presse-papiers et l'afficher dans une fenêtre?
Répondre
Appelez OpenClipbard()
pour ouvrir le Presse-papiers et appelez GetClipboardData()
avec un type de CF_BITMAP
pour obtenir le handle pour les données d'image stockées dans le Presse-papiers. S'il n'y a pas d'image dans le presse-papiers, le handle NULL sera retourné. Ensuite, dans le gestionnaire WM_PAINT
de votre fenêtre, utilisez BeginPaint()
pour obtenir un contexte de périphérique pour dessiner dans votre fenêtre et utilisez CreateCompatibleDC()
pour créer un contexte de périphérique de mémoire pour le bitmap. Utilisez SelectObject()
sur votre mémoire DC pour sélectionner l'image bitmap, et enfin utiliser BitBlt()
pour mettre le bitmap de la mémoire DC sur le DC de la fenêtre. Ne pas oublier de nettoyer - appelez DeleteDC()
pour supprimer la mémoire DC, et appelez EndPaint()
pour terminer le dessin.
Enfin, appelez CloseClipboard()
lorsque vous avez terminé. Notez que le Presse-papiers possède le handle de bitmap, et dès que vous appelez CloseClipboard()
, le bitmap sera détruit. Donc, si vous voulez vous accrocher à l'image après avoir fermé le presse-papiers, vous devrez en faire une copie.
Si vous avez d'autres questions à ce sujet, veuillez créer une * nouvelle * question au lieu de mettre à jour celle-ci. Par exemple: «J'essaie de sélectionner un bitmap dans un DC de mémoire en utilisant SelectObject() .Je ne comprends pas le but du deuxième paramètre à SelectObject(), même après avoir lu MSDN Que dois-je passer à SelectObject()? " –