thxoptimizer
Messages postés24Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention18 octobre 2014
-
23 août 2005 à 10:29
thxoptimizer
Messages postés24Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention18 octobre 2014
-
13 sept. 2005 à 09:01
Bonjour,
J'ai déjà fait pas mal de choses pour créer une boîte d'impression personnalisée.
But : imprimer plusieurs images du disque dur (choix du nombre d'images et impression des images choisies)
Il faudrait alors pouvoir choisir combien mettre d'images par page, leur disposition, leur taille, etc.
**J'ai récupéré la boîte de ressources standard 1538 que j'ai modifiée
un peu (Boutons radio "Toutes les images" ou je garde les champs
standards "de n°xx à n°xx") et je lui ai associé une classe CMyPrintDlg
dérivée de CPrintDialog
**J'ai OnPreparePrinting(CPrintInfo* pInfo) qui ouvre cette boîte et initialise des éléments de champs de la boîte standard
(il faudra que je récupère les images de début et de fin entrées dans la boîte, je n'y arrive pas encore)
A ce stade-là (qui m'a déjà pris une éternité vu mon niveau), voilà ce que ça donne :
j'ai ma boîte personnalisée et le bouton imprimer imprime l'image à l'écran en petit en haut à gauche de ma feuille.
L'aperçu avant impression correspond bien à ce que j'obtiens.
Donc il reste:
-->Définir les actions de mes boutons ajoutés dans la boîte de dialogue (mais là, comment faire pour agir sur pInfo qu'on ne trouve que dans des fonctions standard de la View comme OnPreparePrinting(CPrintInfo* pInfo)
De plus, si des événements EnChange fonctionnent pour mes EDIT, je
ne peux pas leur associer de variable comme d'habitude (aucun des
éléments que j'ajoute dans cette boîte n'a le même comportement que
d'habitude).
-->Où indiquer l'image à imprimer, où faire la boucle? (en imprimant
les images demandées à partir de leur emplacement sur le disque dur
directement où en les envoyant à la vue par la fonction Load, peut-être
plus simple puisque ça utilise déjà le code de la fonction OnDraw).
-->Où imprimer les images sur la feuille (disposition)?
thxoptimizer
Messages postés24Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention18 octobre 2014 23 août 2005 à 12:12
S'il vous plaît, au moins est-ce que quelqu'un sait comment je peux imprimer plusieurs images sur une page (on va commencer par une question à la fois car j'ai l'impression que ça décourage tout le monde cette question).
-->où fait-on la boucle, comment on définit la zone de la feuille dans laquelle on imprime l'image, etc.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 août 2005 à 15:31
Seulement MFC qui n'intéresse pas grand-monde ici.
Féfinis tes RECT et fais des StretBlt de tes images selon coordonnées de ces Rect, ne change pas grand chose que soit un hdc imprimante ou écran.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 24 août 2005 à 01:01
thxoptimizer >> Je te conseille de ne pas rester toujours
dépendant des MFC. Pense à passer à la programmation en API. Tu ne le
regrettras jamais. Ca te permettra de mieux maitriser tes programmes et
mieux comprendre le fonctionnement de Windows. Tu découvriras que ce
truc que tu veux faire est tellement simple en API. Comme l'a précisé
BruNews, la feuille de l'imprimante est considérée comme un écran sur
lequel on peut directement écrire, dessiner ou mettre des images selon
la disposition désirée etc...Il suffit d'avoir quelques bases en C et
consulter la documentation des différentes fonctions API à utiliser. Tu
découvriras la puissance des APIs et tu n'aimeras plus toucher aux MFC.
:)
thxoptimizer
Messages postés24Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention18 octobre 2014 24 août 2005 à 09:02
L'histoire c'est que certains faisaient "de la prose sans le savoir",
je dois faire un mélange de MFC et d'API sans la savoir car je sais pas
trop quand j'utilise ce que je trouve ce que c'est.
Sans m'exposer comment résoudre complètement mon problème, peux-tu me
donner plus ou moins ce que ça donnerait en "API" (des noms de
fonctions).
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 7 sept. 2005 à 20:52
Salut,
Désolé pour ce retard dû à des imprévus. J'avais déja commencé le
projet du programme d'impression d'images en API. Il ne manque
maintenant que la mise en page permettant de définir les marges non
imprimables de la feuille. J'ai préféré perfectionner un peu le
programme en espérant qu'il intéressera d'autres membres du site.
En attendant, voici les fonctions API utilisées juste pour l'impression d'une image:
-LoadImage() pour charger l'image d'un fichier ou d'une ressource. Le 6ème paramètre doit être LR_CREATEDIBSECTION.
- Déclarer un pointeur LPBITMAPINFO puis lui allouer de la mémoire comme ceci:
thxoptimizer
Messages postés24Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention18 octobre 2014 13 sept. 2005 à 09:01
Je suis extrêmement impressionné!
Si pour tout avouer, entre temps j'ai du me débrouiller tout seul et
faire quelque chose de totalement différent, plus artisanal et tout:
-1°/ Il n'existe rien du même genre ailleurs donc sois sûr que ton code
servira à d'autres personnes; moi, je n'ai plus le temps pour ça au
sein de mon projet et ce que j'ai fait me convient (même si le code est
sûrement atroce pour quelqu'un qui sait bien programmer en API).
-2°/ Même moi je vais regarder ton code pour des petites choses
graphiques que je ne savais pas faire jusqu'ici (le rectangle en
pointillé, avec la souris pour le redimensionner, je vais voir si je
peux utiliser ça à d'autres fins).