Accueil > Forum > > > > Impression personnalisée
Impression personnalisée
mardi 23 août 2005 à 10:29:05 |
Impression personnalisée

thxoptimizer
|
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)? Pouvez-vous m'indiquer la marche à suivre ? Merci.
|
|
mardi 23 août 2005 à 12:12:32 |
Re : Impression personnalisée

thxoptimizer
|
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.
|
|
mardi 23 août 2005 à 15:31:11 |
Re : Impression personnalisée

BruNews
|
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.
ciao... BruNews, MVP VC++
|
|
mardi 23 août 2005 à 16:56:19 |
Re : Impression personnalisée

thxoptimizer
|
"Seulement MFC qui n'intéresse pas grand-monde ici." Mouais... ben c'est dommage qu'on ne trouve aucun code qui montre comment se dépatouiller avec ça :-( Peu importe, grâce à un autre forum, j'ai avancé; je ne tenterai plus ici.
|
|
mercredi 24 août 2005 à 01:01:32 |
Re : Impression personnalisée

racpp
|
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. :)
|
|
mercredi 24 août 2005 à 09:02:07 |
Re : Impression personnalisée

thxoptimizer
|
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).
|
|
mercredi 24 août 2005 à 15:33:20 |
Re : Impression personnalisée

racpp
|
Ok, je vais faire un code source qui imprime des images. Je le déposerai ici dès qu'il est prêt.
|
|
mercredi 7 septembre 2005 à 20:52:23 |
Re : Impression personnalisée

racpp
|
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: LPBITMAPINFO pBmi=(LPBITMAPINFO)GlobalAlloc(GMEM_FIXED,sizeof(BITMAPINFO)); - Récupérer les informations sur le BitMap chargé comme ceci: BITMAP bm; GetObject(hBitmap, sizeof(BITMAP), (LPVOID) &bm); - Initialiser les membres de notre structure BITMAPINFO comme ceci: pBmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); pBmi->bmiHeader.biWidth = bm.bmWidth; pBmi->bmiHeader.biHeight = bm.bmHeight; pBmi->bmiHeader.biPlanes = 1; pBmi->bmiHeader.biBitCount = bm.bmBitsPixel * bm.bmPlanes; pBmi->bmiHeader.biCompression = BI_RGB; pBmi->bmiHeader.biSizeImage = bm.bmWidthBytes * bm.bmHeight; pBmi->bmiHeader.biXPelsPerMeter = 0; pBmi->bmiHeader.biYPelsPerMeter = 0; pBmi->bmiHeader.biClrUsed = 0; pBmi->bmiHeader.biClrImportant = 0; - Obtenir le HDC de l'imprimate puis au milieu du bloc StartDoc StartPage EndPage EndDoc tu mets ceci: StretchDIBits(pdc,posx,posy,larg,haut, 0, 0, bm.bmWidth, bm.bmHeight, bm.bmBits, pBmi, DIB_RGB_COLORS, SRCCOPY); pdc est le HDC de l'imprimante, posx et posy la position de l'image en points (600 par pouce) . larg et haut sont les dimensions de l'image en points. - Libérer la mémoire déja allouée en faisant GlobalFree(pBmi); Voilà, ceci est un exemple simple, j'espère terminer le programme complet dans quelques jours après l'avoir testé sur différentes imprimantes.
|
|
dimanche 11 septembre 2005 à 18:31:05 |
Re : Impression personnalisée
|
mardi 13 septembre 2005 à 09:01:30 |
Re : Impression personnalisée

thxoptimizer
|
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).
|
|
Cette discussion est classée dans : images, impression, imprimer, boîte, personnalisée
Répondre à ce message
Sujets en rapport avec ce message
Impression fil de l'eau(ligne à ligne) [ par bernard01 ]
Je souhaite pourvoir imprimer du texte en spécifiant la "FONT", sans générer des saut de pages sur l'imprimante.Pour ce faire j'ai utilisé une premièr
impression en gtk+ [ par Kyla ]
Bonjour !!!!!!Je programme en gkt+ version1.2 et j'ai reussi a adapter le source en C de ce site pour imprimer avec les bibliotheques de windows.h.Mon
Impression multiligne [ par BsEtZeOpLhD ]
Salut.J'aimerai imprimer le text contenu dans une editbox multiligne en utilisant la commondialog imprimer de windowsSi quelqu'un sait comment faire ç
Impression [ par RunKi ]
Salut,J'ai une CFormView dans laquelle j'affiche une CListCtrl etje voudrais imprimer le contenu de cette liste de controle!!!!Comment puis je faire !
impression d'un fichier pdf par programmation [ par douben ]
j'ai parcouru pas mal de page sur le site pour trouvr comment on fait sous windows pour imprimer un fichier pdf, j'ai vu qu'il y avait ShellExecute qu
impression d'un executable [ par toto000 ]
Bonjour,Je travaille sous linux mandrake 8.2 et lorsque je veux imprimer un fichier, je fais xpp + nom du fichier et tout se passe tres bien.Mais en c
probleme d'impression [ par titouf71 ]
Bonjour,Comment faire pour imprimer un fichier bmp en pleine page sans passer par paint? j'arrive a l'imprimer mais en tout petit. quelqu'un pourait-i
impression de Cstring. [ par talaron ]
J'arrive à imprimer des chaines de charactères comme ceci :char *p;char resultat[]=" Resultat:";p=resultat;while( (*p != '\0') && fputc( *(p++), stdpr
imprimer un fichier html avec insertion d images... [ par nebucad ]
Bon jour a tous et a toutesJe devai imprimer des fichiers word et un fichier html sous win qui a deuw images inserees.Je lance un ShellExecute de cett
Impression de BMP [ par LuckyNut ]
Bonjour,Comment imprimer un CBitmap qui ne s'affiche pas dans une CView (donc pas de fonction OnDraw) ?Ou aussi comment imprimer le contenu d'un formu
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|